netifd调试总结

调试打印

1.D打印

在/etc/init.d/network中增加如下内容就能使用“logread  -e netifd”看到D打印的内容,

注意:D打印的内容是"daemon.err netifd[10824]"开头的,而netifd使用的syslog级别为L_CRIT,L_WARNING,L_NOTICE,L_INFO,L_DEBUG,感觉是特意避开err级别,避免跟D混淆。

2.syslog打印 

如果将上面的启动参数修改为“procd_set_param command /sbin/netifd -l 5  -d 15”,则代码及对应的打印内容如下所示:

DPRINTF("connected as %08x\n", ubus_ctx->local_id);
netifd_log_message(L_DEBUG, "connected as %08x\n", ubus_ctx->local_id);
netifd_log_message(L_INFO, "connected as %08x\n", ubus_ctx->local_id);
netifd_log_message(L_NOTICE, "connected as %08x\n", ubus_ctx->local_id);
netifd_log_message(L_WARNING, "connected as %08x\n", ubus_ctx->local_id);
netifd_log_message(L_CRIT, "connected as %08x\n", ubus_ctx->local_id);

daemon.err netifd[17096]: netifd_ubus_init(1364): connected as 0d6fc15a
daemon.debug netifd: connected as 0d6fc15a
daemon.info netifd: connected as 0d6fc15a
daemon.notice netifd: connected as 0d6fc15a
daemon.warn netifd: connected as 0d6fc15a
daemon.crit netifd: connected as 0d6fc15a

 

监听内核接口状态的变化

1、system_init中调用create_event_socket创建监听netlink的socket

2、当接口link up或者link down时,在内核中调用netif_carrier_on,最终会走到netdev_state_change,
     再通过rtmsg_ifinfo发出netlink消息。

3、在system_init中注册的cb_rtnl_event监听到消息之后,做相应的处理。

netifd支持的device类型

设备类型对应结构体使用场景
bridgebridge_device_type用于创建br-lan
macvlanmacvlan_device_type
Network devicesimple_device_type
tunneltunnel_device_type
vethveth_device_type
8021advlan8021ad_device_type
8021qvlan8021q_device_type


所有类型都通过device_type_add来添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值