aboutgitcodebugslistschat
path: root/fwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'fwd.c')
-rw-r--r--fwd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fwd.c b/fwd.c
index 3e87169..c7fd1a9 100644
--- a/fwd.c
+++ b/fwd.c
@@ -326,6 +326,23 @@ static struct fwd_table fwd_out;
*/
void fwd_rule_init(struct ctx *c)
{
+ uint32_t caps = 0;
+
+ if (c->ifi4)
+ caps |= FWD_CAP_IPV4;
+ if (c->ifi6)
+ caps |= FWD_CAP_IPV6;
+ if (!c->no_tcp)
+ caps |= FWD_CAP_TCP;
+ if (!c->no_udp)
+ caps |= FWD_CAP_UDP;
+ if (c->mode == MODE_PASTA)
+ caps |= FWD_CAP_SCAN;
+ if (!c->no_bindtodevice)
+ caps |= FWD_CAP_IFNAME;
+
+ fwd_in.caps = fwd_out.caps = caps;
+
c->fwd[PIF_HOST] = &fwd_in;
if (c->mode == MODE_PASTA)
c->fwd[PIF_SPLICE] = &fwd_out;