VIDEOS 》 Linux Kernel struct ethhdr data-structure

For more details refer Linux Kernel Source:
struct ethhdr - http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/if_ether.h#L145
eth_hdr() API - http://elixir.free-electrons.com/linux/latest/source/include/linux/if_ether.h#L26
skb_mac_header() API - http://elixir.free-electrons.com/linux/latest/source/include/linux/skbuff.h#L2215
QUICK LINKS for students and advance developers:
Linux Kernel Network stack and architecture - http://the-linux-channel.the-toffee-project.org/index.php?page=3-links-linux-kernel-network-stack-and-architecture
Videos related to protocol header data-structures:
struct iphdr - http://the-linux-channel.the-toffee-project.org/index.php?page=48-videos-linux-kernel-struct-iphdr-data-structure
struct tcphdr - http://the-linux-channel.the-toffee-project.org/index.php?page=50-videos-linux-kernel-struct-tcphdr-data-structure
struct udphdr - http://the-linux-channel.the-toffee-project.org/index.php?page=49-videos-linux-kernel-struct-udphdr-data-structure

And here is the copy paste of struct ethhdr data-structure (/include/uapi/linux/if_ether.h) from the Kernel-source version 4.13 for quick reference:

 *	This is an Ethernet frame header.

struct ethhdr {
	unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
	unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
	__be16		h_proto;		/* packet type ID field	*/
} __attribute__((packed));

Where these are the various Ethernet Header related constants, which are defined in the same file (/include/uapi/linux/if_ether.h) from the Kernel-source version 4.13 for quick reference:

 *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
 *	and FCS/CRC (frame check sequence).

#define ETH_ALEN	6		/* Octets in one ethernet addr	 */
#define ETH_HLEN	14		/* Total octets in header.	 */
#define ETH_ZLEN	60		/* Min. octets in frame sans FCS */
#define ETH_DATA_LEN	1500		/* Max. octets in payload	 */
#define ETH_FRAME_LEN	1514		/* Max. octets in frame sans FCS */
#define ETH_FCS_LEN	4		/* Octets in the FCS		 */

#define ETH_MIN_MTU	68		/* Min IPv4 MTU per RFC791	*/
#define ETH_MAX_MTU	0xFFFFU		/* 65535, same as IP_MAX_MTU	*/

Suggested Topics:

Video Episodes :: Linux Kernel programming

Join The Linux Channel :: Facebook Group ↗

Visit The Linux Channel :: on Youtube ↗

Join a course:

💎 Linux, Kernel, Networking and Device Drivers: PDF Brochure
💎 PhD or equivalent (or Post Doctoral) looking for assistance: Details
💎 ... or unlimited life-time mentorship: Details

💗 Help shape the future: Sponsor/Donate

Recommended Topics:
Featured Video:
Watch on Youtube - [17217/0] 314 Linux Kernel Programming - Device Drivers - The Big Picture ↗

Quagga Routing Suite - OSPF, RIP, RIPng BGP4 | GNU Zebra fork | ZebOS ↗
Monday' 01-Jun-2020
GNU Zebra is one of the oldest open-source Dynamic Routing Protocol suite stack developed by Kunihiro Ishiguro. Zebra supports features such as RIPv1/RIPv2 for IPv4 and RIPng for IPv6, OSPFv2 and OSPFv3, BGPv4+ and so on. Zebra is an active project for many years. After many years of active support Zebra is discontinued, and sometime down the lane a new fork is created from Zebra called Quagga which is now maintained by a separate independent open-source community. Quagga is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by Kunihiro Ishiguro. The Quagga architecture consists of a core daemon, zebra, which acts as an abstraction layer to the underlying Unix kernel and presents the Zserv API over a Unix or TCP stream to Quagga clients.

Trending Video:
Watch on Youtube - [170/0] 159 Q&A - How to spoof (or change) your port MAC Address in Linux ↗

Recommended Video:
Watch on Youtube - [439/0] 290 - Q&A - Career in Systems Programming and C programming ↗