40 #ifndef UIP_DS6_ROUTE_H 41 #define UIP_DS6_ROUTE_H 44 #include "net/nbr-table.h" 48 #ifdef UIP_CONF_MAX_ROUTES 50 #define UIP_MAX_ROUTES UIP_CONF_MAX_ROUTES 54 #if ROUTING_CONF_RPL_LITE 55 #define UIP_MAX_ROUTES 0 56 #elif ROUTING_CONF_RPL_CLASSIC 58 #include "net/routing/rpl-classic/rpl-conf.h" 60 #define UIP_MAX_ROUTES NETSTACK_MAX_ROUTE_ENTRIES 62 #define UIP_MAX_ROUTES 0 66 #define UIP_MAX_ROUTES NETSTACK_MAX_ROUTE_ENTRIES 71 NBR_TABLE_DECLARE(nbr_routes);
73 void uip_ds6_route_init(
void);
75 #ifndef UIP_CONF_UIP_DS6_NOTIFICATIONS 76 #define UIP_DS6_NOTIFICATIONS (UIP_MAX_ROUTES != 0) 78 #define UIP_DS6_NOTIFICATIONS UIP_CONF_UIP_DS6_NOTIFICATIONS 81 #if UIP_DS6_NOTIFICATIONS 86 #define UIP_DS6_NOTIFICATION_DEFRT_ADD 0 87 #define UIP_DS6_NOTIFICATION_DEFRT_RM 1 88 #define UIP_DS6_NOTIFICATION_ROUTE_ADD 2 89 #define UIP_DS6_NOTIFICATION_ROUTE_RM 3 91 typedef void (* uip_ds6_notification_callback)(
int event,
92 const uip_ipaddr_t *route,
93 const uip_ipaddr_t *nexthop,
95 struct uip_ds6_notification {
96 struct uip_ds6_notification *next;
97 uip_ds6_notification_callback callback;
100 void uip_ds6_notification_add(
struct uip_ds6_notification *n,
101 uip_ds6_notification_callback c);
103 void uip_ds6_notification_rm(
struct uip_ds6_notification *n);
108 #ifdef UIP_MAX_ROUTES 109 #define UIP_DS6_ROUTE_NB UIP_MAX_ROUTES 111 #define UIP_DS6_ROUTE_NB 4 116 #ifndef UIP_DS6_ROUTE_STATE_TYPE 117 #define UIP_DS6_ROUTE_STATE_TYPE rpl_route_entry_t 119 #define RPL_ROUTE_ENTRY_NOPATH_RECEIVED 0x01 120 #define RPL_ROUTE_ENTRY_DAO_PENDING 0x02 121 #define RPL_ROUTE_ENTRY_DAO_NACK 0x04 123 #define RPL_ROUTE_IS_NOPATH_RECEIVED(route) \ 124 (((route)->state.state_flags & RPL_ROUTE_ENTRY_NOPATH_RECEIVED) != 0) 125 #define RPL_ROUTE_SET_NOPATH_RECEIVED(route) do { \ 126 (route)->state.state_flags |= RPL_ROUTE_ENTRY_NOPATH_RECEIVED; \ 128 #define RPL_ROUTE_CLEAR_NOPATH_RECEIVED(route) do { \ 129 (route)->state.state_flags &= ~RPL_ROUTE_ENTRY_NOPATH_RECEIVED; \ 132 #define RPL_ROUTE_IS_DAO_PENDING(route) \ 133 ((route->state.state_flags & RPL_ROUTE_ENTRY_DAO_PENDING) != 0) 134 #define RPL_ROUTE_SET_DAO_PENDING(route) do { \ 135 (route)->state.state_flags |= RPL_ROUTE_ENTRY_DAO_PENDING; \ 137 #define RPL_ROUTE_CLEAR_DAO_PENDING(route) do { \ 138 (route)->state.state_flags &= ~RPL_ROUTE_ENTRY_DAO_PENDING; \ 141 #define RPL_ROUTE_IS_DAO_NACKED(route) \ 142 ((route->state.state_flags & RPL_ROUTE_ENTRY_DAO_NACK) != 0) 143 #define RPL_ROUTE_SET_DAO_NACKED(route) do { \ 144 (route)->state.state_flags |= RPL_ROUTE_ENTRY_DAO_NACK; \ 146 #define RPL_ROUTE_CLEAR_DAO_NACKED(route) do { \ 147 (route)->state.state_flags &= ~RPL_ROUTE_ENTRY_DAO_NACK; \ 150 #define RPL_ROUTE_CLEAR_DAO(route) do { \ 151 (route)->state.state_flags &= ~(RPL_ROUTE_ENTRY_DAO_NACK|RPL_ROUTE_ENTRY_DAO_PENDING); \ 155 typedef struct rpl_route_entry {
158 uint8_t dao_seqno_out;
159 uint8_t dao_seqno_in;
180 #ifdef UIP_DS6_ROUTE_STATE_TYPE 205 unsigned long interval);
208 const uip_ipaddr_t *uip_ds6_defrt_choose(
void);
210 void uip_ds6_defrt_periodic(
void);
218 const uip_ipaddr_t *next_hop);
220 void uip_ds6_route_rm_by_nexthop(
const uip_ipaddr_t *nexthop);
223 int uip_ds6_route_num_routes(
void);
226 int uip_ds6_route_is_nexthop(
const uip_ipaddr_t *
ipaddr);
static uip_ipaddr_t ipaddr
Pointer to prefix information option in uip_buf.
An entry in the default router list.
A neighbor route list entry, used on the uip_ds6_route->neighbor_routes->route_list list...
The neighbor routes hold a list of routing table entries that are attached to a specific neihbor...
struct uip_ds6_route uip_ds6_route_t
An entry in the routing table.
An entry in the routing table.
Linked list manipulation routines.
Second timer library header file.
Header file for the uIP TCP/IP stack.
struct uip_ds6_defrt uip_ds6_defrt_t
An entry in the default router list.
#define UIP_DS6_ROUTE_STATE_TYPE
define some additional RPL related route state and neighbor callback for RPL - if not a DS6_ROUTE_STA...
#define LIST_STRUCT(name)
Declare a linked list inside a structure declaraction.
static uip_ds6_defrt_t * defrt
Pointer to an interface address.