diff options
Diffstat (limited to 'net/can')
-rw-r--r-- | net/can/gw.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/can/gw.c b/net/can/gw.c index 574dda78eb0f..37a3efb7cc9d 100644 --- a/net/can/gw.c +++ b/net/can/gw.c | |||
@@ -52,6 +52,7 @@ | |||
52 | #include <linux/skbuff.h> | 52 | #include <linux/skbuff.h> |
53 | #include <linux/can.h> | 53 | #include <linux/can.h> |
54 | #include <linux/can/core.h> | 54 | #include <linux/can/core.h> |
55 | #include <linux/can/skb.h> | ||
55 | #include <linux/can/gw.h> | 56 | #include <linux/can/gw.h> |
56 | #include <net/rtnetlink.h> | 57 | #include <net/rtnetlink.h> |
57 | #include <net/net_namespace.h> | 58 | #include <net/net_namespace.h> |
@@ -347,6 +348,13 @@ static void can_can_gw_rcv(struct sk_buff *skb, void *data) | |||
347 | return; | 348 | return; |
348 | } | 349 | } |
349 | 350 | ||
351 | /* is sending the skb back to the incoming interface not allowed? */ | ||
352 | if (!(gwj->flags & CGW_FLAGS_CAN_IIF_TX_OK) && | ||
353 | skb_headroom(skb) == sizeof(struct can_skb_priv) && | ||
354 | (((struct can_skb_priv *)(skb->head))->ifindex == | ||
355 | gwj->dst.dev->ifindex)) | ||
356 | return; | ||
357 | |||
350 | /* | 358 | /* |
351 | * clone the given skb, which has not been done in can_rcv() | 359 | * clone the given skb, which has not been done in can_rcv() |
352 | * | 360 | * |