if_ether.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. #include <linux/skbuff.h>
  19. #include <uapi/linux/if_ether.h>
  20. static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
  21. {
  22. return (struct ethhdr *)skb_mac_header(skb);
  23. }
  24. /* Prefer this version in TX path, instead of
  25. * skb_reset_mac_header() + eth_hdr()
  26. */
  27. static inline struct ethhdr *skb_eth_hdr(const struct sk_buff *skb)
  28. {
  29. return (struct ethhdr *)skb->data;
  30. }
  31. static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb)
  32. {
  33. return (struct ethhdr *)skb_inner_mac_header(skb);
  34. }
  35. int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
  36. extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len);
  37. #endif /* _LINUX_IF_ETHER_H */