|
Nol.A SDK Library
25.8.1
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.