diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/network.c | 4 | ||||
-rw-r--r-- | src/sync-ftfw.c | 11 | ||||
-rw-r--r-- | src/sync-mode.c | 8 |
3 files changed, 13 insertions, 10 deletions
diff --git a/src/network.c b/src/network.c index 7d1d9fa..04c9d39 100644 --- a/src/network.c +++ b/src/network.c @@ -32,8 +32,7 @@ static size_t __do_send(struct mcast_sock *m, void *data, size_t len) struct nethdr *net = data; debug("send sq: %u fl:%u len:%u\n", - ntohl(net->seq), ntohs(net->flags), - ntohs(net->len)); + ntohl(net->seq), net->flags, ntohs(net->len)); return mcast_send(m, net, len); } @@ -46,6 +45,7 @@ static size_t __do_prepare(struct mcast_sock *m, void *data, size_t len) seq_set = 1; cur_seq = time(NULL); } + net->version = CONNTRACKD_PROTOCOL_VERSION; net->len = len; net->seq = cur_seq++; HDR_HOST2NETWORK(net); diff --git a/src/sync-ftfw.c b/src/sync-ftfw.c index ed97ceb..598945f 100644 --- a/src/sync-ftfw.c +++ b/src/sync-ftfw.c @@ -477,14 +477,12 @@ static void ftfw_send(struct nethdr *net, struct us_conntrack *u) hello_state = HELLO_SAY; /* fall through */ case HELLO_SAY: - net->flags = ntohs(net->flags) | NET_F_HELLO; - net->flags = htons(net->flags); + net->flags |= NET_F_HELLO; break; } if (say_hello_back) { - net->flags = ntohs(net->flags) | NET_F_HELLO_BACK; - net->flags = htons(net->flags); + net->flags |= NET_F_HELLO_BACK; say_hello_back = 0; } @@ -501,7 +499,7 @@ static int tx_queue_xmit(void *data1, const void *data2) size_t len = prepare_send_netmsg(STATE_SYNC(mcast_client), net); dp("tx_queue sq: %u fl:%u len:%u\n", - ntohl(net->seq), ntohs(net->flags), ntohs(net->len)); + ntohl(net->seq), net->flags, ntohs(net->len)); mcast_buffered_send_netmsg(STATE_SYNC(mcast_client), net, len); HDR_NETWORK2HOST(net); @@ -521,8 +519,7 @@ static int tx_list_xmit(struct list_head *i, struct us_conntrack *u, int type) size_t len = prepare_send_netmsg(STATE_SYNC(mcast_client), net); dp("tx_list sq: %u fl:%u len:%u\n", - ntohl(net->seq), ntohs(net->flags), - ntohs(net->len)); + ntohl(net->seq), net->flags, ntohs(net->len)); list_del_init(i); tx_list_len--; diff --git a/src/sync-mode.c b/src/sync-mode.c index 4c22745..152a8e2 100644 --- a/src/sync-mode.c +++ b/src/sync-mode.c @@ -41,6 +41,12 @@ static void do_mcast_handler_step(struct nethdr *net, size_t remain) struct nf_conntrack *ct = (struct nf_conntrack *)(void*) __ct; struct us_conntrack *u; + if (net->version != CONNTRACKD_PROTOCOL_VERSION) { + STATE(malformed)++; + dlog(LOG_WARNING, "wrong protocol version `%u'", net->version); + return; + } + switch (STATE_SYNC(sync)->recv(net)) { case MSG_DATA: break; @@ -144,7 +150,7 @@ static void mcast_handler(void) } debug("recv sq: %u fl:%u len:%u (rem:%d)\n", - ntohl(net->seq), ntohs(net->flags), + ntohl(net->seq), net->flags, ntohs(net->len), remain); HDR_NETWORK2HOST(net); |