diff mbox

[net-next-2.6,1/8] af_packet: use skb->skb_iif instead of orig_dev->ifindex

Message ID 1299313794-5218-2-git-send-email-jpirko@redhat.com
State Superseded, archived
Delegated to: David Miller
Headers show

Commit Message

Jiri Pirko March 5, 2011, 8:29 a.m. UTC
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(-)

Comments

Changli Gao March 5, 2011, 4:34 p.m. UTC | #1
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 mbox

Patch

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;