* add commond header file for ipaccess protocol
* query for more attributes during ipaccess-find

diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index bfccbc7..98f47fb 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -40,6 +40,7 @@
 #include <openbsc/abis_rsl.h>
 #include <openbsc/subchan_demux.h>
 #include <openbsc/e1_input.h>
+#include <openbsc/ipaccess.h>
 
 /* data structure for one E1 interface with A-bis */
 struct ia_e1_handle {
@@ -49,45 +50,24 @@
 
 #define TS1_ALLOC_SIZE	300
 
-struct ipaccess_head {
-	u_int8_t zero;
-	u_int8_t len;
-	u_int8_t proto;
-	u_int8_t data[0];
-} __attribute__ ((packed));
-
-enum ipaccess_proto {
-	PROTO_RSL = 0x00,
-	PROTO_IPACCESS = 0xfe,
-	PROTO_OML = 0xff,
-};
-
-enum ipaccess_msg_type {
-	MSGT_PING		= 0x00,
-	MSGT_PONG		= 0x01,
-	MSGT_IDENTITY_GET	= 0x04,
-	MSGT_IDENTITY_RESP	= 0x05,
-	MSGT_IDENTITY_ACK	= 0x06,
-};
-
-static const u_int8_t pong[] = { 0, 1, PROTO_IPACCESS, MSGT_PONG };
-static const u_int8_t id_ack[] = { 0, 1, PROTO_IPACCESS, MSGT_IDENTITY_ACK };
+static const u_int8_t pong[] = { 0, 1, IPAC_PROTO_IPACCESS, IPAC_MSGT_PONG };
+static const u_int8_t id_ack[] = { 0, 1, IPAC_PROTO_IPACCESS, IPAC_MSGT_ID_ACK };
 
 static int ipaccess_rcvmsg(struct msgb *msg, int fd)
 {
 	u_int8_t msg_type = *(msg->l2h);
 
 	switch (msg_type) {
-	case MSGT_PING:
+	case IPAC_MSGT_PING:
 		write(fd, pong, sizeof(pong));
 		break;
-	case MSGT_PONG:
+	case IPAC_MSGT_PONG:
 		DEBUGP(DMI, "PONG!\n");
 		break;
-	case MSGT_IDENTITY_RESP:
+	case IPAC_MSGT_ID_RESP:
 		DEBUGP(DMI, "ID_RESP\n");
 		break;
-	case MSGT_IDENTITY_ACK:
+	case IPAC_MSGT_ID_ACK:
 		DEBUGP(DMI, "ID_ACK? -> ACK!\n");
 		write(fd, id_ack, sizeof(id_ack));
 		break;	
@@ -123,8 +103,8 @@
 	}
 	if (ret == 0) {
 		fprintf(stderr, "BTS disappeared, dead socket\n");
-		e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, PROTO_RSL);
-		e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, PROTO_OML);
+		e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, IPAC_PROTO_RSL);
+		e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, IPAC_PROTO_OML);
 		bsc_unregister_fd(bfd);
 		close(bfd->fd);
 		bfd->fd = -1;
@@ -141,7 +121,7 @@
 	}
 	msgb_put(msg, ret);
 
-	if (hh->proto == PROTO_IPACCESS)
+	if (hh->proto == IPAC_PROTO_IPACCESS)
 		return ipaccess_rcvmsg(msg, bfd->fd);
 
 	if (debug_mask & DMI) { 
@@ -158,16 +138,16 @@
 	msg->trx = link->trx;
 
 	switch (hh->proto) {
-	case PROTO_RSL:
+	case IPAC_PROTO_RSL:
 		if (!rsl_up) {
-			e1inp_event(e1i_ts, EVT_E1_TEI_UP, 0, PROTO_RSL);
+			e1inp_event(e1i_ts, EVT_E1_TEI_UP, 0, IPAC_PROTO_RSL);
 			rsl_up = 1;
 		}
 		ret = abis_rsl_rcvmsg(msg);
 		break;
-	case PROTO_OML:
+	case IPAC_PROTO_OML:
 		if (!oml_up) {
-			e1inp_event(e1i_ts, EVT_E1_TEI_UP, 0, PROTO_OML);
+			e1inp_event(e1i_ts, EVT_E1_TEI_UP, 0, IPAC_PROTO_OML);
 			oml_up = 1;
 		}
 		ret = abis_nm_rcvmsg(msg);
@@ -207,10 +187,10 @@
 
 	switch (sign_link->type) {
 	case E1INP_SIGN_OML:
-		hh->proto = PROTO_OML;
+		hh->proto = IPAC_PROTO_OML;
 		break;
 	case E1INP_SIGN_RSL:
-		hh->proto = PROTO_RSL;
+		hh->proto = IPAC_PROTO_RSL;
 		break;
 	default:
 		msgb_free(msg);
diff --git a/src/ipaccess-find.c b/src/ipaccess-find.c
index de96a16..8a11cd3 100644
--- a/src/ipaccess-find.c
+++ b/src/ipaccess-find.c
@@ -10,6 +10,7 @@
 
 #include <openbsc/select.h>
 #include <openbsc/timer.h>
+#include <openbsc/ipaccess.h>
 
 static int udp_sock(void)
 {
@@ -45,7 +46,18 @@
 	return rc;
 }
 
-const unsigned char find_pkt[] = { 0x00, 0x0b, 0xfe, 0x00, 0x04, 0x01, 0x06, 0x01, 0x07, 0x01, 0x02, 0x01, 0x03, 0x01, 0x08 };
+const unsigned char find_pkt[] = { 0x00, 0x0b+8, IPAC_PROTO_IPACCESS, 0x00, 
+				IPAC_MSGT_ID_GET,
+					0x01, IPAC_IDTAG_MACADDR,
+					0x01, IPAC_IDTAG_IPADDR,
+					0x01, IPAC_IDTAG_UNIT,
+					0x01, IPAC_IDTAG_LOCATION1,
+					0x01, IPAC_IDTAG_LOCATION2,
+					0x01, IPAC_IDTAG_EQUIPVERS,
+					0x01, IPAC_IDTAG_SWVERSION,
+					0x01, IPAC_IDTAG_UNITNAME,
+					0x01, IPAC_IDTAG_SERNR,
+				};
 
 
 static int bcast_find(int fd)
@@ -71,7 +83,7 @@
 		t_len = *cur++;
 		t_tag = *cur++;
 		
-		printf("tag=0x%02x, val='%s'  ", t_tag, cur);
+		printf("tag(%02x)='%s'  ", t_tag, cur);
 
 		cur += t_len;
 	}