当我们在VPP/plugins目录下注册了自己的node后, 肯定有一个node.func(), 那这个函数是如何执行到的呢:
1. 首先我们要看一下这个插件注册的时候做了什么, 假设node 如下:
编译成功后, 我们可以从函数vlib_plugin_early_init() 中分析, 初始化时,怎么把这个node加到全局链表中的。
TODO: 大概就是, 在so 目录下去遍历所有so文件,根据注册的名字用头插法把相关node 加入链表中, 并为其分配相关的维护逻辑。
2. vpp初始化的前两步把插件,加载完了(维护起来了), 那下边我们看下VPP是怎么在后台一直去轮询的呢?
由于亿图脑图目前不能保存,节点限制, 先把已经总结放这里(新标签中打开图片可以放大)。
下图主要以vpp的main()为入口,学习vpp如果调用我注册的node的处理函数的。
前边马上就要找到调用我们注册的node了, 下边我们看一下dispatch_node()函数。
在调用的地方我们要注意框起来的这两个参数