1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * INET An implementation of the TCP/IP protocol suite for the LINUX |
4 | * operating system. INET is implemented using the BSD Socket |
5 | * interface as the means of communication with the user level. |
6 | * |
7 | * Global definitions for the Ethernet IEEE 802.3 interface. |
8 | * |
9 | * Version: @(#)if_ether.h 1.0.1a 02/08/94 |
10 | * |
11 | * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> |
12 | * Donald Becker, <becker@super.org> |
13 | * Alan Cox, <alan@lxorguk.ukuu.org.uk> |
14 | * Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk> |
15 | */ |
16 | #ifndef _LINUX_IF_ETHER_H |
17 | #define _LINUX_IF_ETHER_H |
18 | |
19 | #include <linux/skbuff.h> |
20 | #include <uapi/linux/if_ether.h> |
21 | |
22 | static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) |
23 | { |
24 | return (struct ethhdr *)skb_mac_header(skb); |
25 | } |
26 | |
27 | /* Prefer this version in TX path, instead of |
28 | * skb_reset_mac_header() + eth_hdr() |
29 | */ |
30 | static inline struct ethhdr *skb_eth_hdr(const struct sk_buff *skb) |
31 | { |
32 | return (struct ethhdr *)skb->data; |
33 | } |
34 | |
35 | static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) |
36 | { |
37 | return (struct ethhdr *)skb_inner_mac_header(skb); |
38 | } |
39 | |
40 | int (const struct sk_buff *skb, unsigned char *haddr); |
41 | |
42 | extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); |
43 | |
44 | #endif /* _LINUX_IF_ETHER_H */ |
45 | |