diff options
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/abis_nm.h | 48 | ||||
-rw-r--r-- | openbsc/src/ipaccess-find.c | 19 |
2 files changed, 62 insertions, 5 deletions
diff --git a/openbsc/include/openbsc/abis_nm.h b/openbsc/include/openbsc/abis_nm.h index bad7d1ddd..4b7e2ff0f 100644 --- a/openbsc/include/openbsc/abis_nm.h +++ b/openbsc/include/openbsc/abis_nm.h @@ -215,6 +215,15 @@ enum abis_nm_msgtype_ipacc { NM_MT_IPACC_RSL_CONNECT = 0xe0, NM_MT_IPACC_RSL_CONNECT_ACK, NM_MT_IPACC_RSL_CONNECT_NACK, + NM_MT_IPACC_RSL_DISCONNECT = 0xe3, + NM_MT_IPACC_RSL_DISCONNECT_ACK, + NM_MT_IPACC_RSL_DISCONNECT_NACK, + NM_MT_IPACC_CONN_TRAF = 0xe6, + NM_MT_IPACC_CONN_TRAF_ACK, + NM_MT_IPACC_CONN_TRAF_NACK, + NM_MT_IPACC_DEF_BOOT_SW = 0xec, + NM_MT_IPACC_DEF_BOOT_SW_ACK, + MN_MT_IPACC_DEF_BOOT_SW_NACK, NM_MT_IPACC_SET_NVATTR = 0xef, NM_MT_IPACC_SET_NVATTR_ACK, NM_MT_IPACC_SET_NVATTR_NACK, @@ -351,11 +360,25 @@ enum abis_nm_attr { NM_ATT_IPACC_RSL_BSC_IP = 0x80, NM_ATT_IPACC_RSL_BSC_PORT = 0x81, + NM_ATT_IPACC_NV_FLAGS = 0x86, + NM_ATT_IPACC_FREQ_CTRL = 0x87, + NM_ATT_IPACC_IP_IF_CFG = 0x8a, /* IP interface */ + NM_ATT_IPACC_IP_GW_CFG = 0x8b, /* IP gateway */ + NM_ATT_IPACC_IN_SERV_TIME = 0x8c, NM_ATT_IPACC_LOCATION = 0x8e, /* string describing location */ NM_ATT_IPACC_UNIT_ID = 0x91, /* Site/BTS/TRX */ NM_ATT_IPACC_UNIT_NAME = 0x93, /* default: nbts-<mac-as-string> */ + NM_ATT_IPACC_SNMP_CFG = 0x94, NM_ATT_IPACC_PRIM_OML_IP = 0x95, NM_ATT_IPACC_SEC_OML_IP = 0x96, + NM_ATT_IPACC_CUR_SW_CFG = 0x97, + + NM_ATT_IPACC_ALM_THRESH_LIST = 0xa4, + NM_ATT_IPACC_UPTIME = 0xab, + NM_ATT_IPACC_SSL_CFG = 0xad, + NM_ATT_IPACC_SEC_POSSIBLE = 0xae, + NM_ATT_IPACC_REVOC_DATE = 0xb0, + NM_ATT_BS11_RF_RES_IND_PER = 0x8f, @@ -543,6 +566,31 @@ enum abis_bs11_phase { BS11_STATE_ABIS_LOAD = 0x13, }; +enum abis_nm_ipacc_test_no { + NM_IPACC_TESTNO_CHAN_USAGE = 0x40, + NM_IPACC_TESTNO_BCCH_CHAN_USAGE = 0x41, + NM_IPACC_TESTNO_FREQ_SYNC = 0x42, + NM_IPACC_TESTNO_BCCH_INFO = 0x43, + NM_IPACC_TESTNO_TX_BEACON = 0x44, +}; + +/* first byte after length inside NM_ATT_TEST_REPORT */ +enum abis_nm_ipacc_test_res { + NM_IPACC_TESTRES_SUCCESS = 0, + NM_IPACC_TESTRES_TIMEOUT = 1, + NM_IPACC_TESTRES_NO_CHANS = 2, + NM_IPACC_TESTRES_PARTIAL = 3, + NM_IPACC_TESTRES_STOPPED = 4, +}; + +/* internal IE inside NM_ATT_TEST_REPORT */ +enum abis_nm_ipacc_testres_ie { + NM_IPACC_TR_IE_FREQ_ERR_LIST = 3, + NM_IPACC_TR_IE_CHAN_USAGE = 4, + NM_IPACC_TR_IE_BCCH_INFO = 6, + NM_IPACC_TR_IE_RESULT_DETAILS = 8, + NM_IPACC_TR_IE_FREQ_ERR = 18, +}; /* PUBLIC */ diff --git a/openbsc/src/ipaccess-find.c b/openbsc/src/ipaccess-find.c index b3e9814a9..db78922b9 100644 --- a/openbsc/src/ipaccess-find.c +++ b/openbsc/src/ipaccess-find.c @@ -33,7 +33,7 @@ static const char *ipac_idtag_name(int tag) return idtag_names[tag]; } -static int udp_sock(void) +static int udp_sock(char *local_ip) { int fd, rc, bc = 1; struct sockaddr_in sa; @@ -45,7 +45,7 @@ static int udp_sock(void) sa.sin_family = AF_INET; sa.sin_port = htons(3006); sa.sin_addr.s_addr = INADDR_ANY; - inet_aton("192.168.100.11", &sa.sin_addr); + inet_aton(local_ip, &sa.sin_addr); rc = bind(fd, (struct sockaddr *)&sa, sizeof(sa)); if (rc < 0) @@ -149,16 +149,25 @@ static void timer_cb(void *_data) int main(int argc, char **argv) { struct bsc_fd bfd; + char *local_ip; int rc; printf("ipaccess-find (C) 2009 by Harald Welte\n"); printf("This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY\n\n"); + if (argc < 2) { + fprintf(stderr, "please specify the _local_ IP address as argument\n"); + exit(2); + } + + local_ip = argv[1]; bfd.cb = bfd_cb; bfd.when = BSC_FD_READ | BSC_FD_WRITE; - bfd.fd = udp_sock(); - if (bfd.fd < 0) - exit(2); + bfd.fd = udp_sock(local_ip); + if (bfd.fd < 0) { + perror("Cannot create local socket for broadcast udp"); + exit(1); + } bsc_register_fd(&bfd); |