可能有点跳跃吧,但是不管了,能理解就写出来。这次看的源代码是关于路由表的一些数据结构还有操作函数,可以预见RPL协议将用到这个路由表。
还是从头文件开始。
详细的分析可以看这篇uip_ds6_route.h代码详解,这里主要讲主要的几个数据结构
#define UIP_DS6_NOTIFICATION_DEFRT_ADD 0
#define UIP_DS6_NOTIFICATION_DEFRT_RM 1
#define UIP_DS6_NOTIFICATION_ROUTE_ADD 2
#define UIP_DS6_NOTIFICATION_ROUTE_RM 3
typedef void (* uip_ds6_notification_callback)(int event,
uip_ipaddr_t *route,
uip_ipaddr_t *nexthop,
int num_routes);
struct uip_ds6_notification
{
struct uip_ds6_notification *next;
uip_ds6_notification_callback callback;
};
这个是通知回调函数,上层可以通过注册回调函数,然后当底层的路由表发生变化的时候,比如增加或者减少,这个uip_ds6_route模块就会调用回调函数通知上层。
typedef struct rpl_route_entry
{
uint32_t lifetime;