summary
根据用户参数,创建并返回fib_create_info
节点。
- 如果用户参数有问题,则返回空。
参数检查过程中,会创建一个新的struct fib_info
节点,如果参数检查失败,
该节点会被free_fib_info
释放(通过rcu模式) - 如果存在一个相同配置参数的节点,则返回已有的
struct fib_info
节点。
其实已经创建了一个新的struct fib_info
节点,该节点会被free_fib_info
释放(通过rcu模式)同1。 - 否则,创建一个
struct fib_info
节点,并初始化,
节点里相关的ref
会被increase,同时将该节点链接到struct fib_info
相关的3个hash链(fib_info_hash
,fib_info_laddrhash
,fib_info_devhash
)上. - 最后返回新建的节点。
NOTE:
After this function struct fib_info *fib_create_info(struct fib_config *cfg)
,
struct fib_info
is only inserted into fib_info
hash lists, not the fib table(tree).
struct fib_info *fib_create_info(struct fib_config *cfg)
只是把一个创建了一个struct fib_info
节点,并没有真正链接到路由表(fib_tree)里。
1 | 774 struct fib_info *fib_create_info(struct fib_config *cfg) |