[ARP]: Introduce the arp_hdr_len helper.
There are some place, that calculate the ARP header length. These calculations are correct, but a) some operate with "magic" constants, b) enlarge the code length (sometimes at the cost of coding style), c) are not informative from the first glance. The proposal is to introduce a helper, that includes all the good sides of these calculations. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8ed7edce82
commit
988b705077
@ -570,14 +570,13 @@ struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,
|
||||
* Allocate a buffer
|
||||
*/
|
||||
|
||||
skb = alloc_skb(sizeof(struct arphdr)+ 2*(dev->addr_len+4)
|
||||
+ LL_RESERVED_SPACE(dev), GFP_ATOMIC);
|
||||
skb = alloc_skb(arp_hdr_len(dev) + LL_RESERVED_SPACE(dev), GFP_ATOMIC);
|
||||
if (skb == NULL)
|
||||
return NULL;
|
||||
|
||||
skb_reserve(skb, LL_RESERVED_SPACE(dev));
|
||||
skb_reset_network_header(skb);
|
||||
arp = (struct arphdr *) skb_put(skb,sizeof(struct arphdr) + 2*(dev->addr_len+4));
|
||||
arp = (struct arphdr *) skb_put(skb, arp_hdr_len(dev));
|
||||
skb->dev = dev;
|
||||
skb->protocol = htons(ETH_P_ARP);
|
||||
if (src_hw == NULL)
|
||||
@ -916,9 +915,7 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
goto freeskb;
|
||||
|
||||
/* ARP header, plus 2 device addresses, plus 2 IP addresses. */
|
||||
if (!pskb_may_pull(skb, (sizeof(struct arphdr) +
|
||||
(2 * dev->addr_len) +
|
||||
(2 * sizeof(u32)))))
|
||||
if (!pskb_may_pull(skb, arp_hdr_len(dev)))
|
||||
goto freeskb;
|
||||
|
||||
arp = arp_hdr(skb);
|
||||
|
Reference in New Issue
Block a user