diff --git a/sys/include/net/ng_ethernet.h b/sys/include/net/ng_ethernet.h new file mode 100644 index 0000000000000000000000000000000000000000..7cef7730bc6633268e78b3e63ba8133eb87a134c --- /dev/null +++ b/sys/include/net/ng_ethernet.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de> + * + * This file is subject to the terms and conditions of the GNU Lesser General + * Public License v2.1. See the file LICENSE in the top level directory for + * more details. + */ + +/** + * @defgroup net_ng_ethernet Ethernet + * @ingroup net + * @brief Ethernet implementation + * @{ + * + * @file + * @brief Definitions for Ethernet + * + * @author Martine Lenders <mlenders@inf.fu-berlin.de> + */ + + +#ifndef NG_ETHERNET_H_ +#define NG_ETHERNET_H_ + +#include "net/ng_ethernet/hdr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define NG_ETHERNET_DATA_LEN (1500) /**< maximum number of bytes in payload */ +#define NG_ETHERNET_FCS_LEN (4) /**< number of bytes in the FCS + * (frame check sequence) */ + +/** + * @brief maximum number of bytes in an ethernet frame (without FCS) + */ +#define NG_ETHERNET_FRAME_LEN (NG_ETHERNET_DATA_LEN + \ + sizeof(ng_ethernet_hdr_t)) +#define NG_ETHERNET_MIN_LEN (64) /**< minimum number of bytes in an + * ethernet frame (with FCF) */ + +/** + * @brief maximum number of bytes in an ethernet frame (with FCF) + */ +#define NG_ETHERNET_MAX_LEN (NG_ETHERNET_FRAME_LEN + \ + NG_ETHERNET_FCS_LEN) + +#ifdef __cplusplus +} +#endif + +#endif /* NG_ETHERNET_H_ */ +/** + * @} + */ diff --git a/sys/include/net/ng_ethernet/hdr.h b/sys/include/net/ng_ethernet/hdr.h new file mode 100644 index 0000000000000000000000000000000000000000..9b8d36051d6c84ad7b2117fcd7931ba3edfb0278 --- /dev/null +++ b/sys/include/net/ng_ethernet/hdr.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de> + * + * This file is subject to the terms and conditions of the GNU Lesser General + * Public License v2.1. See the file LICENSE in the top level directory for + * more details. + */ + +/** + * @defgroup net_ng_ethernet_hdr Ethernet header + * @ingroup net_ng_ethernet + * @brief Ethernet header + * @{ + * + * @file + * @brief Ethernet header definitions + * + * @author Martine Lenders <mlenders@inf.fu-berlin.de> + */ + + +#ifndef NG_ETHERNET_HDR_H_ +#define NG_ETHERNET_HDR_H_ + +#include <inttypes.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define NG_ETHERNET_ADDR_LEN (6) /**< Length of an Ethernet address */ + +/** + * @brief Ethernet header + */ +typedef struct __attribute__((packed)) { + uint8_t dst[NG_ETHERNET_ADDR_LEN]; /**< destination address */ + uint8_t src[NG_ETHERNET_ADDR_LEN]; /**< source address */ + uint16_t type; /**< ether type (see @ref net_ng_ethertype) */ +} ng_ethernet_hdr_t; + +#ifdef __cplusplus +} +#endif + +#endif /* NG_ETHERNET_HDR_H_ */ +/** + * @} + */ diff --git a/sys/include/net/ng_ethertype.h b/sys/include/net/ng_ethertype.h index 7d921df429dd57d0e13826d4a07cb722f49d4480..e46405e1ea3b5c02a5f61dd67e251c761ffd8539 100644 --- a/sys/include/net/ng_ethertype.h +++ b/sys/include/net/ng_ethertype.h @@ -7,7 +7,7 @@ */ /** - * @defgroup net_ng_ethertype + * @defgroup net_ng_ethertype Ether types * @ingroup net * @brief Ether types * @see <a href="http://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml#ieee-802-numbers-1"> @@ -31,9 +31,10 @@ extern "C" { #endif /* expand at will ;-) */ -#define NG_ETHERTYPE_IPV4 (0x0800) /* Internet protocol version 4 */ -#define NG_ETHERTYPE_ARP (0x0806) /* Address resolution protocol */ -#define NG_ETHERTYPE_IPV6 (0x86dd) /* Internet protocol version 6 */ +#define NG_ETHERTYPE_RESERVED (0x0000) /**< Reserved */ +#define NG_ETHERTYPE_IPV4 (0x0800) /**< Internet protocol version 4 */ +#define NG_ETHERTYPE_ARP (0x0806) /**< Address resolution protocol */ +#define NG_ETHERTYPE_IPV6 (0x86dd) /**< Internet protocol version 6 */ #ifdef __cplusplus }