summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-08-08 17:26:36 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2016-08-08 17:26:36 +0200
commit135214326d4dcd68377574ac1ac313e3b6a29ccc (patch)
treeebf2b99ae40c4b8b2e1f86d3d45c98a2d9d8d06a
parenttests: use makefile and expand greatly (diff)
downloadwireguard-monolithic-historical-experimental-0.0.20160808.tar.xz
wireguard-monolithic-historical-experimental-0.0.20160808.zip
ratelimiter: do not require IPv6experimental-0.0.20160808
-rw-r--r--src/ratelimiter.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ratelimiter.c b/src/ratelimiter.c
index c322b3d..ab366d2 100644
--- a/src/ratelimiter.c
+++ b/src/ratelimiter.c
@@ -41,7 +41,7 @@ int ratelimiter_init(struct ratelimiter *ratelimiter, struct wireguard_device *w
ratelimiter->v4_match = xt_request_find_match(NFPROTO_IPV4, "hashlimit", 1);
if (IS_ERR(ratelimiter->v4_match)) {
- pr_err("The xt_hashlimit module is required");
+ pr_err("The xt_hashlimit module for IPv4 is required");
return PTR_ERR(ratelimiter->v4_match);
}
@@ -54,9 +54,10 @@ int ratelimiter_init(struct ratelimiter *ratelimiter, struct wireguard_device *w
return ret;
}
+#if IS_ENABLED(CONFIG_IPV6)
ratelimiter->v6_match = xt_request_find_match(NFPROTO_IPV6, "hashlimit", 1);
if (IS_ERR(ratelimiter->v6_match)) {
- pr_err("The xt_hashlimit module is required");
+ pr_err("The xt_hashlimit module for IPv6 is required");
module_put(ratelimiter->v4_match->me);
return PTR_ERR(ratelimiter->v6_match);
}
@@ -77,6 +78,7 @@ int ratelimiter_init(struct ratelimiter *ratelimiter, struct wireguard_device *w
module_put(ratelimiter->v6_match->me);
return ret;
}
+#endif
ratelimiter->net = wg->creating_net;
return 0;
@@ -92,11 +94,13 @@ void ratelimiter_uninit(struct ratelimiter *ratelimiter)
ratelimiter->v4_match->destroy(&dtor);
module_put(ratelimiter->v4_match->me);
+#if IS_ENABLED(CONFIG_IPV6)
dtor.match = ratelimiter->v6_match;
dtor.matchinfo = &ratelimiter->v6_info;
dtor.family = NFPROTO_IPV6;
ratelimiter->v6_match->destroy(&dtor);
module_put(ratelimiter->v6_match->me);
+#endif
}
bool ratelimiter_allow(struct ratelimiter *ratelimiter, struct sk_buff *skb)
@@ -109,11 +113,15 @@ bool ratelimiter_allow(struct ratelimiter *ratelimiter, struct sk_buff *skb)
action.matchinfo = &ratelimiter->v4_info;
action.thoff = ip_hdrlen(skb);
action.family = NFPROTO_IPV4;
- } else if (ip_hdr(skb)->version == 6) {
+ }
+#if IS_ENABLED(CONFIG_IPV6)
+ else if (ip_hdr(skb)->version == 6) {
action.match = ratelimiter->v6_match;
action.matchinfo = &ratelimiter->v6_info;
action.family = NFPROTO_IPV6;
- } else
+ }
+#endif
+ else
return false;
return action.match->match(skb, &action);
}