Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae2f7c84 authored by Sasha Levin's avatar Sasha Levin Committed by Greg Kroah-Hartman
Browse files

Revert "vrf: mark skb for multicast or link-local as enslaved to VRF"



This reverts commit 91c5f99d.

This patch shouldn't have been backported to 4.19.

Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 17a8ca79
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -993,23 +993,24 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
				   struct sk_buff *skb)
{
	int orig_iif = skb->skb_iif;
	bool need_strict = rt6_need_strict(&ipv6_hdr(skb)->daddr);
	bool is_ndisc = ipv6_ndisc_frame(skb);
	bool need_strict;

	/* loopback, multicast & non-ND link-local traffic; do not push through
	 * packet taps again. Reset pkt_type for upper layers to process skb
	/* loopback traffic; do not push through packet taps again.
	 * Reset pkt_type for upper layers to process skb
	 */
	if (skb->pkt_type == PACKET_LOOPBACK || (need_strict && !is_ndisc)) {
	if (skb->pkt_type == PACKET_LOOPBACK) {
		skb->dev = vrf_dev;
		skb->skb_iif = vrf_dev->ifindex;
		IP6CB(skb)->flags |= IP6SKB_L3SLAVE;
		if (skb->pkt_type == PACKET_LOOPBACK)
		skb->pkt_type = PACKET_HOST;
		goto out;
	}

	/* if packet is NDISC then keep the ingress interface */
	if (!is_ndisc) {
	/* if packet is NDISC or addressed to multicast or link-local
	 * then keep the ingress interface
	 */
	need_strict = rt6_need_strict(&ipv6_hdr(skb)->daddr);
	if (!ipv6_ndisc_frame(skb) && !need_strict) {
		vrf_rx_stats(vrf_dev, skb->len);
		skb->dev = vrf_dev;
		skb->skb_iif = vrf_dev->ifindex;