diff --git a/sys/include/net/ppp/hdr.h b/sys/include/net/ppp/hdr.h new file mode 100644 index 0000000000..0f1a84a96e --- /dev/null +++ b/sys/include/net/ppp/hdr.h @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2016 José Ignacio Alamos + * + * 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_ppp Header + * @ingroup net_ppp_hdr + * @brief PPP header abstraction type and helper functions + * @{ + * + * @file + * @brief General definitions for PPP header and their helper functions + * + * @author José Ignacio Alamos + */ + +#ifndef PPP_HDR_H_ +#define PPP_HDR_H_ + +#include + +#include "byteorder.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * @brief Header of a PPP packet + * @details A PPP packet is transmited as a payload of an HDLC packet. PPP packets only carry information about control protocol + * of a PPP stack (Link Control Protocol, IP Control Protocol, etc). IP packets encapsulated in HDLC frame are not + * considered PPP packet. + * + * The format of PPP header plus payload is: + * + * + * 0 1 2 3 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Code | Identifier | Length | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Payload ... + * +-+-+-+-+ + * + * + * @see + * RFC 1661, section 5 + * + */ +/* PPP pkt header struct */ +typedef struct __attribute__((packed)){ + uint8_t code; /**< Code of PPP packet*/ + uint8_t id; /**< Identifier PPP of packet*/ + network_uint16_t length; /**< Length of PPP packet including payload*/ +} ppp_hdr_t; + +#ifdef __cplusplus +} +#endif + +#endif /* PPP_HDR_H_ */ +/** @} */ diff --git a/sys/include/net/ppptype.h b/sys/include/net/ppptype.h new file mode 100644 index 0000000000..243de220b2 --- /dev/null +++ b/sys/include/net/ppptype.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2016 José Ignacio Alamos + * + * 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_ppptypes PPP types + * @ingroup net + * @brief PPP types + + * @note Last Updated: 2016-02-04 + * @{ + * + * @file + * @brief PPP type definitions + * + * @author José Ignacio Alamos + * @see + * IANA, PPP NUMBERS + * + */ + + +#ifndef PPPTYPE_H_ +#define PPPTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +#define PPPTYPE_IPV6 (0x0057) /**< IPv6 packet in PPP*/ +#define PPPTYPE_IPV4 (0x0021) /**< IPv4 packet in PPP */ +#define PPPTYPE_NCP_IPV6 (0x8057) /**< NCP packet for IPV6*/ +#define PPPTYPE_NCP_IPV4 (0x8021) /**< NCP packet for IPv4*/ +#define PPPTYPE_LCP (0xC021) /**< LCP packet */ +#define PPPTYPE_PAP (0xC023) /**< PAP packet */ +#define PPPTYPE_UNKNOWN (0x8001) /**