admin管理员组文章数量:1317896
VPP
- 截获所有的ip4报文进入我们自己的node处理
ethernet_register_input_type (vm, ETHERNET_TYPE_IP4,my_node.index);
该函数主要是调用vlib_node_add_next函数将my_node.index添加到ethernet_input_node.index里面去:
vlib_node_add_next (vm,ethernet_input_node.index, node_index);
如果在自己的插件里调用这个节点注册函数,需要注意的是,VPP为了防止l3_next被多次初始化误覆盖,在ip4_init流程中用全局变量next_by_ethertype_register_called做断言。因为插件初始化先于ip4_init,所以如果在插件中调用ethernet_register_input_type,会导致next_by_ethertype_register_called被置1,导致ip4_init时候异常。解决方法是在自己的插件中先调用ip4_init,再调用ethernet_register_input_type
2. 动态改变某个节点的next_index:name1变为name2
node = vec_elt (nm->nodes, index);//获取node
next = vlib_get_node_by_name (vm, (u8 *)name1);
p = hash_get (node->next_slot_by_node, next->index);//next节点是否挂在node节点下,并得到它的slot(坑)
ret = vlib_node_add_named_next_with_slot (vm, index, name2, p[0]);//用name2节点去替换name1的slot
- 引流某个接口的流到指定node
vnet_hw_interface_rx_redirect_to_node (vnet_main_t * vnm, u32 hw_if_index,u32 node_index)
4.将出接口是bvi口的流引到自己的节点
void
l2bvi_register_input_type (vlib_main_t * vm,ethernet_type_t type,u32 node_index);
5.L3 重定向功能:将二层发往三层的流引到自己的节点
ethernet_register_l3_redirect(vm, my_node.index)
6.注册处理某个协议的节点到ip4_local后
ip4_register_protocol (IP_PROTOCOL_GRE, gre4_input_node.index);
本文标签: VPP
版权声明:本文标题:VPP 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1687319394a89044.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论