[PATCH] libosmo-abis[master]: Revert "ipacces.c: Remove ipa_bts_id_resp() and use libosmoc...

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
Fri May 26 11:12:49 UTC 2017


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

Revert "ipacces.c: Remove ipa_bts_id_resp() and use libosmocore"

This reverts commit d517db06ced45bbe0a70799487964e52edd8a375, which for
some reason broke the IPA client functionality.  This needs to be
investigated and properly fixed.  But until that happens: revert.

Change-Id: Ic168f437c5bf1fcdb7441b0541c80a4805463004
---
M src/input/ipaccess.c
1 file changed, 85 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/49/2749/1

diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index fb2e30d..ac84ffc 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -567,6 +567,90 @@
 	return ret;
 }
 
+#define IPA_STRING_MAX 64
+
+static struct msgb *
+ipa_bts_id_resp(struct ipaccess_unit *dev, uint8_t *data, int len, int trx_nr)
+{
+	struct msgb *nmsg;
+	char str[IPA_STRING_MAX];
+	uint8_t *tag;
+
+	memset(str, 0, sizeof(str));
+
+	nmsg = ipa_msg_alloc(0);
+	if (!nmsg)
+		return NULL;
+
+	*msgb_put(nmsg, 1) = IPAC_MSGT_ID_RESP;
+	while (len) {
+		if (len < 2) {
+			LOGP(DLINP, LOGL_NOTICE,
+				"Short read of ipaccess tag\n");
+			msgb_free(nmsg);
+			return NULL;
+		}
+		switch (data[1]) {
+		case IPAC_IDTAG_UNIT:
+			snprintf(str, sizeof(str), "%u/%u/%u",
+				dev->site_id, dev->bts_id, trx_nr);
+			break;
+		case IPAC_IDTAG_MACADDR:
+			snprintf(str, sizeof(str),
+				 "%02x:%02x:%02x:%02x:%02x:%02x",
+				 dev->mac_addr[0], dev->mac_addr[1],
+				 dev->mac_addr[2], dev->mac_addr[3],
+				 dev->mac_addr[4], dev->mac_addr[5]);
+			break;
+		case IPAC_IDTAG_LOCATION1:
+			if (dev->location1)
+				strncpy(str, dev->location1, IPA_STRING_MAX);
+			break;
+		case IPAC_IDTAG_LOCATION2:
+			if (dev->location2)
+				strncpy(str, dev->location2, IPA_STRING_MAX);
+			break;
+		case IPAC_IDTAG_EQUIPVERS:
+			if (dev->equipvers)
+				strncpy(str, dev->equipvers, IPA_STRING_MAX);
+			break;
+		case IPAC_IDTAG_SWVERSION:
+			if (dev->swversion)
+				strncpy(str, dev->swversion, IPA_STRING_MAX);
+			break;
+		case IPAC_IDTAG_UNITNAME:
+			snprintf(str, sizeof(str),
+				 "%s-%02x-%02x-%02x-%02x-%02x-%02x",
+				 dev->unit_name,
+				 dev->mac_addr[0], dev->mac_addr[1],
+				 dev->mac_addr[2], dev->mac_addr[3],
+				 dev->mac_addr[4], dev->mac_addr[5]);
+			break;
+		case IPAC_IDTAG_SERNR:
+			if (dev->serno)
+				strncpy(str, dev->serno, IPA_STRING_MAX);
+			break;
+		default:
+			LOGP(DLINP, LOGL_NOTICE,
+				"Unknown ipaccess tag 0x%02x\n", *data);
+			msgb_free(nmsg);
+			return NULL;
+		}
+		str[IPA_STRING_MAX-1] = '\0';
+
+		LOGP(DLINP, LOGL_INFO, " tag %d: %s\n", data[1], str);
+		tag = msgb_put(nmsg, 3 + strlen(str) + 1);
+		tag[0] = 0x00;
+		tag[1] = 1 + strlen(str) + 1;
+		tag[2] = data[1];
+		memcpy(tag + 3, str, strlen(str) + 1);
+		data += 2;
+		len -= 2;
+	}
+	ipa_msg_push_header(nmsg, IPAC_PROTO_IPACCESS);
+	return nmsg;
+}
+
 static struct msgb *ipa_bts_id_ack(void)
 {
 	struct msgb *nmsg2;
@@ -614,16 +698,13 @@
 		if (msg_type == IPAC_MSGT_ID_GET) {
 			uint8_t *data = msgb_l2(msg);
 			int len = msgb_l2len(msg);
-			int old_trx_nr = dev->trx_id;
 			int trx_nr = 0;
 
 			if (link->ofd->priv_nr >= E1INP_SIGN_RSL)
 				trx_nr = link->ofd->priv_nr - E1INP_SIGN_RSL;
 
 			LOGP(DLINP, LOGL_NOTICE, "received ID get\n");
-			dev->trx_id = trx_nr;
-			rmsg = ipa_ccm_make_id_resp_from_req(dev, data + 1, len - 1);
-			dev->trx_id = old_trx_nr;
+			rmsg = ipa_bts_id_resp(dev, data + 1, len - 1, trx_nr);
 			ret = ipa_send(link->ofd->fd, rmsg->data, rmsg->len);
 			if (ret != rmsg->len) {
 				LOGP(DLINP, LOGL_ERROR, "cannot send ID_RESP "

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

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



More information about the gerrit-log mailing list