- if (proto == TRANSPORT_PROTO_TCP)
- {
- if (is_ip4)
- return SESSION_TYPE_IP4_TCP;
- else
- return SESSION_TYPE_IP6_TCP;
- }
- else
- {
- if (is_ip4)
- return SESSION_TYPE_IP4_UDP;
- else
- return SESSION_TYPE_IP6_UDP;
- }
+ session_manager_main_t *smm = &session_manager_main;
+ session_type_t session_type;
+ u32 next_index = ~0;
+
+ session_type = session_type_from_proto_and_ip (transport_proto, is_ip4);
+
+ vec_validate (smm->session_type_to_next, session_type);
+ vec_validate (smm->listen_sessions, session_type);
+ vec_validate (smm->session_tx_fns, session_type);
+
+ /* *INDENT-OFF* */
+ foreach_vlib_main (({
+ next_index = vlib_node_add_next (this_vlib_main, session_queue_node.index,
+ output_node);
+ }));
+ /* *INDENT-ON* */