aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmo-pcap/wireformat.h4
-rw-r--r--src/osmo_client_network.c4
-rw-r--r--src/osmo_server_network.c1
3 files changed, 5 insertions, 4 deletions
diff --git a/include/osmo-pcap/wireformat.h b/include/osmo-pcap/wireformat.h
index a642bb1..f094051 100644
--- a/include/osmo-pcap/wireformat.h
+++ b/include/osmo-pcap/wireformat.h
@@ -38,8 +38,8 @@
struct osmo_pcap_data {
uint8_t type;
- uint8_t spare[3];
- uint32_t len;
+ uint8_t spare;
+ uint16_t len;
uint8_t data[0];
} __attribute__((packed));
diff --git a/src/osmo_client_network.c b/src/osmo_client_network.c
index 60f3216..281e8eb 100644
--- a/src/osmo_client_network.c
+++ b/src/osmo_client_network.c
@@ -119,7 +119,7 @@ void osmo_client_send_data(struct osmo_pcap_client *client,
msg->l3h = msgb_put(msg, in_hdr->caplen);
memcpy(msg->l3h, data, in_hdr->caplen);
- om_hdr->len = msgb_l2len(msg);
+ om_hdr->len = htons(msgb_l2len(msg));
write_data(client, msg);
}
@@ -138,7 +138,7 @@ void osmo_client_send_link(struct osmo_pcap_client *client)
om_hdr = (struct osmo_pcap_data *) msgb_put(msg, sizeof(*om_hdr));
om_hdr->type = PKT_LINK_HDR;
- om_hdr->len = sizeof(*hdr);
+ om_hdr->len = htons(sizeof(*hdr));
hdr = (struct pcap_file_header *) msgb_put(msg, sizeof(*hdr));
hdr->magic = 0xa1b2c3d4;
diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c
index 5b00710..d1948a8 100644
--- a/src/osmo_server_network.c
+++ b/src/osmo_server_network.c
@@ -188,6 +188,7 @@ static int read_cb(struct osmo_fd *fd, unsigned int what)
return -1;
}
+ data->len = ntohs(data->len);
if (data->len > 2000) {
LOGP(DSERVER, LOGL_ERROR, "Unplausible result %u\n", data->len);
close_connection(conn);