MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ipsec_sad_create

Function ipsec_sad_create

dpdk/examples/ipsec-secgw/sad.c:108–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

106}
107
108int
109ipsec_sad_create(const char *name, struct ipsec_sad *sad,
110 int socket_id, struct ipsec_sa_cnt *sa_cnt)
111{
112 int ret;
113 struct rte_ipsec_sad_conf sad_conf;
114 char sad_name[RTE_IPSEC_SAD_NAMESIZE];
115
116 if ((name == NULL) || (sad == NULL) || (sa_cnt == NULL))
117 return -EINVAL;
118
119 ret = snprintf(sad_name, RTE_IPSEC_SAD_NAMESIZE, "%s_v4", name);
120 if (ret < 0 || ret >= RTE_IPSEC_SAD_NAMESIZE)
121 return -ENAMETOOLONG;
122
123 sad_conf.socket_id = socket_id;
124 sad_conf.flags = 0;
125 /* Make SAD have extra 25% of required number of entries */
126 sad_conf.max_sa[RTE_IPSEC_SAD_SPI_ONLY] = sa_cnt->nb_v4 * 5 / 4;
127 sad_conf.max_sa[RTE_IPSEC_SAD_SPI_DIP] = 0;
128 sad_conf.max_sa[RTE_IPSEC_SAD_SPI_DIP_SIP] = 0;
129
130 if (sa_cnt->nb_v4 != 0) {
131 sad->sad_v4 = rte_ipsec_sad_create(sad_name, &sad_conf);
132 if (sad->sad_v4 == NULL)
133 return -rte_errno;
134 }
135
136 ret = snprintf(sad_name, RTE_IPSEC_SAD_NAMESIZE, "%s_v6", name);
137 if (ret < 0 || ret >= RTE_IPSEC_SAD_NAMESIZE)
138 return -ENAMETOOLONG;
139 sad_conf.flags = RTE_IPSEC_SAD_FLAG_IPV6;
140 sad_conf.max_sa[RTE_IPSEC_SAD_SPI_ONLY] = sa_cnt->nb_v6 * 5 / 4;
141
142 if (sa_cnt->nb_v6 != 0) {
143 sad->sad_v6 = rte_ipsec_sad_create(name, &sad_conf);
144 if (sad->sad_v6 == NULL)
145 return -rte_errno;
146 }
147
148 return 0;
149}

Callers 1

sa_initFunction · 0.85

Calls 2

snprintfFunction · 0.85
rte_ipsec_sad_createFunction · 0.85

Tested by

no test coverage detected