|  | /** @file | 
|  | @brief Ethernet | 
|  |  | 
|  | This is not to be included by the application. | 
|  | */ | 
|  |  | 
|  | /* | 
|  | * Copyright (c) 2016 Intel Corporation | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #ifndef __ETHERNET_H | 
|  | #define __ETHERNET_H | 
|  |  | 
|  | #include <stdint.h> | 
|  | #include <stdbool.h> | 
|  |  | 
|  | #include <net/net_ip.h> | 
|  | #include <net/nbuf.h> | 
|  | #include <misc/util.h> | 
|  |  | 
|  | #define NET_ETH_BUF(buf) ((struct net_eth_hdr *)net_nbuf_ll(buf)) | 
|  |  | 
|  | #define NET_ETH_PTYPE_ARP		0x0806 | 
|  | #define NET_ETH_PTYPE_IP		0x0800 | 
|  | #define NET_ETH_PTYPE_IPV6		0x86dd | 
|  |  | 
|  | #define NET_ETH_MINIMAL_FRAME_SIZE	60 | 
|  |  | 
|  | struct net_eth_addr { | 
|  | uint8_t addr[6]; | 
|  | }; | 
|  |  | 
|  | struct net_eth_hdr { | 
|  | struct net_eth_addr dst; | 
|  | struct net_eth_addr src; | 
|  | uint16_t type; | 
|  | } __packed; | 
|  |  | 
|  | static inline bool net_eth_is_addr_broadcast(struct net_eth_addr *addr) | 
|  | { | 
|  | if (addr->addr[0] == 0xff && | 
|  | addr->addr[1] == 0xff && | 
|  | addr->addr[2] == 0xff && | 
|  | addr->addr[3] == 0xff && | 
|  | addr->addr[4] == 0xff && | 
|  | addr->addr[5] == 0xff) { | 
|  | return true; | 
|  | } | 
|  |  | 
|  | return false; | 
|  | } | 
|  |  | 
|  | static inline bool net_eth_is_addr_multicast(struct net_eth_addr *addr) | 
|  | { | 
|  | if (addr->addr[0] == 0x33 && | 
|  | addr->addr[1] == 0x33) { | 
|  | return true; | 
|  | } | 
|  |  | 
|  | return false; | 
|  | } | 
|  |  | 
|  | const struct net_eth_addr *net_eth_broadcast_addr(void); | 
|  |  | 
|  | #endif /* __ETHERNET_H */ |