|
@@ -3445,6 +3445,7 @@ set_compat:
|
|
|
to->tunnel_id = be64_to_cpu(info->key.tun_id);
|
|
|
to->tunnel_tos = info->key.tos;
|
|
|
to->tunnel_ttl = info->key.ttl;
|
|
|
+ to->tunnel_ext = 0;
|
|
|
|
|
|
if (flags & BPF_F_TUNINFO_IPV6) {
|
|
|
memcpy(to->remote_ipv6, &info->key.u.ipv6.src,
|
|
@@ -3452,6 +3453,8 @@ set_compat:
|
|
|
to->tunnel_label = be32_to_cpu(info->key.label);
|
|
|
} else {
|
|
|
to->remote_ipv4 = be32_to_cpu(info->key.u.ipv4.src);
|
|
|
+ memset(&to->remote_ipv6[1], 0, sizeof(__u32) * 3);
|
|
|
+ to->tunnel_label = 0;
|
|
|
}
|
|
|
|
|
|
if (unlikely(size != sizeof(struct bpf_tunnel_key)))
|
|
@@ -4047,11 +4050,14 @@ BPF_CALL_5(bpf_skb_get_xfrm_state, struct sk_buff *, skb, u32, index,
|
|
|
to->reqid = x->props.reqid;
|
|
|
to->spi = x->id.spi;
|
|
|
to->family = x->props.family;
|
|
|
+ to->ext = 0;
|
|
|
+
|
|
|
if (to->family == AF_INET6) {
|
|
|
memcpy(to->remote_ipv6, x->props.saddr.a6,
|
|
|
sizeof(to->remote_ipv6));
|
|
|
} else {
|
|
|
to->remote_ipv4 = x->props.saddr.a4;
|
|
|
+ memset(&to->remote_ipv6[1], 0, sizeof(__u32) * 3);
|
|
|
}
|
|
|
|
|
|
return 0;
|