aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-06-01 17:29:15 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-06-01 17:34:09 +0200
commit9df7dc5f69c3a8edc2150b0702c1504b5f7be8b7 (patch)
treed28f916ab8eb91a7c796961f070c71639bdde59a
parent59bfb5854d04e0b89490c7f565d6ac5b6b44cc23 (diff)
wireformat: Send the length in the network order..
this is a format change. but it is necessary now.
-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);