vpp cli分析

命令注册:

1、VLIB_CLI_COMMAND将命令注册到vm->cli_main->cli_command_registrations链表

2、VLIB_INIT_FUNCTION (vlib_cli_init)中的vlib_cli_init遍历vm->cli_main->cli_command_registrations链表,对于每个命令调vlib_cli_register

         2.1、vlib_cli_register

                 将命令路径记录到vm->cli_main->command_index_by_path链表,分配命令路径在vm->cli_main->command_index_by_path链表中的index对应的vm->cli_main->commands向量成员给命令路径对应的命令节点;

                对于后续关键字,根据根路径名获取其在vm->cli_main->command_index_by_path链表的index,然后根据index获取到根路径在vm->cli_main->commands上的节点成员p,将后续关键字添加到节点成员的p->sub_rule_index_by_name(根据子路径名字分配index)、p->sub_rules(根据子路径名字分配的index值分配在该向量上的节点,节点存储子路径名字和子路径命令节点在vm->cli_main->commands上的索引);p->sub_commands(记录子路径名字和子路径命令节点在vm->cli_main->commands上的索引)、p->sub_command_index_by_name(根据子路径名字和其在p->sub_commands上的index创建hash值

猜你喜欢

转载自blog.csdn.net/qq_29044159/article/details/108136177