gtp: pass up link local traffic to userspace socket

According to TS 29.061, it is possible to see IPv6 link-local traffic in
the GTP tunnel, see 11.2.1.3.2 IPv6 Stateless Address Autoconfiguration
(IPv6 SLAAC).

Pass up these packets to the userspace daemon to handle them as control
GTP traffic.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Pablo Neira Ayuso 2024-05-07 01:12:36 +02:00
parent c6461ec97b
commit e4f88f7381

View File

@ -251,6 +251,10 @@ static bool gtp_check_ms_ipv6(struct sk_buff *skb, struct pdp_ctx *pctx,
ip6h = (struct ipv6hdr *)(skb->data + hdrlen);
if ((ipv6_addr_type(&ip6h->saddr) & IPV6_ADDR_LINKLOCAL) ||
(ipv6_addr_type(&ip6h->daddr) & IPV6_ADDR_LINKLOCAL))
return false;
if (role == GTP_ROLE_SGSN) {
ret = ipv6_pdp_addr_equal(&ip6h->daddr, &pctx->ms.addr6);
} else {