From 2b5d3ce7c69e1149bb2af815ab8b8534026063ca Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sun, 6 Nov 2011 20:47:08 +0100 Subject: src: add generic channel infrastructure and A-bis IPA server support This patch adds the generic channel infrastructure that allows to create channel of different types. Each channel has their own configuration functions. struct osmo_chan *chan; chan = osmo_chan_create(tall_example, CHAN_ABIS_IPA_SERVER); ... /* specific configuration functions per supported channel. */ osmo_chan_abis_ipa_server_set_cb_signalmsg(chan, signal_msg_cb); osmo_chan_abis_ipa_unit_add(chan, 1801, 0); /* open channel. */ osmo_chan_open(chan); The input path requires a callback to be registered. The output path is handled through: int osmo_chan_enqueue(struct osmo_chan *c, struct msgb *msg); The msg->dst must be set (it can be taken from the original message to route one reply). This patch also adds A-bis IPA server support. It has been tested with e1inp_ipa_bsc_test available in libosmo-abis. --- include/osmocom/netif/ipa.h | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'include/osmocom/netif/ipa.h') diff --git a/include/osmocom/netif/ipa.h b/include/osmocom/netif/ipa.h index 5b53b3a..152ea24 100644 --- a/include/osmocom/netif/ipa.h +++ b/include/osmocom/netif/ipa.h @@ -34,19 +34,43 @@ struct ipa_head_ext { #define IPAC_MSGT_SCCP_OLD 0xff /* OpenBSC extension */ enum ipaccess_id_tags { - IPAC_IDTAG_SERNR = 0x00, - IPAC_IDTAG_UNITNAME = 0x01, - IPAC_IDTAG_LOCATION1 = 0x02, - IPAC_IDTAG_LOCATION2 = 0x03, - IPAC_IDTAG_EQUIPVERS = 0x04, - IPAC_IDTAG_SWVERSION = 0x05, - IPAC_IDTAG_IPADDR = 0x06, - IPAC_IDTAG_MACADDR = 0x07, - IPAC_IDTAG_UNIT = 0x08, + IPAC_IDTAG_SERNR = 0x00, + IPAC_IDTAG_UNITNAME = 0x01, + IPAC_IDTAG_LOCATION1 = 0x02, + IPAC_IDTAG_LOCATION2 = 0x03, + IPAC_IDTAG_EQUIPVERS = 0x04, + IPAC_IDTAG_SWVERSION = 0x05, + IPAC_IDTAG_IPADDR = 0x06, + IPAC_IDTAG_MACADDR = 0x07, + IPAC_IDTAG_UNIT = 0x08, }; struct msgb *osmo_ipa_msg_alloc(int headroom); void osmo_ipa_msg_push_header(struct msgb *msg, uint8_t proto); int osmo_ipa_msg_recv(int fd, struct msgb *msg); +struct ipaccess_unit { + uint16_t site_id; + uint16_t bts_id; + uint16_t trx_id; + char *unit_name; + char *equipvers; + char *swversion; + uint8_t mac_addr[6]; + char *location1; + char *location2; + char *serno; +}; + +struct osmo_fd; +struct tlv_parsed; + +int osmo_ipa_rcvmsg_base(struct msgb *msg, struct osmo_fd *bfd); +int osmo_ipa_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len); +int osmo_ipa_parse_unitid(const char *str, struct ipaccess_unit *unit_data); + +int ipaccess_send_pong(int fd); +int ipaccess_send_id_ack(int fd); +int ipaccess_send_id_req(int fd); + #endif -- cgit v1.2.3