VPP初始化
来源:互联网 发布:安知玉如意 编辑:程序博客网 时间:2024/06/04 18:20
VPP在启动之前,首先需要生成全局的调用关系链表,在VPP启动时进行加载
这样的全局链表主要通过宏定义的方法建立
全局链表的宏定义主要包含以下几个:
注册到vlib_main_t结构体的宏定义
VLIB_INIT_FUNCTION:
注册到vlib_main_t的init_function_registrations链表,VPP启动时调用vlib_call_init_function时进行加载
VLIB_API_INIT_FUNCTION:
注册到vlib_main_t的api_init_function_registrations链表,并作为一个名为”api_rx_from_ring”的node注册到VLIB_REGISTER_NODE中,在VPP启动时调用加载
VLIB_CLI_COMMAND:
注册在vlib_main_t的cli_command_registrations链表, VLIB_INIT_FUNCTION中注册一个vlib_cli_init函数,在VPP启动调用vlib_call_init_function时进行加载
VLIB_EARLY_CONFIG_FUNCTION和VLIB_CONFIG_FUNCTION
注册到vlib_main_t的config_function_registrations链表,在VPP启动时执行vlib_call_all_config_functions进行加载
VLIB_MAIN_LOOP_ENTER_FUNCTION
注册到vlib_main_t的main_loop_enter_function_registrations链表,在VPP启动时调用vlib_call_all_main_loop_enter_functions进行加载
VLIB_MAIN_LOOP_EXIT_FUNCTION
注册到vlib_main_t的main_loop_exit_function_registrations链表,在VPP启动时调用vlib_call_all_main_loop_exit_functions进行加载
VLIB_REGISTER_NODE
注册到vlib_main_t的node_main.node_registrations链表,在启动执行vlib_register_all_static_node时进行加载
插件宏定义
VLIB_PLUGIN_REGISTER:
指定vlib_plugin_registration_t相关信息:如插件版本,描述等,在VPP启动时做判断,在调用vlib_load_new_plugins是进行加载
Feature宏定义:
VNET_FEATURE_ARC_INIT
注册到vnet_feature_main_t的next_arc链表,在VLIB_INIT_FUNCTION中增加一个加载feature的vnet_feature_init函数,在VPP启动时调用
VNET_FEATURE_INIT
注册到vnet_feature_main_t的next_feature链表,在VLIB_INIT_FUNCTION中增加一个加载feature的vnet_feature_init函数,在VPP启动时调用
- VPP初始化
- VPP介绍
- VPP启动
- Cisco VPP(1) 简介
- Cisco VPP(4) node
- vpp命令总结
- VPP 学习资料汇总
- vpp命令总结
- VPP LoadBalancer 试用
- vpp honeycomb 总结
- Cisco VPP插件开发
- vpp命令总结
- vpp安装运行
- VPP源码架构介绍
- networking-vpp 分析
- Cisco VPP(1) 简介
- 编译VPP报错
- Cisco VPP(2) 基本安装
- 为什么要来写博客
- 计算几何基础模板 以后还会更新
- 判断直线相交思维好题 (poj1039)
- 莫比乌斯反演学习之路~
- border-radius属性详解
- VPP初始化
- AC自动机+dp(CodeForces
- OI小结
- [置顶]刷题计划up++
- C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?
- bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
- spring bean 配置
- 形态学图像处理
- GAN人脸修复--Generative Face Completion