daniel has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33202 )
(
13 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: examples: Add extension header octet to example ......................................................................
examples: Add extension header octet to example
Mainly to make data/packets look (pseudo-)correct in Wireshark.
Also: Add helper for allocating message buffers with extended headroom for IPA.
Change-Id: I962b9edcba65cdc98da00d2f8753dc5acd481502 --- M examples/ipa-stream-client.c M include/osmocom/netif/ipa.h M src/ipa.c 3 files changed, 23 insertions(+), 2 deletions(-)
Approvals: daniel: Looks good to me, approved Jenkins Builder: Verified
diff --git a/examples/ipa-stream-client.c b/examples/ipa-stream-client.c index b66d93a..10eb786 100644 --- a/examples/ipa-stream-client.c +++ b/examples/ipa-stream-client.c @@ -74,7 +74,7 @@ char *ptr; int x;
- msg = osmo_ipa_msg_alloc(0); + msg = osmo_ipa_ext_msg_alloc(0); if (msg == NULL) { LOGP(DLINP, LOGL_ERROR, "cannot alloc msg\n"); return -1; @@ -93,6 +93,7 @@ msg_sent->num = i; llist_add(&msg_sent->head, &msg_sent_list);
+ ipa_prepend_header_ext(msg, IPAC_PROTO_EXT_MGCP); osmo_ipa_msg_push_header(msg, IPAC_PROTO_OSMO);
osmo_stream_cli_send(conn, msg); @@ -115,7 +116,7 @@ int num; struct msg_sent *cur, *tmp, *found = NULL;
- num = ntohl(*((int *)(msg->data + sizeof(struct ipa_head)))); + num = ntohl(*((int *)(msg->data + sizeof(struct ipa_head) + sizeof(struct ipa_head_ext)))); LOGP(DLINP, LOGL_DEBUG, "received msg number %d\n", num);
llist_for_each_entry_safe(cur, tmp, &msg_sent_list, head) { diff --git a/include/osmocom/netif/ipa.h b/include/osmocom/netif/ipa.h index 0d1085f..7494d8d 100644 --- a/include/osmocom/netif/ipa.h +++ b/include/osmocom/netif/ipa.h @@ -19,6 +19,8 @@ } __attribute__ ((packed));
struct msgb *osmo_ipa_msg_alloc(int headroom); +struct msgb *osmo_ipa_ext_msg_alloc(size_t headroom); + void osmo_ipa_msg_push_header(struct msgb *msg, uint8_t proto);
int osmo_ipa_process_msg(struct msgb *msg); diff --git a/src/ipa.c b/src/ipa.c index 197a47f..5f62e88 100644 --- a/src/ipa.c +++ b/src/ipa.c @@ -97,6 +97,11 @@ return msg; }
+struct msgb *osmo_ipa_ext_msg_alloc(size_t headroom) +{ + return osmo_ipa_msg_alloc(sizeof(struct ipa_head_ext) + headroom); +} + void osmo_ipa_msg_push_header(struct msgb *msg, uint8_t proto) { struct ipa_head *hh;