Message ID | 1299313794-5218-2-git-send-email-jpirko@redhat.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Sat, Mar 5, 2011 at 4:29 PM, Jiri Pirko <jpirko@redhat.com> wrote: > Since skb_iif has the desired value (ifindex of physical device actually > received the traffic) use that instead. > It isn't true for the packets returned from a ifb pseudo NIC. f.e.: eth0 -(redirect)-> ifb0 -> skb->skb_iff is ifb0->ifindex. orig_dev = skb->dev = eth0. However, these packets aren't processed by af_packet, so there isn't any problem. Reviewed-by: Changli Gao <xiaosuo@gmail.com>
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 5efef5b..b34294e 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -627,7 +627,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, sll->sll_protocol = skb->protocol; sll->sll_pkttype = skb->pkt_type; if (unlikely(po->origdev)) - sll->sll_ifindex = orig_dev->ifindex; + sll->sll_ifindex = skb->skb_iif; else sll->sll_ifindex = dev->ifindex; @@ -812,7 +812,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, sll->sll_protocol = skb->protocol; sll->sll_pkttype = skb->pkt_type; if (unlikely(po->origdev)) - sll->sll_ifindex = orig_dev->ifindex; + sll->sll_ifindex = skb->skb_iif; else sll->sll_ifindex = dev->ifindex;
Since skb_iif has the desired value (ifindex of physical device actually received the traffic) use that instead. Signed-off-by: Jiri Pirko <jpirko@redhat.com> --- net/packet/af_packet.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)