aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-04-07 23:31:58 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-04-07 23:31:58 +0200
commit5d7b65b407902298b194daf9034c12d94de90d35 (patch)
treee34f68b1e008fefc32201701f911564f6685caec
parent755f7442dd754db7a6b534fe764012a87ce0575f (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.h5
-rw-r--r--openbsc/src/libabis/input/ipaccess.c9
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;