app/testpmd: support multi-process
[dpdk.git] / examples / ipsec-secgw / ipsec.c
index 6baeeb3..5b032fe 100644 (file)
@@ -52,6 +52,7 @@ set_ipsec_conf(struct ipsec_sa *sa, struct rte_security_ipsec_xform *ipsec)
        ipsec->esn_soft_limit = IPSEC_OFFLOAD_ESN_SOFTLIMIT;
        ipsec->replay_win_sz = app_sa_prm.window_size;
        ipsec->options.esn = app_sa_prm.enable_esn;
+       ipsec->options.udp_encap = sa->udp_encap;
 }
 
 int
@@ -556,6 +557,15 @@ ipsec_enqueue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx,
                                continue;
                        }
 
+                       if (unlikely((pkts[i]->packet_type &
+                                       (RTE_PTYPE_TUNNEL_MASK |
+                                       RTE_PTYPE_L4_MASK)) ==
+                                       MBUF_PTYPE_TUNNEL_ESP_IN_UDP &&
+                                       sa->udp_encap != 1)) {
+                               free_pkts(&pkts[i], 1);
+                               continue;
+                       }
+
                        sym_cop = get_sym_cop(&priv->cop);
                        sym_cop->m_src = pkts[i];