Staging: batman-adv: best gw DHCP filter 802.1Q support
authorMarek Lindner <lindner_marek@yahoo.de>
Sun, 21 Nov 2010 23:56:04 +0000 (00:56 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Nov 2010 19:09:14 +0000 (11:09 -0800)
The DHCP filter inspects packets to determine whether or not to send
them via ethernet unicast. This patch adds 802.1Q (vlan) support for
this check.

Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
[sven.eckelmann@gmx.de: Rework on top of current version]
Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/gateway_client.c

index 3d4e109..fde1d8a 100644 (file)
@@ -415,6 +415,14 @@ int gw_is_target(struct bat_priv *bat_priv, struct sk_buff *skb)
        ethhdr = (struct ethhdr *)skb->data;
        header_len += ETH_HLEN;
 
+       /* check for initial vlan header */
+       if (ntohs(ethhdr->h_proto) == ETH_P_8021Q) {
+               if (!pskb_may_pull(skb, header_len + VLAN_HLEN))
+                       return 0;
+               ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
+               header_len += VLAN_HLEN;
+       }
+
        /* check for ip header */
        if (ntohs(ethhdr->h_proto) != ETH_P_IP)
                return 0;