vti: don't allow to add the same tunnel twice
[cascardo/linux.git] / net / batman-adv / gateway_client.c
index 55cf226..c835e13 100644 (file)
@@ -389,8 +389,6 @@ out:
                batadv_neigh_ifinfo_free_ref(router_gw_tq);
        if (router_orig_tq)
                batadv_neigh_ifinfo_free_ref(router_orig_tq);
-
-       return;
 }
 
 /**
@@ -680,7 +678,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
        if (!pskb_may_pull(skb, *header_len + ETH_HLEN))
                return BATADV_DHCP_NO;
 
-       ethhdr = (struct ethhdr *)skb->data;
+       ethhdr = eth_hdr(skb);
        proto = ethhdr->h_proto;
        *header_len += ETH_HLEN;
 
@@ -689,7 +687,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
                if (!pskb_may_pull(skb, *header_len + VLAN_HLEN))
                        return BATADV_DHCP_NO;
 
-               vhdr = (struct vlan_ethhdr *)skb->data;
+               vhdr = vlan_eth_hdr(skb);
                proto = vhdr->h_vlan_encapsulated_proto;
                *header_len += VLAN_HLEN;
        }
@@ -728,7 +726,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
                return BATADV_DHCP_NO;
 
        /* skb->data might have been reallocated by pskb_may_pull() */
-       ethhdr = (struct ethhdr *)skb->data;
+       ethhdr = eth_hdr(skb);
        if (ntohs(ethhdr->h_proto) == ETH_P_8021Q)
                ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
 
@@ -765,7 +763,7 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
                if (*p != ETH_ALEN)
                        return BATADV_DHCP_NO;
 
-               memcpy(chaddr, skb->data + chaddr_offset, ETH_ALEN);
+               ether_addr_copy(chaddr, skb->data + chaddr_offset);
        }
 
        return ret;