summaryrefslogtreecommitdiffstats
path: root/sbin/iked/policy.c
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2016-06-01 11:16:41 +0000
committerpatrick <patrick@openbsd.org>2016-06-01 11:16:41 +0000
commit19dc86382e9f3b3c46b2a0f08dd7b4e349686b5c (patch)
tree11426a99f496b81fc81403032c6ebb479c2abfb1 /sbin/iked/policy.c
parentKill sysctl net.inet6.ip6.rr_prune (diff)
downloadwireguard-openbsd-19dc86382e9f3b3c46b2a0f08dd7b4e349686b5c.tar.xz
wireguard-openbsd-19dc86382e9f3b3c46b2a0f08dd7b4e349686b5c.zip
Implement a second address pool specifically for IPv6, so that
clients can be given an IPv4 and IPv6 address at the same time, thus enabling dual stack usage. ok markus@ mikeb@
Diffstat (limited to 'sbin/iked/policy.c')
-rw-r--r--sbin/iked/policy.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sbin/iked/policy.c b/sbin/iked/policy.c
index 0d82d787589..c9987f09e1f 100644
--- a/sbin/iked/policy.c
+++ b/sbin/iked/policy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: policy.c,v 1.41 2015/10/20 06:42:59 reyk Exp $ */
+/* $OpenBSD: policy.c,v 1.42 2016/06/01 11:16:41 patrick Exp $ */
/*
* Copyright (c) 2010-2013 Reyk Floeter <reyk@openbsd.org>
@@ -522,6 +522,13 @@ sa_addrpool_cmp(struct iked_sa *a, struct iked_sa *b)
(struct sockaddr *)&b->sa_addrpool->addr, -1));
}
+static __inline int
+sa_addrpool6_cmp(struct iked_sa *a, struct iked_sa *b)
+{
+ return (sockaddr_cmp((struct sockaddr *)&a->sa_addrpool6->addr,
+ (struct sockaddr *)&b->sa_addrpool6->addr, -1));
+}
+
struct iked_user *
user_lookup(struct iked *env, const char *user)
{
@@ -584,6 +591,7 @@ flow_cmp(struct iked_flow *a, struct iked_flow *b)
RB_GENERATE(iked_sas, iked_sa, sa_entry, sa_cmp);
RB_GENERATE(iked_addrpool, iked_sa, sa_addrpool_entry, sa_addrpool_cmp);
+RB_GENERATE(iked_addrpool6, iked_sa, sa_addrpool6_entry, sa_addrpool6_cmp);
RB_GENERATE(iked_users, iked_user, usr_entry, user_cmp);
RB_GENERATE(iked_activesas, iked_childsa, csa_node, childsa_cmp);
RB_GENERATE(iked_flows, iked_flow, flow_node, flow_cmp);