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

ipacces.c: Remove ipa_bts_id_resp() and use libosmocore

In Chanage-Id Icbcd8827a75fd5f3393351c1ca372de85275ad35 we introduced a
very similar function to libosocore.  Let's use that rather than our own
version here.

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


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

diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index ac84ffc..fb2e30d 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -567,90 +567,6 @@
        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;
@@ -698,13 +614,16 @@
                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");
-                       rmsg = ipa_bts_id_resp(dev, data + 1, len - 1, trx_nr);
+                       dev->trx_id = trx_nr;
+                       rmsg = ipa_ccm_make_id_resp_from_req(dev, data + 1, len 
- 1);
+                       dev->trx_id = old_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/2737
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I858920db1fb5f5d66e71b676d28c84d330d7904a
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>

Reply via email to