aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/abis_nm.h48
-rw-r--r--openbsc/src/ipaccess-find.c19
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);