power: refactor ACPI and intel_pstate support
[dpdk.git] / examples / ipsec-secgw / sa.c
index 6324821..7bb9ef3 100644 (file)
@@ -160,6 +160,7 @@ const struct supported_aead_algo aead_algos[] = {
 
 #define SA_INIT_NB     128
 
+static uint32_t nb_crypto_sessions;
 struct ipsec_sa *sa_out;
 uint32_t nb_sa_out;
 static uint32_t sa_out_sz;
@@ -297,6 +298,7 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
        uint32_t portid_p = 0;
        uint32_t fallback_p = 0;
        int16_t status_p = 0;
+       uint16_t udp_encap_p = 0;
 
        if (strcmp(tokens[0], "in") == 0) {
                ri = &nb_sa_in;
@@ -712,6 +714,7 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
                        }
 
                        rule->fallback_sessions = 1;
+                       nb_crypto_sessions++;
                        fallback_p = 1;
                        continue;
                }
@@ -755,6 +758,23 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
                        }
                        continue;
                }
+               if (strcmp(tokens[ti], "udp-encap") == 0) {
+                       APP_CHECK(ips->type ==
+                               RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
+                               status, "UDP encapsulation is allowed if the "
+                               "session is of type lookaside-protocol-offload "
+                               "only.");
+                       if (status->status < 0)
+                               return;
+                       APP_CHECK_PRESENCE(udp_encap_p, tokens[ti], status);
+                       if (status->status < 0)
+                               return;
+
+                       rule->udp_encap = 1;
+                       app_sa_prm.udp_encap = 1;
+                       udp_encap_p = 1;
+                       continue;
+               }
 
                /* unrecognizeable input */
                APP_CHECK(0, status, "unrecognized input \"%s\"",
@@ -795,6 +815,7 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
                ips->type = RTE_SECURITY_ACTION_TYPE_NONE;
        }
 
+       nb_crypto_sessions++;
        *ri = *ri + 1;
 }
 
@@ -1624,3 +1645,9 @@ sa_sort_arr(void)
        qsort(sa_in, nb_sa_in, sizeof(struct ipsec_sa), sa_cmp);
        qsort(sa_out, nb_sa_out, sizeof(struct ipsec_sa), sa_cmp);
 }
+
+uint32_t
+get_nb_crypto_sessions(void)
+{
+       return nb_crypto_sessions;
+}