On Mon, May 06, 2013 at 11:31:00AM +0800, Marek Lindner wrote:
On Tuesday, April 23, 2013 22:34:34 Antonio Quartulli wrote:
/**
- batadv_dat_get_vid - extract the VLAN identifier from skb if any
- @skb: the buffer containing the packet to extract the VID from
- @hdr_size: the size of the batman-adv header encapsulating the packet
- If the packet contained in skb is vlan tagged then this function
returns the + * VID with the BATADV_VLAN_HAS_TAG flag. Otherwise returns BATADV_NO_FLAGS + */ +static unsigned short batadv_dat_get_vid(struct sk_buff *skb, int *hdr_size) +{
struct ethhdr *ethhdr;
struct vlan_ethhdr *vhdr;
unsigned short vid;
ethhdr = (struct ethhdr *)skb->data + *hdr_size;
if (ntohs(ethhdr->h_proto) != ETH_P_8021Q)
return BATADV_NO_FLAGS;
vhdr = (struct vlan_ethhdr *)ethhdr;
vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
vid |= BATADV_VLAN_HAS_TAG;
/* ARP parsing functions jump forward of hdr_size + ETH_HLEN.
* If the header contained in the packet is a VLAN one (which is
longer) + * hdr_size is updated so that the functions will still jump the + * correct amount of bytes
*/
*hdr_size += VLAN_HLEN;
return vid;
+}
This is a very useful function. Why do you make it DAT specific ? The other patches contain the same vid extraction code over and over again. It would make more sense if you added this function with your first patch and make everybody use it.
mh, I agree, I simply have to remove the last line (about hdr_size - this is DAT specific) and then I can export it. Ok. Actually I did not introduced this patch before, because most of the code to check for a VID was already in batman-adv and I simply extended it.
Anyhow, will do this in the next iteration.
Thanks