From 73ad642ba462d0992e1903012eee4ebfec89ed69 Mon Sep 17 00:00:00 2001 From: Arturo Borrero Date: Wed, 18 May 2016 10:56:36 +0200 Subject: src: add support for IPv6 NAT The conntrackd daemon lacks support for syncing IPv6 NATed connections. This patch adds support for managing the IPv6 part of struct __nfct_nat, also updating the corresponsing symbols. Signed-off-by: Arturo Borrero Gonzalez Signed-off-by: Pablo Neira Ayuso --- src/conntrack/setter.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/conntrack/setter.c') diff --git a/src/conntrack/setter.c b/src/conntrack/setter.c index e103646..75ab09e 100644 --- a/src/conntrack/setter.c +++ b/src/conntrack/setter.c @@ -246,6 +246,20 @@ set_attr_dnat_ipv4(struct nf_conntrack *ct, const void *value, size_t len) ct->dnat.min_ip.v4 = ct->dnat.max_ip.v4 = *((uint32_t *) value); } +static void +set_attr_snat_ipv6(struct nf_conntrack *ct, const void *value, size_t len) +{ + memcpy(&ct->snat.min_ip.v6, value, sizeof(struct in6_addr)); + memcpy(&ct->snat.max_ip.v6, value, sizeof(struct in6_addr)); +} + +static void +set_attr_dnat_ipv6(struct nf_conntrack *ct, const void *value, size_t len) +{ + memcpy(&ct->dnat.min_ip.v6, value, sizeof(struct in6_addr)); + memcpy(&ct->dnat.max_ip.v6, value, sizeof(struct in6_addr)); +} + static void set_attr_snat_port(struct nf_conntrack *ct, const void *value, size_t len) { @@ -527,4 +541,6 @@ const set_attr set_attr_array[ATTR_MAX] = { [ATTR_HELPER_INFO] = set_attr_helper_info, [ATTR_CONNLABELS] = set_attr_connlabels, [ATTR_CONNLABELS_MASK] = set_attr_connlabels_mask, + [ATTR_SNAT_IPV6] = set_attr_snat_ipv6, + [ATTR_DNAT_IPV6] = set_attr_dnat_ipv6, }; -- cgit v1.2.3