// 路由子系统netlink控制块
// 在ip_rt_init->devinet_init中注册。
1.1 static struct rtnetlink_link inet_rtnetlink_table[RTM_MAX - RTM_BASE + 1] = {
[4] = { .doit = inet_rtm_newaddr, },
[5] = { .doit = inet_rtm_deladdr, },
[6] = { .dumpit = inet_dump_ifaddr, },
[8] = { .doit = inet_rtm_newroute, },
[9] = { .doit = inet_rtm_delroute, },
[10] = { .doit = inet_rtm_getroute, .dumpit = inet_dump_fib, },
#ifdef CONFIG_IP_MULTIPLE_TABLES
[16] = { .doit = inet_rtm_newrule, },
[17] = { .doit = inet_rtm_delrule, },
[18] = { .dumpit = inet_dump_rules, },
#endif
};
// 为设备配置ip地址
// 函数主要任务:
// 1.检查有效性
// 1.1 网络部分<=32,提供了ip地址
// 2.分配in_ifaddr并填充信息
// 3.将in_ifaddr插入到in_device中
1.2 static int inet_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
{
struct rtattr **rta = arg;
struct net_device *dev;
struct in_device *in_dev;
网络子系统63_路由子系统处理netlink事件
最新推荐文章于 2023-09-12 17:14:18 发布