summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/network.c4
-rw-r--r--src/sync-ftfw.c11
-rw-r--r--src/sync-mode.c8
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);