test/log: skip regex on Windows
[dpdk.git] / examples / ipsec-secgw / ipsec-secgw.c
index 0a1c5bc..21abc0d 100644 (file)
@@ -265,7 +265,7 @@ struct socket_ctx socket_ctx[NB_SOCKETS];
 /*
  * Determine is multi-segment support required:
  *  - either frame buffer size is smaller then mtu
- *  - or reassmeble support is requested
+ *  - or reassemble support is requested
  */
 static int
 multi_seg_required(void)
@@ -2050,7 +2050,7 @@ add_mapping(struct rte_hash *map, const char *str, uint16_t cdev_id,
 
        ret = rte_hash_add_key_data(map, &key, (void *)i);
        if (ret < 0) {
-               printf("Faled to insert cdev mapping for (lcore %u, "
+               printf("Failed to insert cdev mapping for (lcore %u, "
                                "cdev %u, qp %u), errno %d\n",
                                key.lcore_id, ipsec_ctx->tbl[i].id,
                                ipsec_ctx->tbl[i].qp, ret);
@@ -2083,7 +2083,7 @@ add_cdev_mapping(struct rte_cryptodev_info *dev_info, uint16_t cdev_id,
                str = "Inbound";
        }
 
-       /* Required cryptodevs with operation chainning */
+       /* Required cryptodevs with operation chaining */
        if (!(dev_info->feature_flags &
                                RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING))
                return ret;
@@ -2251,7 +2251,7 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
                        "Error during getting device (port %u) info: %s\n",
                        portid, strerror(-ret));
 
-       /* limit allowed HW offloafs, as user requested */
+       /* limit allowed HW offloads, as user requested */
        dev_info.rx_offload_capa &= dev_rx_offload;
        dev_info.tx_offload_capa &= dev_tx_offload;
 
@@ -2298,7 +2298,7 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
                        local_port_conf.rxmode.offloads)
                rte_exit(EXIT_FAILURE,
                        "Error: port %u required RX offloads: 0x%" PRIx64
-                       ", avaialbe RX offloads: 0x%" PRIx64 "\n",
+                       ", available RX offloads: 0x%" PRIx64 "\n",
                        portid, local_port_conf.rxmode.offloads,
                        dev_info.rx_offload_capa);
 
@@ -2306,7 +2306,7 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
                        local_port_conf.txmode.offloads)
                rte_exit(EXIT_FAILURE,
                        "Error: port %u required TX offloads: 0x%" PRIx64
-                       ", avaialbe TX offloads: 0x%" PRIx64 "\n",
+                       ", available TX offloads: 0x%" PRIx64 "\n",
                        portid, local_port_conf.txmode.offloads,
                        dev_info.tx_offload_capa);
 
@@ -2317,7 +2317,7 @@ port_init(uint16_t portid, uint64_t req_rx_offloads, uint64_t req_tx_offloads)
        if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM)
                local_port_conf.txmode.offloads |= RTE_ETH_TX_OFFLOAD_IPV4_CKSUM;
 
-       printf("port %u configurng rx_offloads=0x%" PRIx64
+       printf("port %u configuring rx_offloads=0x%" PRIx64
                ", tx_offloads=0x%" PRIx64 "\n",
                portid, local_port_conf.rxmode.offloads,
                local_port_conf.txmode.offloads);
@@ -2647,7 +2647,7 @@ rx_callback(__rte_unused uint16_t port, __rte_unused uint16_t queue,
                                rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6)) {
 
                        struct rte_ipv6_hdr *iph;
-                       struct ipv6_extension_fragment *fh;
+                       struct rte_ipv6_fragment_ext *fh;
 
                        iph = (struct rte_ipv6_hdr *)(eth + 1);
                        fh = rte_ipv6_frag_get_ipv6_fragment_header(iph);
@@ -3025,12 +3025,14 @@ handle_telemetry_cmd_ipsec_secgw_stats_outbound(const char *cmd __rte_unused,
        struct rte_tel_data *spd4_data = rte_tel_data_alloc();
        struct rte_tel_data *spd6_data = rte_tel_data_alloc();
        struct rte_tel_data *sad_data = rte_tel_data_alloc();
-
        unsigned int coreid = UINT32_MAX;
+       int rc = 0;
 
        /* verify allocated telemetry data structures */
-       if (!spd4_data || !spd6_data || !sad_data)
-               return -ENOMEM;
+       if (!spd4_data || !spd6_data || !sad_data) {
+               rc = -ENOMEM;
+               goto exit;
+       }
 
        /* initialize telemetry data structs as dicts */
        rte_tel_data_start_dict(data);
@@ -3041,8 +3043,10 @@ handle_telemetry_cmd_ipsec_secgw_stats_outbound(const char *cmd __rte_unused,
 
        if (params) {
                coreid = (uint32_t)atoi(params);
-               if (rte_lcore_is_enabled(coreid) == 0)
-                       return -EINVAL;
+               if (rte_lcore_is_enabled(coreid) == 0) {
+                       rc = -EINVAL;
+                       goto exit;
+               }
        }
 
        update_statistics(&total_stats, coreid);
@@ -3076,7 +3080,13 @@ handle_telemetry_cmd_ipsec_secgw_stats_outbound(const char *cmd __rte_unused,
 
        rte_tel_data_add_dict_container(data, "sad", sad_data, 0);
 
-       return 0;
+exit:
+       if (rc) {
+               rte_tel_data_free(spd4_data);
+               rte_tel_data_free(spd6_data);
+               rte_tel_data_free(sad_data);
+       }
+       return rc;
 }
 
 static int
@@ -3088,12 +3098,14 @@ handle_telemetry_cmd_ipsec_secgw_stats_inbound(const char *cmd __rte_unused,
        struct rte_tel_data *spd4_data = rte_tel_data_alloc();
        struct rte_tel_data *spd6_data = rte_tel_data_alloc();
        struct rte_tel_data *sad_data = rte_tel_data_alloc();
-
        unsigned int coreid = UINT32_MAX;
+       int rc = 0;
 
        /* verify allocated telemetry data structures */
-       if (!spd4_data || !spd6_data || !sad_data)
-               return -ENOMEM;
+       if (!spd4_data || !spd6_data || !sad_data) {
+               rc = -ENOMEM;
+               goto exit;
+       }
 
        /* initialize telemetry data structs as dicts */
        rte_tel_data_start_dict(data);
@@ -3105,8 +3117,10 @@ handle_telemetry_cmd_ipsec_secgw_stats_inbound(const char *cmd __rte_unused,
 
        if (params) {
                coreid = (uint32_t)atoi(params);
-               if (rte_lcore_is_enabled(coreid) == 0)
-                       return -EINVAL;
+               if (rte_lcore_is_enabled(coreid) == 0) {
+                       rc = -EINVAL;
+                       goto exit;
+               }
        }
 
        update_statistics(&total_stats, coreid);
@@ -3140,7 +3154,13 @@ handle_telemetry_cmd_ipsec_secgw_stats_inbound(const char *cmd __rte_unused,
 
        rte_tel_data_add_dict_container(data, "spd6", spd6_data, 0);
 
-       return 0;
+exit:
+       if (rc) {
+               rte_tel_data_free(spd4_data);
+               rte_tel_data_free(spd6_data);
+               rte_tel_data_free(sad_data);
+       }
+       return rc;
 }
 
 static int
@@ -3151,8 +3171,14 @@ handle_telemetry_cmd_ipsec_secgw_stats_routing(const char *cmd __rte_unused,
 
        struct rte_tel_data *lpm4_data = rte_tel_data_alloc();
        struct rte_tel_data *lpm6_data = rte_tel_data_alloc();
-
        unsigned int coreid = UINT32_MAX;
+       int rc = 0;
+
+       /* verify allocated telemetry data structures */
+       if (!lpm4_data || !lpm6_data) {
+               rc = -ENOMEM;
+               goto exit;
+       }
 
        /* initialize telemetry data structs as dicts */
        rte_tel_data_start_dict(data);
@@ -3162,8 +3188,10 @@ handle_telemetry_cmd_ipsec_secgw_stats_routing(const char *cmd __rte_unused,
 
        if (params) {
                coreid = (uint32_t)atoi(params);
-               if (rte_lcore_is_enabled(coreid) == 0)
-                       return -EINVAL;
+               if (rte_lcore_is_enabled(coreid) == 0) {
+                       rc = -EINVAL;
+                       goto exit;
+               }
        }
 
        update_statistics(&total_stats, coreid);
@@ -3180,7 +3208,12 @@ handle_telemetry_cmd_ipsec_secgw_stats_routing(const char *cmd __rte_unused,
 
        rte_tel_data_add_dict_container(data, "IPv6 LPM", lpm6_data, 0);
 
-       return 0;
+exit:
+       if (rc) {
+               rte_tel_data_free(lpm4_data);
+               rte_tel_data_free(lpm6_data);
+       }
+       return rc;
 }
 
 static void
@@ -3346,13 +3379,14 @@ main(int32_t argc, char **argv)
                if ((enabled_port_mask & (1 << portid)) == 0)
                        continue;
 
-               /* Create flow before starting the device */
-               create_default_ipsec_flow(portid, req_rx_offloads[portid]);
-
                ret = rte_eth_dev_start(portid);
                if (ret < 0)
                        rte_exit(EXIT_FAILURE, "rte_eth_dev_start: "
                                        "err=%d, port=%d\n", ret, portid);
+
+               /* Create flow after starting the device */
+               create_default_ipsec_flow(portid, req_rx_offloads[portid]);
+
                /*
                 * If enabled, put device in promiscuous mode.
                 * This allows IO forwarding mode to forward packets