From: Pablo Neira Ayuso <[email protected]>

Now this is used by ipaccess-proxy, remove redundant implementation in it.
---
 openbsc/include/openbsc/ipaccess.h    |    1 +
 openbsc/src/ipaccess/ipaccess-proxy.c |   41 +-------------------------------
 openbsc/src/libabis/input/ipaccess.c  |    6 ++--
 3 files changed, 6 insertions(+), 42 deletions(-)

diff --git a/openbsc/include/openbsc/ipaccess.h 
b/openbsc/include/openbsc/ipaccess.h
index 6053efd..135fce2 100644
--- a/openbsc/include/openbsc/ipaccess.h
+++ b/openbsc/include/openbsc/ipaccess.h
@@ -76,6 +76,7 @@ int ipaccess_send_id_req(int fd);
 
 const char *ipaccess_idtag_name(int tag);
 int ipaccess_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len);
+int ipaccess_parse_unitid(const char *str, u_int16_t *site_id, u_int16_t 
*bts_id, u_int16_t *trx_id);
 
 int ipaccess_drop_oml(struct gsm_bts *bts);
 int ipaccess_drop_rsl(struct gsm_bts_trx *trx);
diff --git a/openbsc/src/ipaccess/ipaccess-proxy.c 
b/openbsc/src/ipaccess/ipaccess-proxy.c
index d2bf599..b6dcad1 100644
--- a/openbsc/src/ipaccess/ipaccess-proxy.c
+++ b/openbsc/src/ipaccess/ipaccess-proxy.c
@@ -131,43 +131,6 @@ static int gprs_ns_cb(struct bsc_fd *bfd, unsigned int 
what);
 
 #define PROXY_ALLOC_SIZE       1200
 
-static int parse_unitid(const char *str, u_int16_t *site_id, u_int16_t *bts_id,
-                       u_int16_t *trx_id)
-{
-       unsigned long ul;
-       char *endptr;
-       const char *nptr;
-
-       nptr = str;
-       ul = strtoul(nptr, &endptr, 10);
-       if (endptr <= nptr)
-               return -EINVAL;
-       if (site_id)
-               *site_id = ul & 0xffff;
-
-       if (*endptr++ != '/')
-               return -EINVAL;
-
-       nptr = endptr;
-       ul = strtoul(nptr, &endptr, 10);
-       if (endptr <= nptr)
-               return -EINVAL;
-       if (bts_id)
-               *bts_id = ul & 0xffff;
-
-       if (*endptr++ != '/')
-               return -EINVAL;
-
-       nptr = endptr;
-       ul = strtoul(nptr, &endptr, 10);
-       if (endptr <= nptr)
-               return -EINVAL;
-       if (trx_id)
-               *trx_id = ul & 0xffff;
-
-       return 0;
-}
-
 static struct ipa_bts_conn *find_bts_by_unitid(struct ipa_proxy *ipp,
                                                u_int16_t site_id,
                                                u_int16_t bts_id)
@@ -495,8 +458,8 @@ static int ipaccess_rcvmsg(struct ipa_proxy_conn *ipc, 
struct msgb *msg,
 
                /* lookup BTS, create sign_link, ... */
                site_id = bts_id = trx_id = 0;
-               parse_unitid((char *)TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT),
-                            &site_id, &bts_id, &trx_id);
+               ipaccess_parse_unitid((char *)TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT),
+                                     &site_id, &bts_id, &trx_id);
                ipbc = find_bts_by_unitid(ipp, site_id, bts_id);
                if (!ipbc) {
                        /* We have not found an ipbc (per-bts proxy instance)
diff --git a/openbsc/src/libabis/input/ipaccess.c 
b/openbsc/src/libabis/input/ipaccess.c
index 6b15e47..ecf7038 100644
--- a/openbsc/src/libabis/input/ipaccess.c
+++ b/openbsc/src/libabis/input/ipaccess.c
@@ -155,8 +155,8 @@ struct gsm_bts *find_bts_by_unitid(struct gsm_network *net,
        return NULL;
 }
 
-static int parse_unitid(const char *str, u_int16_t *site_id, u_int16_t *bts_id,
-                       u_int16_t *trx_id)
+int ipaccess_parse_unitid(const char *str, u_int16_t *site_id,
+                         u_int16_t *bts_id, u_int16_t *trx_id)
 {
        unsigned long ul;
        char *endptr;
@@ -274,7 +274,7 @@ static int ipaccess_rcvmsg(struct e1inp_line *line, struct 
msgb *msg,
                /* lookup BTS, create sign_link, ... */
                unitid = (char *) TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT);
                unitid[len - 1] = '\0';
-               parse_unitid(unitid, &site_id, &bts_id, &trx_id);
+               ipaccess_parse_unitid(unitid, &site_id, &bts_id, &trx_id);
                bts = find_bts_by_unitid(e1h->gsmnet, site_id, bts_id);
                if (!bts) {
                        LOGP(DINP, LOGL_ERROR, "Unable to find BTS 
configuration for "
-- 
1.7.2.3


Reply via email to