seg6: allow local packet processing for SRv6 End.DT6 behavior
authorAndrea Mayer <andrea.mayer@uniroma2.it>
Fri, 22 Nov 2019 16:22:42 +0000 (17:22 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Nov 2019 17:45:55 +0000 (09:45 -0800)
commitfd1fef0c453df60921472008f436189ed351f9e2
treed64a8d19044095168dc252356103ad9166cdbb45
parentd1746d1e80a86ca86b0c2680510898d411d2ef47
seg6: allow local packet processing for SRv6 End.DT6 behavior

End.DT6 behavior makes use of seg6_lookup_nexthop() function which drops
all packets that are destined to be locally processed. However, DT* should
be able to deliver decapsulated packets that are destined to local
addresses. Function seg6_lookup_nexthop() is also used by DX6, so in order
to maintain compatibility I created another routing helper function which
is called seg6_lookup_any_nexthop(). This function is able to take into
account both packets that have to be processed locally and the ones that
are destined to be forwarded directly to another machine. Hence,
seg6_lookup_any_nexthop() is used in DT6 rather than seg6_lookup_nexthop()
to allow local delivery.

Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/seg6_local.c