mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
![Thomas Gleixner](/assets/img/avatar_default.png)
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* INET An implementation of the TCP/IP protocol suite for the LINUX
|
|
* operating system. INET is implemented using the BSD Socket
|
|
* interface as the means of communication with the user level.
|
|
*
|
|
* Global definitions for the ARP (RFC 826) protocol.
|
|
*
|
|
* Version: @(#)if_arp.h 1.0.1 04/16/93
|
|
*
|
|
* Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
|
|
* Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
|
|
* Ross Biro
|
|
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
|
|
* Florian La Roche,
|
|
* Jonathan Layes <layes@loran.com>
|
|
* Arnaldo Carvalho de Melo <acme@conectiva.com.br> ARPHRD_HWX25
|
|
*/
|
|
#ifndef _LINUX_IF_ARP_H
|
|
#define _LINUX_IF_ARP_H
|
|
|
|
#include <linux/skbuff.h>
|
|
#include <uapi/linux/if_arp.h>
|
|
|
|
static inline struct arphdr *arp_hdr(const struct sk_buff *skb)
|
|
{
|
|
return (struct arphdr *)skb_network_header(skb);
|
|
}
|
|
|
|
static inline unsigned int arp_hdr_len(const struct net_device *dev)
|
|
{
|
|
switch (dev->type) {
|
|
#if IS_ENABLED(CONFIG_FIREWIRE_NET)
|
|
case ARPHRD_IEEE1394:
|
|
/* ARP header, device address and 2 IP addresses */
|
|
return sizeof(struct arphdr) + dev->addr_len + sizeof(u32) * 2;
|
|
#endif
|
|
default:
|
|
/* ARP header, plus 2 device addresses, plus 2 IP addresses. */
|
|
return sizeof(struct arphdr) + (dev->addr_len + sizeof(u32)) * 2;
|
|
}
|
|
}
|
|
|
|
static inline bool dev_is_mac_header_xmit(const struct net_device *dev)
|
|
{
|
|
switch (dev->type) {
|
|
case ARPHRD_TUNNEL:
|
|
case ARPHRD_TUNNEL6:
|
|
case ARPHRD_SIT:
|
|
case ARPHRD_IPGRE:
|
|
case ARPHRD_VOID:
|
|
case ARPHRD_NONE:
|
|
case ARPHRD_RAWIP:
|
|
return false;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
#endif /* _LINUX_IF_ARP_H */
|