/* * 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_ipv6_ext IPv6 extension headers. * @ingroup net_ng_ipv6 * @brief Implementation of IPv6 extension headers * @see * RFC 2460, section 4 * * @{ * * @file * @brief Definititions for IPv6 extension headers * * @author Martine Lenders */ #ifndef NG_IPV6_EXT_H_ #define NG_IPV6_EXT_H_ #include #include #include #include "kernel_types.h" #include "net/ng_pkt.h" #include "net/ipv6/ext.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Demultiplex extension headers according to @p nh. * * @internal * * @param[in] iface The receiving interface. * @param[in] pkt A packet. * @param[in] nh A protocol number (see @ref net_protnum). * * @return true, on success. * @return false, on failure. */ bool ng_ipv6_ext_demux(kernel_pid_t iface, ng_pktsnip_t *pkt, uint8_t nh); /** * @brief Builds an extension header for sending. * * @param[in] ipv6 The IPv6 header. Can be NULL. * @param[in] next The next header. Must be a successor to @p ipv6 if it is * not NULL. * @param[in] nh @ref net_protnum of the next header. * @param[in] size Size of the extension header. * * @return The extension header on success. * @return NULL, on error. */ ng_pktsnip_t *ng_ipv6_ext_build(ng_pktsnip_t *ipv6, ng_pktsnip_t *next, uint8_t nh, size_t size); #ifdef __cplusplus } #endif #endif /* NG_IPV6_EXT_H_ */ /** * @} */