summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Leblond <eric@inl.fr>2008-06-02 02:02:09 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2008-06-02 02:02:09 +0200
commitbffb313f5bddf51c086d3250b2b2359c4fe4892e (patch)
treee3e8befc6523449cfb174aa9609ea8c27827501f
parentbefdab96b2040fc2bf65d5837378b8ceb33c1b2a (diff)
Source and destination addresses were put in ptr field of the target structure
instead of being put in the new type ui128. The result was an improper value of the IPv6 source add destination addresses.
-rw-r--r--filter/raw2packet/ulogd_raw2packet_BASE.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/filter/raw2packet/ulogd_raw2packet_BASE.c b/filter/raw2packet/ulogd_raw2packet_BASE.c
index b1f4113..a5312e4 100644
--- a/filter/raw2packet/ulogd_raw2packet_BASE.c
+++ b/filter/raw2packet/ulogd_raw2packet_BASE.c
@@ -769,9 +769,11 @@ static int _interp_ipv6hdr(struct ulogd_pluginstance *pi, u_int32_t len)
if (len < sizeof(struct ip6_hdr))
return 0;
- ret[KEY_IP_SADDR].u.value.ptr = &ipv6h->ip6_src;
+ memcpy(ret[KEY_IP_SADDR].u.value.ui128, &ipv6h->ip6_src,
+ sizeof(ipv6h->ip6_src));
ret[KEY_IP_SADDR].flags |= ULOGD_RETF_VALID;
- ret[KEY_IP_DADDR].u.value.ptr = &ipv6h->ip6_dst;
+ memcpy(ret[KEY_IP_DADDR].u.value.ui128, &ipv6h->ip6_dst,
+ sizeof(ipv6h->ip6_dst));
ret[KEY_IP_DADDR].flags |= ULOGD_RETF_VALID;
ret[KEY_IP6_PAYLOAD_LEN].u.value.ui16 = ntohs(ipv6h->ip6_plen);
ret[KEY_IP6_PAYLOAD_LEN].flags |= ULOGD_RETF_VALID;