Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ipsec: fixed chaining ops after add footer and icv
[vpp.git]
/
src
/
vnet
/
ipsec
/
esp_encrypt.c
diff --git
a/src/vnet/ipsec/esp_encrypt.c
b/src/vnet/ipsec/esp_encrypt.c
index
e9feb8b
..
e80f986
100644
(file)
--- a/
src/vnet/ipsec/esp_encrypt.c
+++ b/
src/vnet/ipsec/esp_encrypt.c
@@
-695,18
+695,10
@@
esp_encrypt_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
if (n_bufs > 1)
{
if (n_bufs > 1)
{
- crypto_ops = &ptd->chained_crypto_ops;
- integ_ops = &ptd->chained_integ_ops;
-
/* find last buffer in the chain */
while (lb->flags & VLIB_BUFFER_NEXT_PRESENT)
lb = vlib_get_buffer (vm, lb->next_buffer);
}
/* find last buffer in the chain */
while (lb->flags & VLIB_BUFFER_NEXT_PRESENT)
lb = vlib_get_buffer (vm, lb->next_buffer);
}
- else
- {
- crypto_ops = &ptd->crypto_ops;
- integ_ops = &ptd->integ_ops;
- }
if (PREDICT_FALSE (esp_seq_advance (sa0)))
{
if (PREDICT_FALSE (esp_seq_advance (sa0)))
{
@@
-879,6
+871,17
@@
esp_encrypt_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
next[0] = ESP_ENCRYPT_NEXT_INTERFACE_OUTPUT;
}
next[0] = ESP_ENCRYPT_NEXT_INTERFACE_OUTPUT;
}
+ if (lb != b[0])
+ {
+ crypto_ops = &ptd->chained_crypto_ops;
+ integ_ops = &ptd->chained_integ_ops;
+ }
+ else
+ {
+ crypto_ops = &ptd->crypto_ops;
+ integ_ops = &ptd->integ_ops;
+ }
+
esp->spi = spi;
esp->seq = clib_net_to_host_u32 (sa0->seq);
esp->spi = spi;
esp->seq = clib_net_to_host_u32 (sa0->seq);