examples/ipsec-secgw: support inline UDP encapsulation
[dpdk.git] / examples / ipsec-secgw / ipsec.h
index 1f264c0..ae5058d 100644 (file)
 #define IV_OFFSET              (sizeof(struct rte_crypto_op) + \
                                sizeof(struct rte_crypto_sym_op))
 
-#define uint32_t_to_char(ip, a, b, c, d) do {\
-               *a = (uint8_t)(ip >> 24 & 0xff);\
-               *b = (uint8_t)(ip >> 16 & 0xff);\
-               *c = (uint8_t)(ip >> 8 & 0xff);\
-               *d = (uint8_t)(ip & 0xff);\
-       } while (0)
-
 #define DEFAULT_MAX_CATEGORIES 1
 
 #define INVALID_SPI (0)
@@ -72,7 +65,7 @@ struct ip_addr {
        } ip;
 };
 
-#define MAX_KEY_SIZE           32
+#define MAX_KEY_SIZE           36
 
 /*
  * application wide SA parameters
@@ -82,6 +75,7 @@ struct app_sa_prm {
        uint32_t window_size; /* replay window size */
        uint32_t enable_esn;  /* enable/disable ESN support */
        uint32_t cache_sz;      /* per lcore SA cache size */
+       uint32_t udp_encap;   /* enable/disable UDP Encapsulation */
        uint64_t flags;       /* rte_ipsec_sa_prm.flags */
 };
 
@@ -143,7 +137,10 @@ struct ipsec_sa {
                struct rte_security_ipsec_xform *sec_xform;
        };
        enum rte_security_ipsec_sa_direction direction;
+       uint8_t udp_encap;
        uint16_t portid;
+       uint8_t fdir_qid;
+       uint8_t fdir_flag;
 
 #define MAX_RTE_FLOW_PATTERN (4)
 #define MAX_RTE_FLOW_ACTIONS (3)
@@ -408,5 +405,13 @@ create_lookaside_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa,
 int
 create_inline_session(struct socket_ctx *skt_ctx, struct ipsec_sa *sa,
                struct rte_ipsec_session *ips);
+int
+check_flow_params(uint16_t fdir_portid, uint8_t fdir_qid);
+
+int
+create_ipsec_esp_flow(struct ipsec_sa *sa);
+
+uint32_t
+get_nb_crypto_sessions(void);
 
 #endif /* __IPSEC_H__ */