From 43644930511241f6cdff0f6fb66eb3a5302fdaa2 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Wed, 11 Mar 2015 18:26:07 +0100 Subject: [PATCH] ng_ethernet: intial import --- sys/include/net/ng_ethernet.h | 56 +++++++++++++++++++++++++++++++ sys/include/net/ng_ethernet/hdr.h | 49 +++++++++++++++++++++++++++ sys/include/net/ng_ethertype.h | 9 ++--- 3 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 sys/include/net/ng_ethernet.h create mode 100644 sys/include/net/ng_ethernet/hdr.h diff --git a/sys/include/net/ng_ethernet.h b/sys/include/net/ng_ethernet.h new file mode 100644 index 0000000000..7cef7730bc --- /dev/null +++ b/sys/include/net/ng_ethernet.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2015 Martine Lenders + * + * 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 + */ + + +#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 0000000000..9b8d36051d --- /dev/null +++ b/sys/include/net/ng_ethernet/hdr.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 Martine Lenders + * + * 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 + */ + + +#ifndef NG_ETHERNET_HDR_H_ +#define NG_ETHERNET_HDR_H_ + +#include + +#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 7d921df429..e46405e1ea 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 @@ -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 }