Repository : ssh://git@open-mesh.org/batman-adv
On branch : next
commit 7678d5d34e9c96b041c3509810cf03bc8740e526 Merge: 6639da5 1356028 Author: Marek Lindner mareklindner@neomailbox.ch Date: Wed Dec 25 22:12:00 2013 +0800
Merge branch 'maint' into next
Conflicts: soft-interface.c
7678d5d34e9c96b041c3509810cf03bc8740e526 soft-interface.c | 13 +++++-------- soft-interface.h | 16 ---------------- 2 files changed, 5 insertions(+), 24 deletions(-)
diff --cc soft-interface.c index 74f4630,08086cf..875a702 --- a/soft-interface.c +++ b/soft-interface.c @@@ -346,7 -324,11 +346,12 @@@ void batadv_interface_rx(struct net_dev skb_pull_rcsum(skb, hdr_size); skb_reset_mac_header(skb);
+ /* clean the netfilter state now that the batman-adv header has been + * removed + */ + nf_reset(skb); + + vid = batadv_get_vid(skb, hdr_size); ethhdr = eth_hdr(skb);
switch (ntohs(ethhdr->h_proto)) { @@@ -387,20 -371,11 +392,12 @@@
if (orig_node) batadv_tt_add_temporary_global_entry(bat_priv, orig_node, - ethhdr->h_source); + ethhdr->h_source, vid);
- if (batadv_is_ap_isolated(bat_priv, ethhdr->h_source, ethhdr->h_dest)) + if (batadv_is_ap_isolated(bat_priv, ethhdr->h_source, ethhdr->h_dest, + vid)) goto dropped;
- /* Clean the netfilter state before delivering the skb. - * This packet may have traversed a bridge when it was encapsulated into - * the batman header. Now that the header has been removed, the - * netfilter state must be cleaned up to avoid to mess up with a - * possible second bridge - */ - batadv_nf_bridge_skb_free(skb); - netif_rx(skb); goto out;
diff --cc soft-interface.h index 21b8573,2f2472c..06fc91f --- a/soft-interface.h +++ b/soft-interface.h @@@ -28,25 -28,5 +28,9 @@@ struct net_device *batadv_softif_create void batadv_softif_destroy_sysfs(struct net_device *soft_iface); int batadv_softif_is_valid(const struct net_device *net_dev); extern struct rtnl_link_ops batadv_link_ops; +int batadv_softif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid); +void batadv_softif_vlan_free_ref(struct batadv_softif_vlan *softif_vlan); +struct batadv_softif_vlan *batadv_softif_vlan_get(struct batadv_priv *bat_priv, + unsigned short vid);
- #ifdef CONFIG_BRIDGE_NETFILTER - /** - * batadv_nf_bridge_skb_free - clean the NF bridge data in an skb - * @skb: the skb which nf data has to be free'd - */ - static inline void batadv_nf_bridge_skb_free(struct sk_buff *skb) - { - nf_bridge_put(skb->nf_bridge); - skb->nf_bridge = NULL; - } - #else - static inline void batadv_nf_bridge_skb_free(struct sk_buff *skb) - { - } - #endif /* CONFIG_BRIDGE_NETFILTER */ - #endif /* _NET_BATMAN_ADV_SOFT_INTERFACE_H_ */