aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-25 10:48:14 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-25 10:48:14 +0200
commit94a63851b7a1794c642d76e95b3d0d389f279137 (patch)
treec9e7411848aed9c2b8a2e9fffcc371989aebcb74
parent3674645e20d23d37269ee9226363f94bbde4b5c6 (diff)
sysmobts: Include the model and master/slave in the unitid
Make it more easy to find the right BTS model and know what is the master/slave.
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_mgr.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
index 942b18a..41ee814 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
@@ -262,6 +262,7 @@ static void respond_to(struct sockaddr_in *src, struct osmo_fd *fd,
{
static int fetched_info = 0;
static char mac_str[20] = { };
+ static char *model_name;
struct sockaddr_in loc_addr;
int rc;
@@ -274,10 +275,37 @@ static void respond_to(struct sockaddr_in *src, struct osmo_fd *fd,
if (!fetched_info) {
uint8_t mac[6];
+ int val;
+
+ /* fetch the MAC */
sysmobts_par_get_buf(SYSMOBTS_PAR_MAC, mac, sizeof(mac));
snprintf(mac_str, sizeof(mac_str), "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",
mac[0], mac[1], mac[2],
mac[3], mac[4], mac[5]);
+
+ /* fetch the model and trx number */
+ sysmobts_par_get_int(SYSMOBTS_PAR_MODEL_NR, &val);
+ switch(val) {
+ case 0:
+ case 0xffff:
+ case 1002:
+ model_name = "sysmoBTS 1002";
+ break;
+ case 2050:
+ sysmobts_par_get_int(SYSMOBTS_PAR_TRX_NR, &val);
+ if (val == 0)
+ model_name = "sysmoBTS 2050 (master)";
+ else if (val == 1)
+ model_name = "sysmoBTS 2050 (slave)";
+ else
+ model_name = "sysmoBTS 2050 (unknown)";
+ break;
+ default:
+ model_name = "Unknown";
+ break;
+ }
+
+
fetched_info = 1;
}
@@ -295,6 +323,9 @@ static void respond_to(struct sockaddr_in *src, struct osmo_fd *fd,
inet_ntop(AF_INET, &loc_addr.sin_addr, loc_ip, sizeof(loc_ip));
quirk_l16tv_put(msg, strlen(loc_ip) + 1, IPAC_IDTAG_IPADDR, (uint8_t *) loc_ip);
+ /* abuse some flags */
+ quirk_l16tv_put(msg, strlen(model_name) + 1, IPAC_IDTAG_UNIT, (uint8_t *) model_name);
+
/* ip.access nanoBTS would reply to port==3006 */
ipaccess_prepend_header_quirk(msg, IPAC_PROTO_IPACCESS);
rc = sendto(fd->fd, msg->data, msg->len, 0, (struct sockaddr *)src, sizeof(*src));