examples/ipsec-secgw: enable flow based distribution
[dpdk.git] / examples / ipsec-secgw / ipsec.h
index f8f29f9..7031e28 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
@@ -144,6 +137,8 @@ struct ipsec_sa {
        };
        enum rte_security_ipsec_sa_direction direction;
        uint16_t portid;
+       uint8_t fdir_qid;
+       uint8_t fdir_flag;
 
 #define MAX_RTE_FLOW_PATTERN (4)
 #define MAX_RTE_FLOW_ACTIONS (3)
@@ -255,7 +250,7 @@ struct cnt_blk {
        uint32_t salt;
        uint64_t iv;
        uint32_t cnt;
-} __attribute__((packed));
+} __rte_packed;
 
 /* Socket ctx */
 extern struct socket_ctx socket_ctx[NB_SOCKETS];
@@ -408,5 +403,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__ */