[PATCH] libosmocore[master]: libosmogb: Convert to use new endian conversion helpers

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Mon May 15 11:14:19 UTC 2017


Review at  https://gerrit.osmocom.org/2626

libosmogb: Convert to use new endian conversion helpers

Change-Id: I5ed17702cd9487e1cab6bae39802aa11fb6a37b0
---
M src/gb/gprs_bssgp.c
M src/gb/gprs_bssgp_bss.c
M src/gb/gprs_bssgp_util.c
M src/gb/gprs_ns.c
M src/gb/gprs_ns_frgre.c
M src/gb/gprs_ns_vty.c
6 files changed, 91 insertions(+), 96 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/26/2626/1

diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index fdbf788..aa6e37b 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -1,6 +1,6 @@
 /* GPRS BSSGP protocol implementation as per 3GPP TS 08.18 */
 
-/* (C) 2009-2012 by Harald Welte <laforge at gnumonks.org>
+/* (C) 2009-2017 by Harald Welte <laforge at gnumonks.org>
  *
  * All Rights Reserved
  *
@@ -25,9 +25,9 @@
 #include <errno.h>
 #include <stdint.h>
 
-#include <netinet/in.h>
-
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/byteswap.h>
+#include <osmocom/core/bit16gen.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/rate_ctr.h>
@@ -138,7 +138,7 @@
 	msgb_bvci(msg) = 0; /* Signalling */
 	bgph->pdu_type = BSSGP_PDUT_SUSPEND_ACK;
 
-	_tlli = htonl(tlli);
+	_tlli = osmo_htonl(tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &_tlli);
 	gsm48_construct_ra(ra, ra_id);
 	msgb_tvlv_put(msg, BSSGP_IE_ROUTEING_AREA, 6, ra);
@@ -162,7 +162,7 @@
 	msgb_bvci(msg) = 0; /* Signalling */
 	bgph->pdu_type = BSSGP_PDUT_SUSPEND_NACK;
 
-	_tlli = htonl(tlli);
+	_tlli = osmo_htonl(tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &_tlli);
 	gsm48_construct_ra(ra, ra_id);
 	msgb_tvlv_put(msg, BSSGP_IE_ROUTEING_AREA, 6, ra);
@@ -186,7 +186,7 @@
 	msgb_bvci(msg) = 0; /* Signalling */
 	bgph->pdu_type = BSSGP_PDUT_RESUME_ACK;
 
-	_tlli = htonl(tlli);
+	_tlli = osmo_htonl(tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &_tlli);
 	gsm48_construct_ra(ra, ra_id);
 	msgb_tvlv_put(msg, BSSGP_IE_ROUTEING_AREA, 6, ra);
@@ -208,7 +208,7 @@
 	msgb_bvci(msg) = 0; /* Signalling */
 	bgph->pdu_type = BSSGP_PDUT_SUSPEND_NACK;
 
-	_tlli = htonl(tlli);
+	_tlli = osmo_htonl(tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &_tlli);
 	gsm48_construct_ra(ra, ra_id);
 	msgb_tvlv_put(msg, BSSGP_IE_ROUTEING_AREA, 6, ra);
@@ -223,17 +223,16 @@
 	/* 6 octets RAC */
 	gsm48_parse_ra(raid, buf);
 	/* 2 octets CID */
-	return ntohs(*(uint16_t *) (buf+6));
+	return osmo_load16be(buf+6);
 }
 
 int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid,
 			 uint16_t cid)
 {
-	uint16_t *out_cid = (uint16_t *) (buf + 6);
 	/* 6 octets RAC */
 	gsm48_construct_ra(buf, raid);
 	/* 2 octets CID */
-	*out_cid = htons(cid);
+	osmo_store16be(cid, buf+6);
 
 	return 8;
 }
@@ -247,7 +246,7 @@
 	uint16_t nsei = msgb_nsei(msg);
 	uint16_t bvci;
 
-	bvci = ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BVCI));
+	bvci = tlvp_val16be(tp, BSSGP_IE_BVCI);
 	DEBUGP(DBSSGP, "BSSGP BVCI=%u Rx RESET cause=%s\n", bvci,
 		bssgp_cause_str(*TLVP_VAL(tp, BSSGP_IE_CAUSE)));
 
@@ -297,7 +296,7 @@
 	uint16_t bvci;
 	struct bssgp_bvc_ctx *ptp_ctx;
 
-	bvci = ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BVCI));
+	bvci = tlvp_val16be(tp, BSSGP_IE_BVCI);
 	if (bvci == BVCI_SIGNALLING) {
 		/* 8.3.2: Signalling BVC shall never be blocked */
 		LOGP(DBSSGP, LOGL_ERROR, "NSEI=%u/BVCI=%u "
@@ -335,7 +334,7 @@
 	uint16_t bvci;
 	struct bssgp_bvc_ctx *ptp_ctx;
 
-	bvci = ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BVCI));
+	bvci = tlvp_val16be(tp, BSSGP_IE_BVCI);
 	if (bvci == BVCI_SIGNALLING) {
 		/* 8.3.2: Signalling BVC shall never be blocked */
 		LOGP(DBSSGP, LOGL_ERROR, "NSEI=%u/BVCI=%u "
@@ -374,7 +373,7 @@
 	struct bssgp_ud_hdr *budh = (struct bssgp_ud_hdr *) msgb_bssgph(msg);
 
 	/* extract TLLI and parse TLV IEs */
-	msgb_tlli(msg) = ntohl(budh->tlli);
+	msgb_tlli(msg) = osmo_ntohl(budh->tlli);
 
 	DEBUGP(DBSSGP, "BSSGP TLLI=0x%08x Rx UPLINK-UNITDATA\n", msgb_tlli(msg));
 
@@ -416,7 +415,7 @@
 		return bssgp_tx_status(BSSGP_CAUSE_MISSING_MAND_IE, NULL, msg);
 	}
 
-	tlli = ntohl(tlvp_val32_unal(tp, BSSGP_IE_TLLI));
+	tlli = tlvp_val32be(tp, BSSGP_IE_TLLI);
 
 	DEBUGP(DBSSGP, "BSSGP BVCI=%u TLLI=0x%08x Rx SUSPEND\n",
 		ns_bvci, tlli);
@@ -458,7 +457,7 @@
 		return bssgp_tx_status(BSSGP_CAUSE_MISSING_MAND_IE, NULL, msg);
 	}
 
-	tlli = ntohl(tlvp_val32_unal(tp, BSSGP_IE_TLLI));
+	tlli = tlvp_val32be(tp, BSSGP_IE_TLLI);
 	suspend_ref = *TLVP_VAL(tp, BSSGP_IE_SUSPEND_REF_NR);
 
 	DEBUGP(DBSSGP, "BSSGP BVCI=%u TLLI=0x%08x Rx RESUME\n", ns_bvci, tlli);
@@ -500,7 +499,7 @@
 	}
 
 	if (TLVP_PRESENT(tp, BSSGP_IE_TLLI))
-		tlli = ntohl(*(uint32_t *)TLVP_VAL(tp, BSSGP_IE_TLLI));
+		tlli = tlvp_val32be(tp, BSSGP_IE_TLLI);
 
 	DEBUGP(DBSSGP, "BSSGP BVCI=%u TLLI=%08x Rx LLC DISCARDED\n",
 		ctx->bvci, tlli);
@@ -806,17 +805,13 @@
 	}
 
 	/* 11.3.5 Bucket Size in 100 octets unit */
-	bctx->fc->bucket_size_max = 100 *
-		ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BVC_BUCKET_SIZE));
+	bctx->fc->bucket_size_max = 100 * tlvp_val16be(tp, BSSGP_IE_BVC_BUCKET_SIZE);
 	/* 11.3.4 Bucket Leak Rate in 100 bits/sec unit */
-	bctx->fc->bucket_leak_rate = 100 *
-		ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BUCKET_LEAK_RATE)) / 8;
+	bctx->fc->bucket_leak_rate = 100 * tlvp_val16be(tp, BSSGP_IE_BUCKET_LEAK_RATE) / 8;
 	/* 11.3.2 in octets */
-	bctx->bmax_default_ms =
-		ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_BMAX_DEFAULT_MS));
+	bctx->bmax_default_ms = tlvp_val16be(tp, BSSGP_IE_BMAX_DEFAULT_MS);
 	/* 11.3.32 Bucket Leak rate in 100bits/sec unit */
-	bctx->r_default_ms = 100 *
-		ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_R_DEFAULT_MS)) / 8;
+	bctx->r_default_ms = 100 * tlvp_val16be(tp, BSSGP_IE_R_DEFAULT_MS) / 8;
 
 	if (old_leak_rate != 0 && bctx->fc->bucket_leak_rate == 0)
 		LOGP(DBSSGP, LOGL_NOTICE, "BSS instructs us to bucket leak "
@@ -1042,7 +1037,7 @@
 	}
 
 	if (bvci == BVCI_SIGNALLING && TLVP_PRESENT(&tp, BSSGP_IE_BVCI))
-		bvci = ntohs(*(uint16_t *)TLVP_VAL(&tp, BSSGP_IE_BVCI));
+		bvci = tlvp_val16be(&tp, BSSGP_IE_BVCI);
 
 	/* look-up or create the BTS context for this BVC */
 	bctx = btsctx_by_bvci_nsei(bvci, msgb_nsei(msg));
@@ -1095,7 +1090,7 @@
 	uint16_t msg_len = msg->len;
 	uint16_t bvci = msgb_bvci(msg);
 	uint16_t nsei = msgb_nsei(msg);
-	uint16_t _pdu_lifetime = htons(pdu_lifetime); /* centi-seconds */
+	uint16_t _pdu_lifetime = osmo_htons(pdu_lifetime); /* centi-seconds */
 	uint16_t drx_params;
 
 	OSMO_ASSERT(dup != NULL);
@@ -1134,7 +1129,7 @@
 
 	/* Old TLLI to help BSS map from old->new */
 	if (dup->tlli) {
-		uint32_t tlli = htonl(*dup->tlli);
+		uint32_t tlli = osmo_htonl(*dup->tlli);
 		msgb_tvlv_push(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &tlli);
 	}
 
@@ -1148,7 +1143,7 @@
 	}
 
 	/* DRX parameters */
-	drx_params = htons(dup->drx_parms);
+	drx_params = osmo_htons(dup->drx_parms);
 	msgb_tvlv_push(msg, BSSGP_IE_DRX_PARAMS, 2,
 		(uint8_t *) &drx_params);
 
@@ -1165,7 +1160,7 @@
 	/* prepend the QoS profile, TLLI and pdu type */
 	budh = (struct bssgp_ud_hdr *) msgb_push(msg, sizeof(*budh));
 	memcpy(budh->qos_profile, dup->qos_profile, sizeof(budh->qos_profile));
-	budh->tlli = htonl(msgb_tlli(msg));
+	budh->tlli = osmo_htonl(msgb_tlli(msg));
 	budh->pdu_type = BSSGP_PDUT_DL_UNITDATA;
 
 	rate_ctr_inc(&bctx->ctrg->ctr[BSSGP_CTR_PKTS_OUT]);
@@ -1188,7 +1183,7 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t drx_params = htons(pinfo->drx_params);
+	uint16_t drx_params = osmo_htons(pinfo->drx_params);
 	uint8_t mi[10];
 	int imsi_len = gsm48_generate_mid_from_imsi(mi, pinfo->imsi);
 	uint8_t ra[6];
@@ -1226,7 +1221,7 @@
 		break;
 	case BSSGP_PAGING_BVCI:
 		{
-			uint16_t bvci = htons(pinfo->bvci);
+			uint16_t bvci = osmo_htons(pinfo->bvci);
 			msgb_tvlv_put(msg, BSSGP_IE_BVCI, 2, (uint8_t *)&bvci);
 		}
 		break;
@@ -1237,7 +1232,7 @@
 
 	/* Optional (P-)TMSI */
 	if (pinfo->ptmsi) {
-		uint32_t ptmsi = htonl(*pinfo->ptmsi);
+		uint32_t ptmsi = osmo_htonl(*pinfo->ptmsi);
 		msgb_tvlv_put(msg, BSSGP_IE_TMSI, 4, (uint8_t *) &ptmsi);
 	}
 
diff --git a/src/gb/gprs_bssgp_bss.c b/src/gb/gprs_bssgp_bss.c
index 73c1350..93af98f 100644
--- a/src/gb/gprs_bssgp_bss.c
+++ b/src/gb/gprs_bssgp_bss.c
@@ -1,6 +1,6 @@
 /* GPRS BSSGP protocol implementation as per 3GPP TS 08.18 */
 
-/* (C) 2009-2012 by Harald Welte <laforge at gnumonks.org>
+/* (C) 2009-2017 by Harald Welte <laforge at gnumonks.org>
  *
  * All Rights Reserved
  *
@@ -22,9 +22,8 @@
 #include <errno.h>
 #include <stdint.h>
 
-#include <netinet/in.h>
-
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/byteswap.h>
 #include <osmocom/core/rate_ctr.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
@@ -38,7 +37,7 @@
 
 uint8_t *bssgp_msgb_tlli_put(struct msgb *msg, uint32_t tlli)
 {
-	uint32_t _tlli = htonl(tlli);
+	uint32_t _tlli = osmo_htonl(tlli);
 	return msgb_tvlv_put(msg, BSSGP_IE_TLLI, 4, (uint8_t *) &_tlli);
 }
 
@@ -159,7 +158,7 @@
 				uint32_t tmsi)
 {
 	struct msgb *msg = common_tx_radio_status(bctx);
-	uint32_t _tmsi = htonl(tmsi);
+	uint32_t _tmsi = osmo_htonl(tmsi);
 
 	if (!msg)
 		return -ENOMEM;
@@ -196,8 +195,8 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t _bvci_new = htons(bvci_new);
-	uint32_t _oct_aff = htonl(num_octets & 0xFFFFFF);
+	uint16_t _bvci_new = osmo_htons(bvci_new);
+	uint32_t _oct_aff = osmo_htonl(num_octets & 0xFFFFFF);
 
 	msgb_nsei(msg) = bctx->nsei;
 	msgb_bvci(msg) = 0; /* Signalling */
@@ -219,8 +218,8 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t _bvci = htons(bctx->bvci);
-	uint32_t _oct_aff = htonl(num_octets & 0xFFFFFF);
+	uint16_t _bvci = osmo_htons(bctx->bvci);
+	uint32_t _oct_aff = osmo_htonl(num_octets & 0xFFFFFF);
 
 	LOGP(DBSSGP, LOGL_NOTICE, "BSSGP (BVCI=%u) Tx LLC-DISCARDED "
 	     "TLLI=0x%04x, FRAMES=%u, OCTETS=%u\n", bctx->bvci, tlli,
@@ -244,7 +243,7 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t _bvci = htons(bctx->bvci);
+	uint16_t _bvci = osmo_htons(bctx->bvci);
 
 	LOGP(DBSSGP, LOGL_NOTICE, "BSSGP (BVCI=%u) Tx BVC-BLOCK "
 		"CAUSE=%s\n", bctx->bvci, bssgp_cause_str(cause));
@@ -265,7 +264,7 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t _bvci = htons(bctx->bvci);
+	uint16_t _bvci = osmo_htons(bctx->bvci);
 
 	LOGP(DBSSGP, LOGL_NOTICE, "BSSGP (BVCI=%u) Tx BVC-BLOCK\n", bctx->bvci);
 
@@ -284,7 +283,7 @@
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_put(msg, sizeof(*bgph));
-	uint16_t _bvci = htons(bvci);
+	uint16_t _bvci = osmo_htons(bvci);
 
 	LOGP(DBSSGP, LOGL_NOTICE, "BSSGP (BVCI=%u) Tx BVC-RESET "
 		"CAUSE=%s\n", bvci, bssgp_cause_str(cause));
@@ -327,19 +326,19 @@
 
 	if ((bucket_size / 100) > 0xffff)
 		return -EINVAL;
-	e_bucket_size = htons(bucket_size / 100);
+	e_bucket_size = osmo_htons(bucket_size / 100);
 
 	if ((bucket_leak_rate * 8 / 100) > 0xffff)
 		return -EINVAL;
-	e_leak_rate = htons((bucket_leak_rate * 8) / 100);
+	e_leak_rate = osmo_htons((bucket_leak_rate * 8) / 100);
 
 	if ((bmax_default_ms / 100) > 0xffff)
 		return -EINVAL;
-	e_bmax_default_ms = htons(bmax_default_ms / 100);
+	e_bmax_default_ms = osmo_htons(bmax_default_ms / 100);
 
 	if ((r_default_ms * 8 / 100) > 0xffff)
 		return -EINVAL;
-	e_r_default_ms = htons((r_default_ms * 8) / 100);
+	e_r_default_ms = osmo_htons((r_default_ms * 8) / 100);
 
 	if (queue_delay_ms) {
 		if ((*queue_delay_ms / 10) > 60000)
@@ -347,7 +346,7 @@
 		else if (*queue_delay_ms == 0xFFFFFFFF)
 			e_queue_delay = 0xFFFF;
 		else
-			e_queue_delay = htons(*queue_delay_ms / 10);
+			e_queue_delay = osmo_htons(*queue_delay_ms / 10);
 	}
 
 	msg = bssgp_msgb_alloc();
@@ -408,7 +407,7 @@
 	msgb_bvci(msg) = bctx->bvci;
 	bgph->pdu_type = BSSGP_PDUT_FLOW_CONTROL_MS;
 
-	e_tlli = htonl(tlli);
+	e_tlli = osmo_htonl(tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TLLI, sizeof(e_tlli), (uint8_t *)&e_tlli);
 	msgb_tvlv_put(msg, BSSGP_IE_TAG, sizeof(tag), (uint8_t *)&tag);
 	msgb_tvlv_put(msg, BSSGP_IE_MS_BUCKET_SIZE,
@@ -454,7 +453,7 @@
 
 	/* User Data Header */
 	budh = (struct bssgp_ud_hdr *) msgb_push(msg, sizeof(*budh));
-	budh->tlli = htonl(tlli);
+	budh->tlli = osmo_htonl(tlli);
 	memcpy(budh->qos_profile, qos_profile, 3);
 	budh->pdu_type = BSSGP_PDUT_UL_UNITDATA;
 
@@ -508,7 +507,7 @@
 	/* DRX Parameters */
 	if (!TLVP_PRESENT(&tp, BSSGP_IE_DRX_PARAMS))
 		goto err_mand_ie;
-	pinfo->drx_params = ntohs(*(uint16_t *)TLVP_VAL(&tp, BSSGP_IE_DRX_PARAMS));
+	pinfo->drx_params = tlvp_val16be(&tp, BSSGP_IE_DRX_PARAMS);
 
 	/* Scope */
 	if (TLVP_PRESENT(&tp, BSSGP_IE_BSS_AREA_ID)) {
@@ -525,7 +524,7 @@
 		gsm48_parse_ra(&pinfo->raid, ra);
 	} else if (TLVP_PRESENT(&tp, BSSGP_IE_BVCI)) {
 		pinfo->scope = BSSGP_PAGING_BVCI;
-		pinfo->bvci = ntohs(*(uint16_t *)TLVP_VAL(&tp, BSSGP_IE_BVCI));
+		pinfo->bvci = tlvp_val16be(&tp, BSSGP_IE_BVCI);
 	} else
 		return -EINVAL;
 
@@ -545,8 +544,7 @@
 	    TLVP_LEN(&tp, BSSGP_IE_TMSI) >= 4) {
 		if (!pinfo->ptmsi)
 			pinfo->ptmsi = talloc_zero_size(pinfo, sizeof(uint32_t));
-		*(pinfo->ptmsi) = ntohl(*(uint32_t *)
-					TLVP_VAL(&tp, BSSGP_IE_TMSI));
+		*(pinfo->ptmsi) = osmo_load32be(TLVP_VAL(&tp, BSSGP_IE_TMSI));
 	}
 
 	return 0;
diff --git a/src/gb/gprs_bssgp_util.c b/src/gb/gprs_bssgp_util.c
index 6fff362..88916c1 100644
--- a/src/gb/gprs_bssgp_util.c
+++ b/src/gb/gprs_bssgp_util.c
@@ -1,6 +1,6 @@
 /* GPRS BSSGP protocol implementation as per 3GPP TS 08.18 */
 
-/* (C) 2009-2012 by Harald Welte <laforge at gnumonks.org>
+/* (C) 2009-2017 by Harald Welte <laforge at gnumonks.org>
  *
  * All Rights Reserved
  *
@@ -22,9 +22,8 @@
 #include <errno.h>
 #include <stdint.h>
 
-#include <netinet/in.h>
-
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/byteswap.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/gprs/gprs_bssgp.h>
@@ -168,7 +167,7 @@
 	msgb_bvci(msg) = ns_bvci;
 
 	bgph->pdu_type = pdu_type;
-	_bvci = htons(bvci);
+	_bvci = osmo_htons(bvci);
 	msgb_tvlv_put(msg, BSSGP_IE_BVCI, 2, (uint8_t *) &_bvci);
 
 	return gprs_ns_sendmsg(bssgp_nsi, msg);
@@ -203,7 +202,7 @@
 	bgph->pdu_type = BSSGP_PDUT_STATUS;
 	msgb_tvlv_put(msg, BSSGP_IE_CAUSE, 1, &cause);
 	if (bvci) {
-		uint16_t _bvci = htons(*bvci);
+		uint16_t _bvci = osmo_htons(*bvci);
 		msgb_tvlv_put(msg, BSSGP_IE_BVCI, 2, (uint8_t *) &_bvci);
 	}
 	msgb_tvlv_put(msg, BSSGP_IE_PDU_IN_ERROR,
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 9a2a114..d0c5a17 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -71,6 +71,7 @@
 #include <arpa/inet.h>
 
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/byteswap.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/select.h>
@@ -404,8 +405,8 @@
 {
 	struct msgb *msg = gprs_ns_msgb_alloc();
 	struct gprs_ns_hdr *nsh;
-	uint16_t nsvci = htons(nsvc->nsvci);
-	uint16_t nsei = htons(nsvc->nsei);
+	uint16_t nsvci = osmo_htons(nsvc->nsvci);
+	uint16_t nsei = osmo_htons(nsvc->nsei);
 
 	log_set_context(LOG_CTX_GB_NSVC, nsvc);
 
@@ -437,11 +438,11 @@
 {
 	struct msgb *msg = gprs_ns_msgb_alloc();
 	struct gprs_ns_hdr *nsh;
-	uint16_t nsvci = htons(nsvc->nsvci);
+	uint16_t nsvci = osmo_htons(nsvc->nsvci);
 
 	log_set_context(LOG_CTX_GB_NSVC, nsvc);
 
-	bvci = htons(bvci);
+	bvci = osmo_htons(bvci);
 
 	if (!msg)
 		return -ENOMEM;
@@ -490,7 +491,7 @@
 {
 	struct msgb *msg = gprs_ns_msgb_alloc();
 	struct gprs_ns_hdr *nsh;
-	uint16_t nsvci = htons(nsvc->nsvci);
+	uint16_t nsvci = osmo_htons(nsvc->nsvci);
 
 	log_set_context(LOG_CTX_GB_NSVC, nsvc);
 
@@ -665,8 +666,8 @@
 	if (!msg)
 		return -ENOMEM;
 
-	nsvci = htons(nsvc->nsvci);
-	nsei = htons(nsvc->nsei);
+	nsvci = osmo_htons(nsvc->nsvci);
+	nsei = osmo_htons(nsvc->nsei);
 
 	msg->l2h = msgb_put(msg, sizeof(*nsh));
 	nsh = (struct gprs_ns_hdr *) msg->l2h;
@@ -849,8 +850,8 @@
 	}
 
 	cause = *(uint8_t  *) TLVP_VAL(&tp, NS_IE_CAUSE);
-	nsvci = ntohs(*(uint16_t *) TLVP_VAL(&tp, NS_IE_VCI));
-	nsei  = ntohs(*(uint16_t *) TLVP_VAL(&tp, NS_IE_NSEI));
+	nsvci = tlvp_val16be(&tp, NS_IE_VCI);
+	nsei  = tlvp_val16be(&tp, NS_IE_NSEI);
 
 	LOGP(DNS, LOGL_INFO, "NSVCI=%u%s Rx NS RESET (NSEI=%u, NSVCI=%u, cause=%s)\n",
 	     (*nsvc)->nsvci, (*nsvc)->nsvci_is_valid ? "" : "(invalid)",
@@ -957,8 +958,8 @@
 		return -EINVAL;
 	}
 
-	nsvci = ntohs(tlvp_val16_unal(&tp, NS_IE_VCI));
-	nsei  = ntohs(tlvp_val16_unal(&tp, NS_IE_NSEI));
+	nsvci = tlvp_val16be(&tp, NS_IE_VCI);
+	nsei  = tlvp_val16be(&tp, NS_IE_NSEI);
 
 	LOGP(DNS, LOGL_INFO, "NSVCI=%u%s Rx NS RESET ACK (NSEI=%u, NSVCI=%u)\n",
 	     (*nsvc)->nsvci, (*nsvc)->nsvci_is_valid ? "" : "(invalid)",
@@ -1145,7 +1146,7 @@
 	static char buf[80];
 	snprintf(buf, sizeof(buf), "%s:%u",
 		 inet_ntoa(nsvc->ip.bts_addr.sin_addr),
-		 ntohs(nsvc->ip.bts_addr.sin_port));
+		 osmo_ntohs(nsvc->ip.bts_addr.sin_port));
 	buf[sizeof(buf) - 1] = '\0';
 
 	return buf;
@@ -1271,8 +1272,8 @@
 		CHECK_TX_RC(rc, fallback_nsvc);
 		return -EINVAL;
 	}
-	nsvci = ntohs(*(uint16_t *) TLVP_VAL(&tp, NS_IE_VCI));
-	nsei  = ntohs(*(uint16_t *) TLVP_VAL(&tp, NS_IE_NSEI));
+	nsvci = tlvp_val16be(&tp, NS_IE_VCI);
+	nsei  = tlvp_val16be(&tp, NS_IE_NSEI);
 	/* Check if we already know this NSVCI, the remote end might
 	 * simply have changed addresses, or it is a SGSN */
 	existing_nsvc = gprs_nsvc_by_nsvci(nsi, nsvci);
@@ -1554,7 +1555,7 @@
 	struct in_addr in;
 	int ret;
 
-	in.s_addr = htonl(nsi->nsip.local_ip);
+	in.s_addr = osmo_htonl(nsi->nsip.local_ip);
 
 	nsi->nsip.fd.cb = nsip_fd_cb;
 	nsi->nsip.fd.data = nsi;
diff --git a/src/gb/gprs_ns_frgre.c b/src/gb/gprs_ns_frgre.c
index 6822541..285a9a0 100644
--- a/src/gb/gprs_ns_frgre.c
+++ b/src/gb/gprs_ns_frgre.c
@@ -32,6 +32,7 @@
 #include <arpa/inet.h>
 
 #include <osmocom/core/select.h>
+#include <osmocom/core/byteswap.h>
 #include <osmocom/core/msgb.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/socket.h>
@@ -121,7 +122,7 @@
 	}
 
 	inner_greh = (struct gre_hdr *) ((uint8_t *)inner_iph + iph->ihl*4);
-	if (inner_greh->ptype != htons(GRE_PTYPE_KAR)) {
+	if (inner_greh->ptype != osmo_htons(GRE_PTYPE_KAR)) {
 		LOGP(DNS, LOGL_ERROR, "GRE keepalive inner GRE type != 0\n");
 		return -EIO;
 	}
@@ -187,10 +188,10 @@
 	greh = (struct gre_hdr *) (msg->data + iph->ihl*4);
 	if (greh->flags) {
 		LOGP(DNS, LOGL_NOTICE, "Unknown GRE flags 0x%04x\n",
-			ntohs(greh->flags));
+			osmo_ntohs(greh->flags));
 	}
 
-	switch (ntohs(greh->ptype)) {
+	switch (osmo_ntohs(greh->ptype)) {
 	case GRE_PTYPE_IPv4:
 		/* IPv4 messages might be GRE keepalives */
 		*error = handle_rx_gre_ipv4(bfd, msg, iph, greh);
@@ -201,7 +202,7 @@
 		break;
 	default:
 		LOGP(DNS, LOGL_NOTICE, "Unknown GRE protocol 0x%04x != FR\n",
-			ntohs(greh->ptype));
+			osmo_ntohs(greh->ptype));
 		*error = -EIO;
 		goto out_err;
 		break;
@@ -231,7 +232,7 @@
 	msg->l2h = frh+2;
 
 	/* Store DLCI in NETWORK BYTEORDER in sockaddr port member */
-	saddr->sin_port = htons(dlci);
+	saddr->sin_port = osmo_htons(dlci);
 
 	return msg;
 
@@ -255,7 +256,7 @@
 	if (!msg)
 		return rc;
 
-	dlci = ntohs(saddr.sin_port);
+	dlci = osmo_ntohs(saddr.sin_port);
 	if (dlci == 0 || dlci == 1023) {
 		LOGP(DNS, LOGL_INFO, "Received FR on LMI DLCI %u - ignoring\n",
 			dlci);
@@ -281,7 +282,7 @@
 	int rc;
 	struct gprs_ns_inst *nsi = nsvc->nsi;
 	struct sockaddr_in daddr;
-	uint16_t dlci = ntohs(nsvc->frgre.bts_addr.sin_port);
+	uint16_t dlci = osmo_ntohs(nsvc->frgre.bts_addr.sin_port);
 	uint8_t *frh;
 	struct gre_hdr *greh;
 
@@ -298,7 +299,7 @@
 	/* Prepend the GRE header */
 	greh = (struct gre_hdr *) msgb_push(msg, sizeof(*greh));
 	greh->flags = 0;
-	greh->ptype = htons(GRE_PTYPE_FR);
+	greh->ptype = osmo_htons(GRE_PTYPE_FR);
 
 	rc = sendto(nsi->frgre.fd.fd, msg->data, msg->len, 0,
 		  (struct sockaddr *)&daddr, sizeof(daddr));
@@ -325,7 +326,7 @@
 	struct in_addr in;
 	int rc;
 
-	in.s_addr = htonl(nsi->frgre.local_ip);
+	in.s_addr = osmo_htonl(nsi->frgre.local_ip);
 
 	/* Make sure we close any existing socket before changing it */
 	if (nsi->frgre.fd.fd)
diff --git a/src/gb/gprs_ns_vty.c b/src/gb/gprs_ns_vty.c
index 6de74dd..bdccb3f 100644
--- a/src/gb/gprs_ns_vty.c
+++ b/src/gb/gprs_ns_vty.c
@@ -27,6 +27,7 @@
 #include <arpa/inet.h>
 
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/byteswap.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/select.h>
@@ -100,7 +101,7 @@
 				inet_ntoa(nsvc->ip.bts_addr.sin_addr),
 				VTY_NEWLINE);
 			vty_out(vty, " nse %u remote-port %u%s",
-				nsvc->nsei, ntohs(nsvc->ip.bts_addr.sin_port),
+				nsvc->nsei, osmo_ntohs(nsvc->ip.bts_addr.sin_port),
 				VTY_NEWLINE);
 			break;
 		case GPRS_NS_LL_FR_GRE:
@@ -111,7 +112,7 @@
 				inet_ntoa(nsvc->frgre.bts_addr.sin_addr),
 				VTY_NEWLINE);
 			vty_out(vty, " nse %u fr-dlci %u%s",
-				nsvc->nsei, ntohs(nsvc->frgre.bts_addr.sin_port),
+				nsvc->nsei, osmo_ntohs(nsvc->frgre.bts_addr.sin_port),
 				VTY_NEWLINE);
 		default:
 			break;
@@ -124,7 +125,7 @@
 			vty_nsi->timeout[i], VTY_NEWLINE);
 
 	if (vty_nsi->nsip.local_ip) {
-		ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+		ia.s_addr = osmo_htonl(vty_nsi->nsip.local_ip);
 		vty_out(vty, " encapsulation udp local-ip %s%s",
 			inet_ntoa(ia), VTY_NEWLINE);
 	}
@@ -138,7 +139,7 @@
 	vty_out(vty, " encapsulation framerelay-gre enabled %u%s",
 		vty_nsi->frgre.enabled ? 1 : 0, VTY_NEWLINE);
 	if (vty_nsi->frgre.local_ip) {
-		ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+		ia.s_addr = osmo_htonl(vty_nsi->frgre.local_ip);
 		vty_out(vty, " encapsulation framerelay-gre local-ip %s%s",
 			inet_ntoa(ia), VTY_NEWLINE);
 	}
@@ -165,7 +166,7 @@
 		vty_out(vty, ", %s %15s:%u",
 			nsvc->ll == GPRS_NS_LL_UDP ? "UDP   " : "FR-GRE",
 			inet_ntoa(nsvc->ip.bts_addr.sin_addr),
-			ntohs(nsvc->ip.bts_addr.sin_port));
+			osmo_ntohs(nsvc->ip.bts_addr.sin_port));
 	vty_out(vty, "%s", VTY_NEWLINE);
 	if (stats) {
 		vty_out_rate_ctr_group(vty, " ", nsvc->ctrg);
@@ -178,11 +179,11 @@
 	struct gprs_nsvc *nsvc;
 	struct in_addr ia;
 
-	ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+	ia.s_addr = osmo_htonl(vty_nsi->nsip.local_ip);
 	vty_out(vty, "Encapsulation NS-UDP-IP     Local IP: %s, UDP Port: %u%s",
 		inet_ntoa(ia), vty_nsi->nsip.local_port, VTY_NEWLINE);
 
-	ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+	ia.s_addr = osmo_htonl(vty_nsi->frgre.local_ip);
 	vty_out(vty, "Encapsulation NS-FR-GRE-IP  Local IP: %s%s",
 		inet_ntoa(ia), VTY_NEWLINE);
 
@@ -309,7 +310,7 @@
 		return CMD_WARNING;
 	}
 
-	nsvc->ip.bts_addr.sin_port = htons(port);
+	nsvc->ip.bts_addr.sin_port = osmo_htons(port);
 
 	return CMD_SUCCESS;
 }
@@ -336,7 +337,7 @@
 		return CMD_WARNING;
 	}
 
-	nsvc->frgre.bts_addr.sin_port = htons(dlci);
+	nsvc->frgre.bts_addr.sin_port = osmo_htons(dlci);
 
 	return CMD_SUCCESS;
 }
@@ -441,7 +442,7 @@
 	struct in_addr ia;
 
 	inet_aton(argv[0], &ia);
-	vty_nsi->nsip.local_ip = ntohl(ia.s_addr);
+	vty_nsi->nsip.local_ip = osmo_ntohl(ia.s_addr);
 
 	return CMD_SUCCESS;
 }
@@ -482,7 +483,7 @@
 		return CMD_WARNING;
 	}
 	inet_aton(argv[0], &ia);
-	vty_nsi->frgre.local_ip = ntohl(ia.s_addr);
+	vty_nsi->frgre.local_ip = osmo_ntohl(ia.s_addr);
 
 	return CMD_SUCCESS;
 }

-- 
To view, visit https://gerrit.osmocom.org/2626
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5ed17702cd9487e1cab6bae39802aa11fb6a37b0
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list