ipsec: print spi in hexadecimal
[vpp.git] / src / plugins / dpdk / ipsec / esp_encrypt.c
index 45a6257..af0e4b6 100644 (file)
@@ -114,6 +114,8 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
 {
   u32 n_left_from, *from, *to_next, next_index, thread_index;
   ipsec_main_t *im = &ipsec_main;
+  vnet_main_t *vnm = im->vnet_main;
+  vnet_interface_main_t *vim = &vnm->interface_main;
   u32 thread_idx = vlib_get_thread_index ();
   dpdk_crypto_main_t *dcm = &dpdk_crypto_main;
   crypto_resource_t *res = 0;
@@ -205,6 +207,7 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
          dpdk_op_priv_t *priv = crypto_op_get_priv (op);
          /* store bi in op private */
          priv->bi = bi0;
+         priv->encrypt = 1;
 
          u16 op_len =
            sizeof (op[0]) + sizeof (op[0].sym[0]) + sizeof (priv[0]);
@@ -280,8 +283,9 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
 
          if (PREDICT_FALSE (esp_seq_advance (sa0)))
            {
-             clib_warning ("sequence number counter has cycled SPI %u",
-                           sa0->spi);
+             clib_warning
+               ("sequence number counter has cycled SPI %u (0x%08x)",
+                sa0->spi, sa0->spi);
              if (is_ip6)
                vlib_node_increment_counter (vm,
                                             dpdk_esp6_encrypt_node.index,
@@ -304,6 +308,13 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
            (&ipsec_sa_counters, thread_index, sa_index0,
             1, b0->current_length);
 
+         /* Update tunnel interface tx counters */
+         if (is_tun)
+           vlib_increment_combined_counter
+             (vim->combined_sw_if_counters + VNET_INTERFACE_COUNTER_TX,
+              thread_index, vnet_buffer (b0)->sw_if_index[VLIB_TX],
+              1, b0->current_length);
+
          res->ops[res->n_ops] = op;
          res->bi[res->n_ops] = bi0;
          res->n_ops += 1;
@@ -574,7 +585,7 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
                                   from_frame->n_vectors);
 
       crypto_enqueue_ops (vm, cwm, dpdk_esp6_encrypt_node.index,
-                         ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
+                         ESP_ENCRYPT_ERROR_ENQ_FAIL, numa, 1 /* encrypt */ );
     }
   else
     {
@@ -583,7 +594,7 @@ dpdk_esp_encrypt_inline (vlib_main_t * vm,
                                   from_frame->n_vectors);
 
       crypto_enqueue_ops (vm, cwm, dpdk_esp4_encrypt_node.index,
-                         ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
+                         ESP_ENCRYPT_ERROR_ENQ_FAIL, numa, 1 /* encrypt */ );
     }
 
   crypto_free_ops (numa, ops, cwm->ops + from_frame->n_vectors - ops);