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.
This commit is contained in:
Holger Hans Peter Freyther 2014-07-25 10:48:14 +02:00
parent 3674645e20
commit 94a63851b7
1 changed files with 31 additions and 0 deletions

View File

@ -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));