diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-04-07 23:31:58 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-04-07 23:31:58 +0200 |
commit | 5d7b65b407902298b194daf9034c12d94de90d35 (patch) | |
tree | e34f68b1e008fefc32201701f911564f6685caec | |
parent | 755f7442dd754db7a6b534fe764012a87ce0575f (diff) |
ipaccess: Add a function to prepend the osmocom ext header
* include/openbsc/ipaccess.h: Reserve a protocol number for control
commands
* input/ipaccess.c: New function ipaccess_prepend_header_ext prepends
the extension header
-rw-r--r-- | openbsc/include/openbsc/ipaccess.h | 5 | ||||
-rw-r--r-- | openbsc/src/libabis/input/ipaccess.c | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/ipaccess.h b/openbsc/include/openbsc/ipaccess.h index 135fce2e2..00642ff03 100644 --- a/openbsc/include/openbsc/ipaccess.h +++ b/openbsc/include/openbsc/ipaccess.h @@ -31,6 +31,10 @@ enum ipaccess_proto { IPAC_PROTO_MGCP_OLD = 0xfc, }; +enum ipaccess_proto_ext { + IPAC_PROTO_EXT_CTRL = 0x00, +}; + enum ipaccess_msgtype { IPAC_MSGT_PING = 0x00, IPAC_MSGT_PONG = 0x01, @@ -70,6 +74,7 @@ int ipaccess_connect(struct e1inp_line *line, struct sockaddr_in *sa); int ipaccess_rcvmsg_base(struct msgb *msg, struct bsc_fd *bfd); struct msgb *ipaccess_read_msg(struct bsc_fd *bfd, int *error); void ipaccess_prepend_header(struct msgb *msg, int proto); +void ipaccess_prepend_header_ext(struct msgb *msg, int proto); int ipaccess_send_pong(int fd); int ipaccess_send_id_ack(int fd); int ipaccess_send_id_req(int fd); diff --git a/openbsc/src/libabis/input/ipaccess.c b/openbsc/src/libabis/input/ipaccess.c index ecf70388d..e1e314b9b 100644 --- a/openbsc/src/libabis/input/ipaccess.c +++ b/openbsc/src/libabis/input/ipaccess.c @@ -551,6 +551,15 @@ static int handle_ts1_read(struct bsc_fd *bfd) return ret; } +void ipaccess_prepend_header_ext(struct msgb *msg, int proto) +{ + struct ipaccess_head_ext *hh_ext; + + /* prepend the osmo ip.access header extension */ + hh_ext = (struct ipaccess_head_ext *) msgb_push(msg, sizeof(*hh_ext)); + hh_ext->proto = proto; +} + void ipaccess_prepend_header(struct msgb *msg, int proto) { struct ipaccess_head *hh; |