SDK
23.9.2
For IoT System Software Development
|
Internet Protocol Version 6 Stack. More...
#include <IPv6.hpp>
Classes | |
struct | Header_t |
IPv6 Header. More... | |
struct | OptHeaderMPL_t |
MPL Option. More... | |
struct | OptHeaderRPL_t |
RPL Option Header for Carrying RPL Information in Data-Plane Datagrams. More... | |
struct | Reassembly_t |
struct | ReassemblyBuf_t |
struct | RecentDst_t |
class | Route |
class | RoutingEntry |
struct | TLVHeader_t |
IPv6 Options' TL (Type and Length) More... | |
Public Types | |
enum | { MAX_NUM_IP6_RSM = 1, MAX_NUM_IP6_DC = 3 } |
Public Member Functions | |
IPv6 (uint16_t nrt=0) | |
Initialize IPv6 functionality. More... | |
void | begin () |
Initialize the IPv6 network layer. | |
error_t | getRoutingEntry (uint16_t idx, IPv6Address *prefix, uint8_t *prefixLen, IPv6Interface **outInf) |
Get an IPv6 routing entry. More... | |
error_t | addRoute (const IPv6Address *prefix, uint8_t prefixLen, IPv6Interface &egressInf, const IPv6Address &nexthop) |
Add an IPv6 route to the main IPv6 routing table. More... | |
error_t | addRoute (const IPv6Address *prefix, uint8_t prefix_len, IPv6Interface &egressInterface, uint8_t nxhop) |
Static Public Member Functions | |
static uint16_t | PseudoHeaderChecksum (Header_t &ip6, IPv6PacketBuffer *upper) |
Public Attributes | |
const uint16_t | MAX_NUM_RT |
Size (number of entries) of the routing table. | |
IPv6Interface * | nic |
IPv6::Reassembly_t | rsm [MAX_NUM_IP6_RSM] |
RoutingEntry * | rt |
Route | defRoute |
IPv6::RecentDst_t | dc [MAX_NUM_IP6_DC] |
Timer | lifetime |
void(* | fwd_state_cleanup )(void) |
error_t(* | icmp6_recv_echo_reply )(IPv6Interface &input, IPv6::Header_t &ip6, IPv6PacketBuffer *icmp_pkt) |
void(* | ping_tick )(void) |
bool(* | rpl_opt_check )(OptHeaderRPL_t *ro, const IPv6::Header_t &ip6, IPv6Interface &input, uint8_t sender) |
error_t(* | rpl_recv_msg )(IPv6Interface &input, IPv6::Header_t &ip6, void *icmpv6Msg, uint16_t msg_len) |
bool(* | mpl_opt_check )(OptHeaderMPL_t *mo, IPv6PacketBuffer *ip6_pkt, IPv6Interface &input, uint8_t sender) |
error_t(* | mpl_recv_ctrl_msg )(IPv6Interface &input, IPv6::Header_t &ip6, void *msg, uint16_t msg_len) |
void(* | udp_input )(IPv6Interface &input, IPv6PacketBuffer *head, IPv6PacketBuffer *ippkt, IPv6PacketBuffer *udppkt) |
void(* | tcp_input )(uint8_t ip6_inf, IPv6PacketBuffer *head, IPv6PacketBuffer *ippkt, IPv6PacketBuffer *tcppkt, uint8_t sender) |
Internet Protocol Version 6 Stack.
IPv6::IPv6 | ( | uint16_t | nrt = 0 | ) |
error_t IPv6::addRoute | ( | const IPv6Address * | prefix, |
uint8_t | prefixLen, | ||
IPv6Interface & | egressInf, | ||
const IPv6Address & | nexthop | ||
) |
error_t IPv6::getRoutingEntry | ( | uint16_t | idx, |
IPv6Address * | prefix, | ||
uint8_t * | prefixLen, | ||
IPv6Interface ** | outInf | ||
) |
Get an IPv6 routing entry.
[in] | idx | Index of the routing table. If it is out of range of the table, the default entry will be returned. |
[out] | prefix | Pointer where the entry's prefix will be stored at. |
[out] | prefixLen | Pointer where the entry's prefix length will be stored at. |
[out] | out_inf | Pointer where the entry's output interface pointer will be stored at. |
idx
is not valid.