|
@@ -5,9 +5,8 @@
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
#include <linux/netfilter.h>
|
|
#include <linux/netfilter.h>
|
|
|
-#if defined(__KERNEL__) && defined(CONFIG_BRIDGE_NETFILTER)
|
|
|
|
|
#include <linux/if_ether.h>
|
|
#include <linux/if_ether.h>
|
|
|
-#endif
|
|
|
|
|
|
|
+#include <linux/if_vlan.h>
|
|
|
|
|
|
|
|
/* Bridge Hooks */
|
|
/* Bridge Hooks */
|
|
|
/* After promisc drops, checksum checks. */
|
|
/* After promisc drops, checksum checks. */
|
|
@@ -57,16 +56,10 @@ static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb)
|
|
|
|
|
|
|
|
/* This is called by the IP fragmenting code and it ensures there is
|
|
/* This is called by the IP fragmenting code and it ensures there is
|
|
|
* enough room for the encapsulating header (if there is one). */
|
|
* enough room for the encapsulating header (if there is one). */
|
|
|
-static inline
|
|
|
|
|
-int nf_bridge_pad(struct sk_buff *skb)
|
|
|
|
|
|
|
+static inline int nf_bridge_pad(const struct sk_buff *skb)
|
|
|
{
|
|
{
|
|
|
- if (skb->protocol == __constant_htons(ETH_P_IP))
|
|
|
|
|
- return 0;
|
|
|
|
|
- if (skb->nf_bridge) {
|
|
|
|
|
- if (skb->protocol == __constant_htons(ETH_P_8021Q))
|
|
|
|
|
- return 4;
|
|
|
|
|
- }
|
|
|
|
|
- return 0;
|
|
|
|
|
|
|
+ return (skb->nf_bridge && skb->protocol == htons(ETH_P_8021Q))
|
|
|
|
|
+ ? VLAN_HLEN : 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
struct bridge_skb_cb {
|
|
struct bridge_skb_cb {
|
|
@@ -78,6 +71,7 @@ struct bridge_skb_cb {
|
|
|
extern int brnf_deferred_hooks;
|
|
extern int brnf_deferred_hooks;
|
|
|
#else
|
|
#else
|
|
|
#define nf_bridge_maybe_copy_header(skb) (0)
|
|
#define nf_bridge_maybe_copy_header(skb) (0)
|
|
|
|
|
+#define nf_bridge_pad(skb) (0)
|
|
|
#endif /* CONFIG_BRIDGE_NETFILTER */
|
|
#endif /* CONFIG_BRIDGE_NETFILTER */
|
|
|
|
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* __KERNEL__ */
|