DPDK  22.11.7
rte_security.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2017,2019-2020 NXP
3  * Copyright(c) 2017-2020 Intel Corporation.
4  */
5 
6 #ifndef _RTE_SECURITY_H_
7 #define _RTE_SECURITY_H_
8 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #include <sys/types.h>
21 
22 #include <rte_compat.h>
23 #include <rte_common.h>
24 #include <rte_crypto.h>
25 #include <rte_ip.h>
26 #include <rte_mbuf_dyn.h>
27 
34 };
35 
42 };
43 
50 };
51 
57 #define RTE_SECURITY_IPSEC_TUNNEL_VERIFY_DST_ADDR 0x1
58 #define RTE_SECURITY_IPSEC_TUNNEL_VERIFY_SRC_DST_ADDR 0x2
59 
70  void *device;
72  const struct rte_security_ops *ops;
74  uint16_t sess_cnt;
76  uint16_t macsec_sc_cnt;
78  uint16_t macsec_sa_cnt;
80  uint32_t flags;
82 };
83 
84 #define RTE_SEC_CTX_F_FAST_SET_MDATA 0x00000001
85 
99  union {
100  struct {
101  struct in_addr src_ip;
103  struct in_addr dst_ip;
105  uint8_t dscp;
107  uint8_t df;
109  uint8_t ttl;
111  } ipv4;
113  struct {
114  struct in6_addr src_addr;
116  struct in6_addr dst_addr;
118  uint8_t dscp;
120  uint32_t flabel;
122  uint8_t hlimit;
124  } ipv6;
126  };
127 };
128 
129 struct rte_security_ipsec_udp_param {
130  uint16_t sport;
131  uint16_t dport;
132 };
133 
143  uint32_t esn : 1;
144 
151  uint32_t udp_encap : 1;
152 
160  uint32_t copy_dscp : 1;
161 
168  uint32_t copy_flabel : 1;
169 
176  uint32_t copy_df : 1;
177 
185  uint32_t dec_ttl : 1;
186 
194  uint32_t ecn : 1;
195 
202  uint32_t stats : 1;
203 
216  uint32_t iv_gen_disable : 1;
217 
225  uint32_t tunnel_hdr_verify : 2;
226 
232  uint32_t udp_ports_verify : 1;
233 
247  uint32_t ip_csum_enable : 1;
248 
263  uint32_t l4_csum_enable : 1;
264 
276  uint32_t ip_reassembly_en : 1;
277 
285  uint32_t reserved_opts : 17;
286 };
287 
294 };
295 
318 };
319 
326  uint32_t spi;
328  uint32_t salt;
342  uint32_t replay_win_sz;
346  union {
347  uint64_t value;
348  struct {
349  uint32_t low;
350  uint32_t hi;
351  };
352  } esn;
354  struct rte_security_ipsec_udp_param udp;
356 };
357 
366 };
367 
369 #define RTE_SECURITY_MACSEC_NUM_AN 4
370 
371 #define RTE_SECURITY_MACSEC_SALT_LEN 12
372 
380  struct {
381  const uint8_t *data;
382  uint16_t length;
383  } key;
387  uint8_t an : 2;
389  uint32_t ssci;
391  uint32_t xpn;
393  uint32_t next_pn;
394 };
395 
402  union {
403  struct {
409  uint8_t active : 1;
411  uint8_t reserved : 7;
412  } sc_rx;
413  struct {
414  uint16_t sa_id;
415  uint16_t sa_id_rekey;
416  uint64_t sci;
417  uint8_t active : 1;
418  uint8_t re_key_en : 1;
420  uint8_t reserved : 6;
421  } sc_tx;
422  };
423 };
424 
433 };
434 
436 #define RTE_SECURITY_MACSEC_VALIDATE_DISABLE 0
437 
438 #define RTE_SECURITY_MACSEC_VALIDATE_NO_DISCARD 1
439 
440 #define RTE_SECURITY_MACSEC_VALIDATE_STRICT 2
441 
442 #define RTE_SECURITY_MACSEC_VALIDATE_NO_OP 3
443 
453  uint8_t cipher_off;
458  uint64_t sci;
460  uint16_t sc_id;
461  union {
462  struct {
464  uint16_t mtu;
469  uint8_t sectag_off;
471  uint16_t protect_frames : 1;
478  uint16_t sectag_insert_mode : 1;
480  uint16_t icv_include_da_sa : 1;
482  uint16_t ctrl_port_enable : 1;
484  uint16_t sectag_version : 1;
486  uint16_t end_station : 1;
488  uint16_t send_sci : 1;
490  uint16_t scb : 1;
495  uint16_t encrypt : 1;
497  uint16_t reserved : 7;
498  } tx_secy;
499  struct {
501  uint32_t replay_win_sz;
503  uint16_t validate_frames : 2;
505  uint16_t icv_include_da_sa : 1;
507  uint16_t ctrl_port_enable : 1;
509  uint16_t preserve_sectag : 1;
511  uint16_t preserve_icv : 1;
513  uint16_t replay_protect : 1;
515  uint16_t reserved : 9;
516  } rx_secy;
517  };
518 };
519 
527 };
528 
533 };
534 
547 };
548 
555  int8_t bearer;
559  uint8_t en_ordering;
574  uint32_t hfn;
576  uint32_t hfn_threshold;
585  uint8_t hfn_ovrd;
591  uint8_t sdap_enabled;
593  uint16_t reserved;
594 };
595 
606 };
607 
616 };
617 
621 /* Enumeration of rte_security_session_action_type 8<*/
641 };
642 /* >8 End enumeration of rte_security_session_action_type. */
643 
645 /* Enumeration of rte_security_session_protocol 8<*/
655 };
656 /* >8 End enumeration of rte_security_session_protocol. */
657 
661 /* Structure rte_security_session_conf 8< */
668  union {
669  struct rte_security_ipsec_xform ipsec;
670  struct rte_security_macsec_xform macsec;
671  struct rte_security_pdcp_xform pdcp;
672  struct rte_security_docsis_xform docsis;
673  };
677  void *userdata;
679 };
680 /* >8 End of structure rte_security_session_conf. */
681 
692 void *
694  struct rte_security_session_conf *conf,
695  struct rte_mempool *mp);
696 
707 __rte_experimental
708 int
710  void *sess,
711  struct rte_security_session_conf *conf);
712 
722 unsigned int
724 
739 int
740 rte_security_session_destroy(struct rte_security_ctx *instance, void *sess);
741 
757 __rte_experimental
758 int
760  struct rte_security_macsec_sc *conf);
761 
775 __rte_experimental
776 int
777 rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id);
778 
794 __rte_experimental
795 int
797  struct rte_security_macsec_sa *conf);
798 
812 __rte_experimental
813 int
814 rte_security_macsec_sa_destroy(struct rte_security_ctx *instance, uint16_t sa_id);
815 
817 typedef uint64_t rte_security_dynfield_t;
820 
834 __rte_experimental
835 static inline rte_security_dynfield_t *
837 {
838  return RTE_MBUF_DYNFIELD(mbuf,
841 }
842 
851 __rte_experimental
852 static inline bool rte_security_dynfield_is_registered(void)
853 {
854  return rte_security_dynfield_offset >= 0;
855 }
856 
857 #define RTE_SECURITY_SESS_OPAQUE_DATA_OFF 0
858 #define RTE_SECURITY_SESS_FAST_MDATA_OFF 1
859 
862 static inline uint64_t
864 {
865  return *((uint64_t *)sess + RTE_SECURITY_SESS_OPAQUE_DATA_OFF);
866 }
867 
871 static inline void
872 rte_security_session_opaque_data_set(void *sess, uint64_t opaque)
873 {
874  uint64_t *data;
875  data = (((uint64_t *)sess) + RTE_SECURITY_SESS_OPAQUE_DATA_OFF);
876  *data = opaque;
877 }
878 
882 static inline uint64_t
884 {
885  return *((uint64_t *)sess + RTE_SECURITY_SESS_FAST_MDATA_OFF);
886 }
887 
891 static inline void
892 rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
893 {
894  uint64_t *data;
895  data = (((uint64_t *)sess) + RTE_SECURITY_SESS_FAST_MDATA_OFF);
896  *data = fdata;
897 }
898 
900 __rte_experimental
902  void *sess,
903  struct rte_mbuf *m, void *params);
904 
918 static inline int
920  void *sess,
921  struct rte_mbuf *mb, void *params)
922 {
923  /* Fast Path */
924  if (instance->flags & RTE_SEC_CTX_F_FAST_SET_MDATA) {
927  return 0;
928  }
929 
930  /* Jump to PMD specific function pointer */
931  return __rte_security_set_pkt_metadata(instance, sess, mb, params);
932 }
933 
940 static inline int
942 {
943  sym_op->session = sess;
944 
945  return 0;
946 }
947 
957 static inline int
959  void *sess)
960 {
962  return -EINVAL;
963 
965 
966  return __rte_security_attach_session(op->sym, sess);
967 }
968 
969 struct rte_security_macsec_secy_stats {
970  uint64_t ctl_pkt_bcast_cnt;
971  uint64_t ctl_pkt_mcast_cnt;
972  uint64_t ctl_pkt_ucast_cnt;
973  uint64_t ctl_octet_cnt;
974  uint64_t unctl_pkt_bcast_cnt;
975  uint64_t unctl_pkt_mcast_cnt;
976  uint64_t unctl_pkt_ucast_cnt;
977  uint64_t unctl_octet_cnt;
978  /* Valid only for Rx */
979  uint64_t octet_decrypted_cnt;
980  uint64_t octet_validated_cnt;
981  uint64_t pkt_port_disabled_cnt;
982  uint64_t pkt_badtag_cnt;
983  uint64_t pkt_nosa_cnt;
984  uint64_t pkt_nosaerror_cnt;
985  uint64_t pkt_tagged_ctl_cnt;
986  uint64_t pkt_untaged_cnt;
987  uint64_t pkt_ctl_cnt;
988  uint64_t pkt_notag_cnt;
989  /* Valid only for Tx */
990  uint64_t octet_encrypted_cnt;
991  uint64_t octet_protected_cnt;
992  uint64_t pkt_noactivesa_cnt;
993  uint64_t pkt_toolong_cnt;
994  uint64_t pkt_untagged_cnt;
995 };
996 
997 struct rte_security_macsec_sc_stats {
998  /* Rx */
999  uint64_t hit_cnt;
1000  uint64_t pkt_invalid_cnt;
1001  uint64_t pkt_late_cnt;
1002  uint64_t pkt_notvalid_cnt;
1003  uint64_t pkt_unchecked_cnt;
1004  uint64_t pkt_delay_cnt;
1005  uint64_t pkt_ok_cnt;
1006  uint64_t octet_decrypt_cnt;
1007  uint64_t octet_validate_cnt;
1008  /* Tx */
1009  uint64_t pkt_encrypt_cnt;
1010  uint64_t pkt_protected_cnt;
1011  uint64_t octet_encrypt_cnt;
1012  uint64_t octet_protected_cnt;
1013 };
1014 
1015 struct rte_security_macsec_sa_stats {
1016  /* Rx */
1017  uint64_t pkt_invalid_cnt;
1018  uint64_t pkt_nosaerror_cnt;
1019  uint64_t pkt_notvalid_cnt;
1020  uint64_t pkt_ok_cnt;
1021  uint64_t pkt_nosa_cnt;
1022  /* Tx */
1023  uint64_t pkt_encrypt_cnt;
1024  uint64_t pkt_protected_cnt;
1025 };
1026 
1027 struct rte_security_ipsec_stats {
1028  uint64_t ipackets;
1029  uint64_t opackets;
1030  uint64_t ibytes;
1031  uint64_t obytes;
1032  uint64_t ierrors;
1033  uint64_t oerrors;
1034  uint64_t reserved1;
1035  uint64_t reserved2;
1036 };
1037 
1038 struct rte_security_pdcp_stats {
1039  uint64_t reserved;
1040 };
1041 
1042 struct rte_security_docsis_stats {
1043  uint64_t reserved;
1044 };
1045 
1046 struct rte_security_stats {
1047  enum rte_security_session_protocol protocol;
1051  union {
1052  struct rte_security_macsec_secy_stats macsec;
1053  struct rte_security_ipsec_stats ipsec;
1054  struct rte_security_pdcp_stats pdcp;
1055  struct rte_security_docsis_stats docsis;
1056  };
1057 };
1058 
1072 __rte_experimental
1073 int
1075  void *sess,
1076  struct rte_security_stats *stats);
1077 
1091 __rte_experimental
1092 int
1094  uint16_t sa_id,
1095  struct rte_security_macsec_sa_stats *stats);
1096 
1110 __rte_experimental
1111 int
1113  uint16_t sc_id,
1114  struct rte_security_macsec_sc_stats *stats);
1115 
1124  RTE_STD_C11
1125  union {
1126  struct {
1139  } ipsec;
1141  struct {
1143  uint16_t mtu;
1147  uint16_t max_nb_sc;
1149  uint16_t max_nb_sa;
1151  uint16_t max_nb_sess;
1153  uint32_t replay_win_sz;
1157  uint16_t fixed_sectag_insert : 1;
1159  uint16_t icv_include_da_sa : 1;
1161  uint16_t ctrl_port_enable : 1;
1163  uint16_t preserve_sectag : 1;
1165  uint16_t preserve_icv : 1;
1167  uint16_t validate_frames : 1;
1169  uint16_t re_key : 1;
1171  uint16_t anti_replay : 1;
1173  uint16_t reserved : 7;
1174  } macsec;
1176  struct {
1179  uint32_t capa_flags;
1181  } pdcp;
1183  struct {
1186  } docsis;
1188  };
1189 
1193  uint32_t ol_flags;
1195 };
1196 
1202 #define RTE_SECURITY_PDCP_ORDERING_CAP 0x00000001
1203 
1208 #define RTE_SECURITY_PDCP_DUP_DETECT_CAP 0x00000002
1209 
1210 #define RTE_SECURITY_TX_OLOAD_NEED_MDATA 0x00000001
1211 
1214 #define RTE_SECURITY_TX_HW_TRAILER_OFFLOAD 0x00000002
1215 
1220 #define RTE_SECURITY_RX_HW_TRAILER_OFFLOAD 0x00010000
1221 
1233  enum rte_security_session_protocol protocol;
1234 
1235  RTE_STD_C11
1236  union {
1237  struct {
1238  enum rte_security_ipsec_sa_protocol proto;
1239  enum rte_security_ipsec_sa_mode mode;
1240  enum rte_security_ipsec_sa_direction direction;
1241  } ipsec;
1242  struct {
1243  enum rte_security_pdcp_domain domain;
1244  uint32_t capa_flags;
1245  } pdcp;
1246  struct {
1247  enum rte_security_docsis_direction direction;
1248  } docsis;
1249  };
1250 };
1251 
1261 const struct rte_security_capability *
1263 
1275 const struct rte_security_capability *
1277  struct rte_security_capability_idx *idx);
1278 
1279 #ifdef __cplusplus
1280 }
1281 #endif
1282 
1283 #endif /* _RTE_SECURITY_H_ */
rte_security_pdcp_direction
rte_security_pdcp_direction
Definition: rte_security.h:530
rte_security_ctx::device
void * device
Definition: rte_security.h:70
rte_security_macsec_sa_create
__rte_experimental int rte_security_macsec_sa_create(struct rte_security_ctx *instance, struct rte_security_macsec_sa *conf)
rte_security_ipsec_xform::esn
union rte_security_ipsec_xform::@336 esn
rte_security_ipsec_sa_options::iv_gen_disable
uint32_t iv_gen_disable
Definition: rte_security.h:216
RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO
@ RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO
Definition: rte_security.h:637
rte_security_ipsec_tunnel_param::hlimit
uint8_t hlimit
Definition: rte_security.h:122
rte_security_pdcp_xform::sdap_enabled
uint8_t sdap_enabled
Definition: rte_security.h:591
RTE_SECURITY_IPSEC_SA_DIR_INGRESS
@ RTE_SECURITY_IPSEC_SA_DIR_INGRESS
Definition: rte_security.h:292
RTE_CRYPTO_OP_SECURITY_SESSION
@ RTE_CRYPTO_OP_SECURITY_SESSION
Definition: rte_crypto.h:65
RTE_SECURITY_DOCSIS_DOWNLINK
@ RTE_SECURITY_DOCSIS_DOWNLINK
Definition: rte_security.h:602
rte_security_macsec_xform::send_sci
uint16_t send_sci
Definition: rte_security.h:488
rte_security_capability
Definition: rte_security.h:1119
rte_security_session_protocol
rte_security_session_protocol
Definition: rte_security.h:646
rte_security_macsec_sa::ssci
uint32_t ssci
Definition: rte_security.h:389
rte_security_capability::replay_win_sz_max
uint32_t replay_win_sz_max
Definition: rte_security.h:1135
rte_security_ipsec_sa_options::stats
uint32_t stats
Definition: rte_security.h:202
rte_security_ipsec_xform::udp
struct rte_security_ipsec_udp_param udp
Definition: rte_security.h:354
rte_security_capabilities_get
const struct rte_security_capability * rte_security_capabilities_get(struct rte_security_ctx *instance)
rte_security_macsec_sc::sa_in_use
uint8_t sa_in_use[RTE_SECURITY_MACSEC_NUM_AN]
Definition: rte_security.h:407
rte_security_ipsec_sa_options::copy_dscp
uint32_t copy_dscp
Definition: rte_security.h:160
rte_security_pdcp_xform::bearer
int8_t bearer
Definition: rte_security.h:555
rte_security_macsec_sc::sa_id_rekey
uint16_t sa_id_rekey
Definition: rte_security.h:415
rte_security_pdcp_xform::hfn
uint32_t hfn
Definition: rte_security.h:574
RTE_SECURITY_PROTOCOL_PDCP
@ RTE_SECURITY_PROTOCOL_PDCP
Definition: rte_security.h:651
rte_security_macsec_xform::sectag_version
uint16_t sectag_version
Definition: rte_security.h:484
rte_security_macsec_xform::sectag_insert_mode
uint16_t sectag_insert_mode
Definition: rte_security.h:478
rte_security_capability::ol_flags
uint32_t ol_flags
Definition: rte_security.h:1193
rte_security_session_action_type
rte_security_session_action_type
Definition: rte_security.h:622
rte_security_ipsec_xform::life
struct rte_security_ipsec_lifetime life
Definition: rte_security.h:340
rte_cryptodev_capabilities
Definition: rte_cryptodev.h:197
rte_security_macsec_xform::sci
uint64_t sci
Definition: rte_security.h:458
rte_security_ipsec_sa_options::dec_ttl
uint32_t dec_ttl
Definition: rte_security.h:185
RTE_SECURITY_IPSEC_SA_DIR_EGRESS
@ RTE_SECURITY_IPSEC_SA_DIR_EGRESS
Definition: rte_security.h:290
unlikely
#define unlikely(x)
Definition: rte_branch_prediction.h:42
RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL
@ RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL
Definition: rte_security.h:629
rte_security_ipsec_tunnel_param::src_addr
struct in6_addr src_addr
Definition: rte_security.h:114
rte_crypto.h
rte_security_session_opaque_data_get
static uint64_t rte_security_session_opaque_data_get(void *sess)
Definition: rte_security.h:863
rte_security_session_create
void * rte_security_session_create(struct rte_security_ctx *instance, struct rte_security_session_conf *conf, struct rte_mempool *mp)
rte_security_macsec_xform::replay_win_sz
uint32_t replay_win_sz
Definition: rte_security.h:501
rte_security_ipsec_sa_options::ip_reassembly_en
uint32_t ip_reassembly_en
Definition: rte_security.h:276
RTE_SECURITY_PDCP_MODE_SHORT_MAC
@ RTE_SECURITY_PDCP_MODE_SHORT_MAC
Definition: rte_security.h:526
rte_security_macsec_xform
Definition: rte_security.h:447
RTE_SECURITY_PDCP_SN_SIZE_12
@ RTE_SECURITY_PDCP_SN_SIZE_12
Definition: rte_security.h:542
rte_security_ipsec_tunnel_param::ipv6
struct rte_security_ipsec_tunnel_param::@332::@335 ipv6
rte_security_ipsec_sa_direction
rte_security_ipsec_sa_direction
Definition: rte_security.h:289
rte_security_pdcp_sn_size
rte_security_pdcp_sn_size
Definition: rte_security.h:536
RTE_SECURITY_MACSEC_DIR_TX
@ RTE_SECURITY_MACSEC_DIR_TX
Definition: rte_security.h:363
rte_security_pdcp_xform::pkt_dir
enum rte_security_pdcp_direction pkt_dir
Definition: rte_security.h:568
rte_security_capability::re_key
uint16_t re_key
Definition: rte_security.h:1169
rte_security_ipsec_tunnel_param
Definition: rte_security.h:95
rte_security_ipsec_sa_options
Definition: rte_security.h:137
RTE_SECURITY_PDCP_MODE_CONTROL
@ RTE_SECURITY_PDCP_MODE_CONTROL
Definition: rte_security.h:524
rte_security_ipsec_sa_options::tunnel_hdr_verify
uint32_t tunnel_hdr_verify
Definition: rte_security.h:225
rte_security_ipsec_xform::mode
enum rte_security_ipsec_sa_mode mode
Definition: rte_security.h:336
rte_security_ctx
Definition: rte_security.h:69
RTE_SECURITY_IPSEC_SA_MODE_TUNNEL
@ RTE_SECURITY_IPSEC_SA_MODE_TUNNEL
Definition: rte_security.h:32
rte_crypto_sym_op::session
void * session
Definition: rte_crypto_sym.h:632
rte_security_macsec_sc::reserved
uint8_t reserved
Definition: rte_security.h:411
rte_security_capability::validate_frames
uint16_t validate_frames
Definition: rte_security.h:1167
rte_security_macsec_xform::cipher_off
uint8_t cipher_off
Definition: rte_security.h:453
rte_security_macsec_sa::key
struct rte_security_macsec_sa::@339 key
RTE_SECURITY_MACSEC_ALG_GCM_128
@ RTE_SECURITY_MACSEC_ALG_GCM_128
Definition: rte_security.h:429
rte_security_capability::mtu
uint16_t mtu
Definition: rte_security.h:1143
rte_security_macsec_xform::mtu
uint16_t mtu
Definition: rte_security.h:464
rte_security_capability::alg
enum rte_security_macsec_alg alg
Definition: rte_security.h:1145
rte_security_macsec_xform::preserve_icv
uint16_t preserve_icv
Definition: rte_security.h:511
RTE_SECURITY_IPSEC_SA_PROTO_AH
@ RTE_SECURITY_IPSEC_SA_PROTO_AH
Definition: rte_security.h:38
rte_security_session_destroy
int rte_security_session_destroy(struct rte_security_ctx *instance, void *sess)
RTE_SECURITY_MACSEC_NUM_AN
#define RTE_SECURITY_MACSEC_NUM_AN
Definition: rte_security.h:369
rte_security_dynfield
static __rte_experimental rte_security_dynfield_t * rte_security_dynfield(struct rte_mbuf *mbuf)
Definition: rte_security.h:836
rte_security_session_conf::crypto_xform
struct rte_crypto_sym_xform * crypto_xform
Definition: rte_security.h:675
rte_security_macsec_xform::preserve_sectag
uint16_t preserve_sectag
Definition: rte_security.h:509
rte_security_ipsec_lifetime::packets_soft_limit
uint64_t packets_soft_limit
Definition: rte_security.h:310
rte_security_ipsec_tunnel_param::ttl
uint8_t ttl
Definition: rte_security.h:109
rte_mbuf
Definition: rte_mbuf_core.h:465
RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO
@ RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO
Definition: rte_security.h:625
rte_security_capability::pdcp
struct rte_security_capability::@352::@356 pdcp
rte_security_pdcp_xform::en_ordering
uint8_t en_ordering
Definition: rte_security.h:559
RTE_SEC_CTX_F_FAST_SET_MDATA
#define RTE_SEC_CTX_F_FAST_SET_MDATA
Definition: rte_security.h:84
rte_security_session_conf::userdata
void * userdata
Definition: rte_security.h:677
rte_security_ipsec_sa_mode
rte_security_ipsec_sa_mode
Definition: rte_security.h:29
rte_security_ipsec_xform::spi
uint32_t spi
Definition: rte_security.h:326
rte_security_capability::preserve_icv
uint16_t preserve_icv
Definition: rte_security.h:1165
rte_security_macsec_xform::end_station
uint16_t end_station
Definition: rte_security.h:486
rte_security_pdcp_xform::hfn_ovrd
uint8_t hfn_ovrd
Definition: rte_security.h:585
rte_crypto_op
Definition: rte_crypto.h:83
rte_security_dynfield_offset
int rte_security_dynfield_offset
rte_security_ipsec_sa_options::copy_df
uint32_t copy_df
Definition: rte_security.h:176
RTE_SECURITY_DOCSIS_UPLINK
@ RTE_SECURITY_DOCSIS_UPLINK
Definition: rte_security.h:598
rte_security_macsec_sc_stats_get
__rte_experimental int rte_security_macsec_sc_stats_get(struct rte_security_ctx *instance, uint16_t sc_id, struct rte_security_macsec_sc_stats *stats)
rte_mbuf_dyn.h
rte_security_session_fast_mdata_set
static void rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
Definition: rte_security.h:892
rte_security_ipsec_tunnel_type
rte_security_ipsec_tunnel_type
Definition: rte_security.h:45
RTE_SECURITY_IPSEC_TUNNEL_IPV4
@ RTE_SECURITY_IPSEC_TUNNEL_IPV4
Definition: rte_security.h:46
rte_security_ipsec_sa_options::udp_encap
uint32_t udp_encap
Definition: rte_security.h:151
rte_security_ctx::macsec_sc_cnt
uint16_t macsec_sc_cnt
Definition: rte_security.h:76
rte_security_capability::capa_flags
uint32_t capa_flags
Definition: rte_security.h:1179
rte_security_ipsec_tunnel_param::src_ip
struct in_addr src_ip
Definition: rte_security.h:101
rte_security_ipsec_xform::salt
uint32_t salt
Definition: rte_security.h:328
rte_security_session_conf::action_type
enum rte_security_session_action_type action_type
Definition: rte_security.h:663
rte_security_capability::crypto_capabilities
const struct rte_cryptodev_capabilities * crypto_capabilities
Definition: rte_security.h:1190
rte_security_pdcp_xform::sn_size
enum rte_security_pdcp_sn_size sn_size
Definition: rte_security.h:570
rte_security_capability::action
enum rte_security_session_action_type action
Definition: rte_security.h:1120
rte_security_ipsec_lifetime
Definition: rte_security.h:309
rte_security_ipsec_lifetime::bytes_soft_limit
uint64_t bytes_soft_limit
Definition: rte_security.h:312
rte_security_capability::docsis
struct rte_security_capability::@352::@357 docsis
rte_security_macsec_sc::re_key_en
uint8_t re_key_en
Definition: rte_security.h:418
rte_ip.h
rte_security_macsec_sa::salt
uint8_t salt[RTE_SECURITY_MACSEC_SALT_LEN]
Definition: rte_security.h:385
rte_security_session_update
__rte_experimental int rte_security_session_update(struct rte_security_ctx *instance, void *sess, struct rte_security_session_conf *conf)
rte_security_capability::max_nb_sc
uint16_t max_nb_sc
Definition: rte_security.h:1147
rte_security_ipsec_lifetime::packets_hard_limit
uint64_t packets_hard_limit
Definition: rte_security.h:314
rte_security_capability::ctrl_port_enable
uint16_t ctrl_port_enable
Definition: rte_security.h:1161
rte_crypto_op::sym
struct rte_crypto_sym_op sym[0]
Definition: rte_crypto.h:135
rte_security_macsec_xform::alg
enum rte_security_macsec_alg alg
Definition: rte_security.h:451
rte_security_macsec_sc_create
__rte_experimental int rte_security_macsec_sc_create(struct rte_security_ctx *instance, struct rte_security_macsec_sc *conf)
rte_security_ipsec_sa_options::copy_flabel
uint32_t copy_flabel
Definition: rte_security.h:168
rte_security_ops
Definition: rte_security_driver.h:222
rte_security_macsec_sa::next_pn
uint32_t next_pn
Definition: rte_security.h:393
rte_security_macsec_xform::sectag_off
uint8_t sectag_off
Definition: rte_security.h:469
rte_security_macsec_sc
Definition: rte_security.h:399
rte_security_ctx::sess_cnt
uint16_t sess_cnt
Definition: rte_security.h:74
rte_security_capability::options
struct rte_security_ipsec_sa_options options
Definition: rte_security.h:1133
rte_security_ctx::macsec_sa_cnt
uint16_t macsec_sa_cnt
Definition: rte_security.h:78
rte_security_macsec_xform::ctrl_port_enable
uint16_t ctrl_port_enable
Definition: rte_security.h:482
rte_security_capability_idx
Definition: rte_security.h:1231
RTE_SECURITY_PDCP_UPLINK
@ RTE_SECURITY_PDCP_UPLINK
Definition: rte_security.h:531
rte_security_ipsec_sa_options::ecn
uint32_t ecn
Definition: rte_security.h:194
RTE_SECURITY_PDCP_SN_SIZE_18
@ RTE_SECURITY_PDCP_SN_SIZE_18
Definition: rte_security.h:546
rte_security_pdcp_xform::reserved
uint16_t reserved
Definition: rte_security.h:593
rte_security_macsec_sa::data
const uint8_t * data
Definition: rte_security.h:381
rte_security_ctx::flags
uint32_t flags
Definition: rte_security.h:80
rte_security_capability::ipsec
struct rte_security_capability::@352::@354 ipsec
rte_security_ipsec_lifetime::bytes_hard_limit
uint64_t bytes_hard_limit
Definition: rte_security.h:316
RTE_SECURITY_PDCP_DOWNLINK
@ RTE_SECURITY_PDCP_DOWNLINK
Definition: rte_security.h:532
rte_security_session_opaque_data_set
static void rte_security_session_opaque_data_set(void *sess, uint64_t opaque)
Definition: rte_security.h:872
rte_security_macsec_xform::icv_include_da_sa
uint16_t icv_include_da_sa
Definition: rte_security.h:480
rte_security_ipsec_sa_options::esn
uint32_t esn
Definition: rte_security.h:143
rte_security_macsec_sa_stats_get
__rte_experimental int rte_security_macsec_sa_stats_get(struct rte_security_ctx *instance, uint16_t sa_id, struct rte_security_macsec_sa_stats *stats)
rte_common.h
rte_security_ipsec_tunnel_param::dscp
uint8_t dscp
Definition: rte_security.h:105
rte_security_macsec_xform::sc_id
uint16_t sc_id
Definition: rte_security.h:460
RTE_SECURITY_PROTOCOL_MACSEC
@ RTE_SECURITY_PROTOCOL_MACSEC
Definition: rte_security.h:649
RTE_SECURITY_PDCP_SN_SIZE_15
@ RTE_SECURITY_PDCP_SN_SIZE_15
Definition: rte_security.h:544
rte_security_capability::max_nb_sa
uint16_t max_nb_sa
Definition: rte_security.h:1149
rte_security_capability::anti_replay
uint16_t anti_replay
Definition: rte_security.h:1171
__rte_security_attach_session
static int __rte_security_attach_session(struct rte_crypto_sym_op *sym_op, void *sess)
Definition: rte_security.h:941
rte_security_ipsec_tunnel_param::ipv4
struct rte_security_ipsec_tunnel_param::@332::@334 ipv4
rte_security_session_conf::protocol
enum rte_security_session_protocol protocol
Definition: rte_security.h:665
rte_security_capability::mode
enum rte_security_ipsec_sa_mode mode
Definition: rte_security.h:1129
rte_security_capability::fixed_sectag_insert
uint16_t fixed_sectag_insert
Definition: rte_security.h:1157
rte_security_docsis_direction
rte_security_docsis_direction
Definition: rte_security.h:597
rte_security_macsec_sa::xpn
uint32_t xpn
Definition: rte_security.h:391
rte_security_ipsec_tunnel_param::type
enum rte_security_ipsec_tunnel_type type
Definition: rte_security.h:96
RTE_SECURITY_IPSEC_TUNNEL_IPV6
@ RTE_SECURITY_IPSEC_TUNNEL_IPV6
Definition: rte_security.h:48
rte_security_ipsec_xform::direction
enum rte_security_ipsec_sa_direction direction
Definition: rte_security.h:332
rte_security_macsec_direction
rte_security_macsec_direction
Definition: rte_security.h:361
rte_security_dynfield_is_registered
static __rte_experimental bool rte_security_dynfield_is_registered(void)
Definition: rte_security.h:852
RTE_SECURITY_MACSEC_ALG_GCM_XPN_256
@ RTE_SECURITY_MACSEC_ALG_GCM_XPN_256
Definition: rte_security.h:432
rte_crypto_sym_xform
Definition: rte_crypto_sym.h:578
rte_security_macsec_xform::scb
uint16_t scb
Definition: rte_security.h:490
rte_mempool
Definition: rte_mempool.h:219
rte_security_capability::preserve_sectag
uint16_t preserve_sectag
Definition: rte_security.h:1163
rte_security_docsis_xform
Definition: rte_security.h:613
rte_security_capability::domain
enum rte_security_pdcp_domain domain
Definition: rte_security.h:1177
rte_security_pdcp_xform
Definition: rte_security.h:554
rte_security_ipsec_xform::options
struct rte_security_ipsec_sa_options options
Definition: rte_security.h:330
rte_security_macsec_xform::encrypt
uint16_t encrypt
Definition: rte_security.h:495
RTE_CRYPTO_OP_TYPE_SYMMETRIC
@ RTE_CRYPTO_OP_TYPE_SYMMETRIC
Definition: rte_crypto.h:32
rte_security_macsec_xform::reserved
uint16_t reserved
Definition: rte_security.h:497
rte_security_macsec_sa::an
uint8_t an
Definition: rte_security.h:387
rte_security_ipsec_xform::replay_win_sz
uint32_t replay_win_sz
Definition: rte_security.h:342
rte_security_capability::reserved
uint16_t reserved
Definition: rte_security.h:1173
RTE_STD_C11
#define RTE_STD_C11
Definition: rte_common.h:39
RTE_SECURITY_PDCP_SN_SIZE_5
@ RTE_SECURITY_PDCP_SN_SIZE_5
Definition: rte_security.h:538
rte_security_ipsec_sa_options::reserved_opts
uint32_t reserved_opts
Definition: rte_security.h:285
rte_security_docsis_xform::direction
enum rte_security_docsis_direction direction
Definition: rte_security.h:614
rte_security_attach_session
static int rte_security_attach_session(struct rte_crypto_op *op, void *sess)
Definition: rte_security.h:958
rte_security_capability::protocol
enum rte_security_session_protocol protocol
Definition: rte_security.h:1122
RTE_SECURITY_PROTOCOL_IPSEC
@ RTE_SECURITY_PROTOCOL_IPSEC
Definition: rte_security.h:647
rte_crypto_op::sess_type
uint8_t sess_type
Definition: rte_crypto.h:99
rte_security_ipsec_tunnel_param::flabel
uint32_t flabel
Definition: rte_security.h:120
RTE_SECURITY_IPSEC_SA_PROTO_ESP
@ RTE_SECURITY_IPSEC_SA_PROTO_ESP
Definition: rte_security.h:40
RTE_MBUF_DYNFIELD
#define RTE_MBUF_DYNFIELD(m, offset, type)
Definition: rte_mbuf_dyn.h:227
rte_security_macsec_sc::dir
enum rte_security_macsec_direction dir
Definition: rte_security.h:401
rte_security_macsec_xform::protect_frames
uint16_t protect_frames
Definition: rte_security.h:471
rte_security_ipsec_sa_options::l4_csum_enable
uint32_t l4_csum_enable
Definition: rte_security.h:263
rte_security_pdcp_xform::domain
enum rte_security_pdcp_domain domain
Definition: rte_security.h:566
rte_security_macsec_sc::sci
uint64_t sci
Definition: rte_security.h:416
RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL
@ RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL
Definition: rte_security.h:633
rte_security_macsec_sa::length
uint16_t length
Definition: rte_security.h:382
RTE_SECURITY_PDCP_MODE_DATA
@ RTE_SECURITY_PDCP_MODE_DATA
Definition: rte_security.h:525
rte_security_ipsec_sa_options::ip_csum_enable
uint32_t ip_csum_enable
Definition: rte_security.h:247
rte_security_macsec_sc::active
uint8_t active
Definition: rte_security.h:409
rte_security_macsec_xform::dir
enum rte_security_macsec_direction dir
Definition: rte_security.h:449
rte_security_session_fast_mdata_get
static uint64_t rte_security_session_fast_mdata_get(void *sess)
Definition: rte_security.h:883
rte_security_macsec_sc_destroy
__rte_experimental int rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id)
rte_security_ctx::ops
const struct rte_security_ops * ops
Definition: rte_security.h:72
rte_security_ipsec_xform::proto
enum rte_security_ipsec_sa_protocol proto
Definition: rte_security.h:334
rte_security_ipsec_tunnel_param::dst_addr
struct in6_addr dst_addr
Definition: rte_security.h:116
rte_security_dynfield_t
uint64_t rte_security_dynfield_t
Definition: rte_security.h:817
rte_security_ipsec_xform::tunnel
struct rte_security_ipsec_tunnel_param tunnel
Definition: rte_security.h:338
rte_security_capability::max_nb_sess
uint16_t max_nb_sess
Definition: rte_security.h:1151
rte_security_capability::icv_include_da_sa
uint16_t icv_include_da_sa
Definition: rte_security.h:1159
rte_security_capability::relative_sectag_insert
uint16_t relative_sectag_insert
Definition: rte_security.h:1155
rte_crypto_op::type
uint8_t type
Definition: rte_crypto.h:89
RTE_SECURITY_MACSEC_ALG_GCM_XPN_128
@ RTE_SECURITY_MACSEC_ALG_GCM_XPN_128
Definition: rte_security.h:431
__rte_security_set_pkt_metadata
__rte_experimental int __rte_security_set_pkt_metadata(struct rte_security_ctx *instance, void *sess, struct rte_mbuf *m, void *params)
rte_security_session_conf
Definition: rte_security.h:662
rte_security_macsec_alg
rte_security_macsec_alg
Definition: rte_security.h:428
rte_security_session_stats_get
__rte_experimental int rte_security_session_stats_get(struct rte_security_ctx *instance, void *sess, struct rte_security_stats *stats)
RTE_SECURITY_MACSEC_ALG_GCM_256
@ RTE_SECURITY_MACSEC_ALG_GCM_256
Definition: rte_security.h:430
RTE_SECURITY_PDCP_SN_SIZE_7
@ RTE_SECURITY_PDCP_SN_SIZE_7
Definition: rte_security.h:540
rte_security_macsec_xform::validate_frames
uint16_t validate_frames
Definition: rte_security.h:503
rte_security_macsec_sa
Definition: rte_security.h:376
rte_security_capability::replay_win_sz
uint32_t replay_win_sz
Definition: rte_security.h:1153
rte_security_macsec_xform::replay_protect
uint16_t replay_protect
Definition: rte_security.h:513
RTE_SECURITY_MACSEC_DIR_RX
@ RTE_SECURITY_MACSEC_DIR_RX
Definition: rte_security.h:365
rte_security_capability::macsec
struct rte_security_capability::@352::@355 macsec
rte_security_ipsec_sa_options::udp_ports_verify
uint32_t udp_ports_verify
Definition: rte_security.h:232
rte_security_macsec_sa_destroy
__rte_experimental int rte_security_macsec_sa_destroy(struct rte_security_ctx *instance, uint16_t sa_id)
RTE_SECURITY_PROTOCOL_DOCSIS
@ RTE_SECURITY_PROTOCOL_DOCSIS
Definition: rte_security.h:653
rte_security_capability::direction
enum rte_security_ipsec_sa_direction direction
Definition: rte_security.h:1131
rte_security_macsec_sa::dir
enum rte_security_macsec_direction dir
Definition: rte_security.h:378
rte_security_pdcp_xform::hfn_threshold
uint32_t hfn_threshold
Definition: rte_security.h:576
rte_security_pdcp_xform::remove_duplicates
uint8_t remove_duplicates
Definition: rte_security.h:564
rte_security_capability::proto
enum rte_security_ipsec_sa_protocol proto
Definition: rte_security.h:1127
rte_security_ipsec_sa_protocol
rte_security_ipsec_sa_protocol
Definition: rte_security.h:37
rte_security_pdcp_domain
rte_security_pdcp_domain
Definition: rte_security.h:523
rte_security_ipsec_tunnel_param::df
uint8_t df
Definition: rte_security.h:107
rte_crypto_sym_op
Definition: rte_crypto_sym.h:626
RTE_SECURITY_MACSEC_SALT_LEN
#define RTE_SECURITY_MACSEC_SALT_LEN
Definition: rte_security.h:371
rte_security_capability_get
const struct rte_security_capability * rte_security_capability_get(struct rte_security_ctx *instance, struct rte_security_capability_idx *idx)
rte_security_session_get_size
unsigned int rte_security_session_get_size(struct rte_security_ctx *instance)
rte_security_ipsec_xform
Definition: rte_security.h:325
RTE_SECURITY_ACTION_TYPE_NONE
@ RTE_SECURITY_ACTION_TYPE_NONE
Definition: rte_security.h:623
rte_security_set_pkt_metadata
static int rte_security_set_pkt_metadata(struct rte_security_ctx *instance, void *sess, struct rte_mbuf *mb, void *params)
Definition: rte_security.h:919
RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT
@ RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT
Definition: rte_security.h:30
rte_security_macsec_sc::sa_id
uint16_t sa_id[RTE_SECURITY_MACSEC_NUM_AN]
Definition: rte_security.h:405
rte_security_ipsec_tunnel_param::dst_ip
struct in_addr dst_ip
Definition: rte_security.h:103