summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorKonstantin Ananyev <konstantin.ananyev@intel.com>2018-06-05 15:16:02 +0100
committerPablo de Lara <pablo.de.lara.guarch@intel.com>2018-07-25 08:36:19 +0200
commitc1fe6dbfcec2b17dd5fd115dcdec2ea573c4de0d (patch)
tree04d11b29f6abaff0b5abace11a52011a58bccfbc /examples
parentb9cf7fe64d8431ac73c783f30a92287b749a2c42 (diff)
downloaddpdk-c1fe6dbfcec2b17dd5fd115dcdec2ea573c4de0d.zip
dpdk-c1fe6dbfcec2b17dd5fd115dcdec2ea573c4de0d.tar.gz
dpdk-c1fe6dbfcec2b17dd5fd115dcdec2ea573c4de0d.tar.xz
examples/ipsec-secgw: fix bypass rule processing
For outbound ports BYPASS rule is erroneously treated as PROTECT one with SA idx zero. Fixes: 2a5106af132b ("examples/ipsec-secgw: fix corner case for SPI value") Cc: stable@dpdk.org Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/ipsec-secgw/ipsec-secgw.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index a0faddf..b45b87b 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -510,11 +510,13 @@ outbound_sp(struct sp_ctx *sp, struct traffic_type *ip,
sa_idx = ip->res[i] & PROTECT_MASK;
if (ip->res[i] & DISCARD)
rte_pktmbuf_free(m);
+ else if (ip->res[i] & BYPASS)
+ ip->pkts[j++] = m;
else if (sa_idx < IPSEC_SA_MAX_ENTRIES) {
ipsec->res[ipsec->num] = sa_idx;
ipsec->pkts[ipsec->num++] = m;
- } else /* BYPASS */
- ip->pkts[j++] = m;
+ } else /* invalid SA idx */
+ rte_pktmbuf_free(m);
}
ip->num = j;
}