“目前专门为LoWPAN设计的路由协议(RPL协议)尚在制定完善中,很有可很成为6LoWPAN中使用的标准路由协议”
一 RPL处理数据包:
1 代码流程:
Ieee802.15.4mac层
\/
\/
6lowpan子系统,
\/
\/
Ipv6-->ipv6_rcv():
---->ip6_input()--->ip6_input_finish(){
….
nexthdr = skb_network_header(skb)[nhoff];//取出ipv6包头,判断出要使用那个上层协议(tcp,udp,icmp6等)
raw= raw6_local_deliver(skb, nexthdr);
if((ipprot = rcu_dereference(inet6_protos[nexthdr])) != NULL) {
ret = ipprot->handler(skb);---传递给上一层协议(tcp,udp,icmp6等)处理
\/
\/
2 下面是icmp6模块:
首先注册协议到inet6_protos[]
int __initicmpv6_init(void)
{
interr;
err= register_pernet_subsys(&icmpv6_sk_ops);
if(err < 0)
returnerr;
err= -EAGAIN;
if(inet6_add_protocol(&icmpv6_protocol, IPPROTO_ICMPV6)< 0)
gotofail;
…
其次,handler定义:
static const structinet6_protocol icmpv6_protocol = {