DPDK  18.08.1
rte_security.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2017 NXP.
3  * Copyright(c) 2017 Intel Corporation.
4  */
5 
6 #ifndef _RTE_SECURITY_H_
7 #define _RTE_SECURITY_H_
8 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #include <sys/types.h>
22 
23 #include <netinet/in.h>
24 #include <netinet/ip.h>
25 #include <netinet/ip6.h>
26 
27 #include <rte_compat.h>
28 #include <rte_common.h>
29 #include <rte_crypto.h>
30 #include <rte_mbuf.h>
31 #include <rte_memory.h>
32 #include <rte_mempool.h>
33 
40 };
41 
48 };
49 
56 };
57 
68  void *device;
70  const struct rte_security_ops *ops;
72  uint16_t sess_cnt;
74 };
75 
85  union {
86  struct {
87  struct in_addr src_ip;
89  struct in_addr dst_ip;
91  uint8_t dscp;
93  uint8_t df;
95  uint8_t ttl;
97  } ipv4;
99  struct {
100  struct in6_addr src_addr;
102  struct in6_addr dst_addr;
104  uint8_t dscp;
106  uint32_t flabel;
108  uint8_t hlimit;
110  } ipv6;
112  };
113 };
114 
124  uint32_t esn : 1;
125 
132  uint32_t udp_encap : 1;
133 
141  uint32_t copy_dscp : 1;
142 
149  uint32_t copy_flabel : 1;
150 
157  uint32_t copy_df : 1;
158 
166  uint32_t dec_ttl : 1;
167 };
168 
175 };
176 
183  uint32_t spi;
185  uint32_t salt;
197  uint64_t esn_soft_limit;
199 };
200 
206  int dummy;
207 };
208 
227 };
228 
235 };
236 
246  union {
247  struct rte_security_ipsec_xform ipsec;
248  struct rte_security_macsec_xform macsec;
249  };
253  void *userdata;
255 };
256 
257 struct rte_security_session {
258  void *sess_private_data;
260 };
261 
272 struct rte_security_session * __rte_experimental
274  struct rte_security_session_conf *conf,
275  struct rte_mempool *mp);
276 
287 int __rte_experimental
289  struct rte_security_session *sess,
290  struct rte_security_session_conf *conf);
291 
301 unsigned int __rte_experimental
303 
316 int __rte_experimental
318  struct rte_security_session *sess);
319 
333 int __rte_experimental
335  struct rte_security_session *sess,
336  struct rte_mbuf *mb, void *params);
337 
355 void * __rte_experimental
356 rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md);
357 
364 static inline int __rte_experimental
366  struct rte_security_session *sess)
367 {
368  sym_op->sec_session = sess;
369 
370  return 0;
371 }
372 
373 static inline void * __rte_experimental
374 get_sec_session_private_data(const struct rte_security_session *sess)
375 {
376  return sess->sess_private_data;
377 }
378 
379 static inline void __rte_experimental
380 set_sec_session_private_data(struct rte_security_session *sess,
381  void *private_data)
382 {
383  sess->sess_private_data = private_data;
384 }
385 
395 static inline int __rte_experimental
397  struct rte_security_session *sess)
398 {
400  return -EINVAL;
401 
403 
404  return __rte_security_attach_session(op->sym, sess);
405 }
406 
407 struct rte_security_macsec_stats {
408  uint64_t reserved;
409 };
410 
411 struct rte_security_ipsec_stats {
412  uint64_t reserved;
413 
414 };
415 
416 struct rte_security_stats {
417  enum rte_security_session_protocol protocol;
421  union {
422  struct rte_security_macsec_stats macsec;
423  struct rte_security_ipsec_stats ipsec;
424  };
425 };
426 
437 int __rte_experimental
439  struct rte_security_session *sess,
440  struct rte_security_stats *stats);
441 
451  union {
452  struct {
461  } ipsec;
463  struct {
464  /* To be Filled */
465  int dummy;
466  } macsec;
468  };
469 
473  uint32_t ol_flags;
475 };
476 
477 #define RTE_SECURITY_TX_OLOAD_NEED_MDATA 0x00000001
478 
481 #define RTE_SECURITY_TX_HW_TRAILER_OFFLOAD 0x00000002
482 
487 #define RTE_SECURITY_RX_HW_TRAILER_OFFLOAD 0x00010000
488 
500  enum rte_security_session_protocol protocol;
501 
503  union {
504  struct {
506  enum rte_security_ipsec_sa_mode mode;
507  enum rte_security_ipsec_sa_direction direction;
508  } ipsec;
509  };
510 };
511 
521 const struct rte_security_capability * __rte_experimental
523 
535 const struct rte_security_capability * __rte_experimental
537  struct rte_security_capability_idx *idx);
538 
539 #ifdef __cplusplus
540 }
541 #endif
542 
543 #endif /* _RTE_SECURITY_H_ */