diff --git a/server/src/if.c b/server/src/if.c index 4085f1b36..3e5a37334 100644 --- a/server/src/if.c +++ b/server/src/if.c @@ -64,12 +64,6 @@ int if_start(struct interface *i, int affinity) if (s->netem) { s->mark = 1 + mark++; - /* Set fwmark for outgoing packets */ - if (setsockopt(s->sd, SOL_SOCKET, SO_MARK, &s->mark, sizeof(s->mark))) - serror("Failed to set fwmark for outgoing packets"); - else - debug(4, "Set fwmark for socket (sd=%u) to %u", s->sd, s->mark); - tc_mark(i, TC_HDL(4000, s->mark), s->mark); tc_netem(i, TC_HDL(4000, s->mark), s->netem); } diff --git a/server/src/socket.c b/server/src/socket.c index deddb6188..2f0869bc7 100644 --- a/server/src/socket.c +++ b/server/src/socket.c @@ -121,6 +121,12 @@ int socket_open(struct node *n) if (ret < 0) serror("Failed to connect socket"); } + + /* Set fwmark for outgoing packets */ + if (setsockopt(s->sd, SOL_SOCKET, SO_MARK, &s->mark, sizeof(s->mark))) + serror("Failed to set fwmark for outgoing packets"); + else + debug(4, "Set fwmark for socket (sd=%u) to %u", s->sd, s->mark); /* Set socket priority, QoS or TOS IP options */ int prio;