- /* Add new next node and set it as default */
- vlib_node_t *node, *next_node;
-
- next_node = vlib_get_node_by_name (vm, (u8 *) "dpdk-esp-encrypt");
- ASSERT (next_node);
- node = vlib_get_node_by_name (vm, (u8 *) "ipsec-output-ip4");
- ASSERT (node);
- im->esp_encrypt_node_index = next_node->index;
- im->esp_encrypt_next_index =
- vlib_node_add_next (vm, node->index, next_node->index);
-
- next_node = vlib_get_node_by_name (vm, (u8 *) "dpdk-esp-decrypt");
- ASSERT (next_node);
- node = vlib_get_node_by_name (vm, (u8 *) "ipsec-input-ip4");
- ASSERT (node);
- im->esp_decrypt_node_index = next_node->index;
- im->esp_decrypt_next_index =
- vlib_node_add_next (vm, node->index, next_node->index);
-
- im->cb.check_support_cb = dpdk_ipsec_check_support;
- im->cb.add_del_sa_sess_cb = add_del_sa_session;
-
- node = vlib_get_node_by_name (vm, (u8 *) "dpdk-crypto-input");
- ASSERT (node);
- for (i = skip_master; i < n_mains; i++)
- vlib_node_set_state (vlib_mains[i], node->index, VLIB_NODE_STATE_POLLING);
+ u32 idx = ipsec_register_esp_backend (
+ vm, im, "dpdk backend", "dpdk-esp4-encrypt", "dpdk-esp4-encrypt-tun",
+ "dpdk-esp4-decrypt", "dpdk-esp4-decrypt", "dpdk-esp6-encrypt",
+ "dpdk-esp6-encrypt-tun", "dpdk-esp6-decrypt", "dpdk-esp6-decrypt",
+ "error-drop", dpdk_ipsec_check_support, add_del_sa_session,
+ dpdk_ipsec_enable_disable);
+ int rv;
+ if (im->esp_current_backend == ~0)
+ {
+ rv = ipsec_select_esp_backend (im, idx);
+ ASSERT (rv == 0);
+ }