diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-10-06 06:28:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-18 23:22:07 -0400 |
commit | bc416d9768aa9a2e46eb11354a9c58399dafeb01 (patch) | |
tree | a3ecf948353d11d199dfb64b0c4302c5b4aaccb6 /include/net/ip.h | |
parent | f7ba35da583cf6aefba887a8dcf86acec4f3a350 (diff) |
macvlan: handle fragmented multicast frames
Fragmented multicast frames are delivered to a single macvlan port,
because ip defrag logic considers other samples are redundant.
Implement a defrag step before trying to send the multicast frame.
Reported-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ip.h')
-rw-r--r-- | include/net/ip.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/net/ip.h b/include/net/ip.h index aa76c7a4d9c3..c7e066a1c611 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -406,9 +406,18 @@ enum ip_defrag_users { | |||
406 | IP_DEFRAG_VS_OUT, | 406 | IP_DEFRAG_VS_OUT, |
407 | IP_DEFRAG_VS_FWD, | 407 | IP_DEFRAG_VS_FWD, |
408 | IP_DEFRAG_AF_PACKET, | 408 | IP_DEFRAG_AF_PACKET, |
409 | IP_DEFRAG_MACVLAN, | ||
409 | }; | 410 | }; |
410 | 411 | ||
411 | int ip_defrag(struct sk_buff *skb, u32 user); | 412 | int ip_defrag(struct sk_buff *skb, u32 user); |
413 | #ifdef CONFIG_INET | ||
414 | struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user); | ||
415 | #else | ||
416 | static inline struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user) | ||
417 | { | ||
418 | return skb; | ||
419 | } | ||
420 | #endif | ||
412 | int ip_frag_mem(struct net *net); | 421 | int ip_frag_mem(struct net *net); |
413 | int ip_frag_nqueues(struct net *net); | 422 | int ip_frag_nqueues(struct net *net); |
414 | 423 | ||