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

Function ipsec_session_create

dpdk/lib/pipeline/rte_swx_ipsec.c:1654–1742  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1652}
1653
1654static int
1655ipsec_session_create(struct rte_swx_ipsec *ipsec,
1656 struct rte_swx_ipsec_sa_params *p,
1657 struct rte_ipsec_session *s)
1658{
1659 struct rte_ipv4_hdr ipv4_hdr;
1660 struct rte_ipv6_hdr ipv6_hdr;
1661 struct rte_crypto_sym_xform crypto_xform[2];
1662 struct rte_ipsec_sa_prm sa_prm;
1663 struct rte_ipsec_sa *sa = NULL;
1664 struct rte_cryptodev_sym_session *crypto_session = NULL;
1665 int sa_size;
1666 int sa_valid = 0, status = 0;
1667
1668 tunnel_ipv4_header_set(&ipv4_hdr, p);
1669 tunnel_ipv6_header_set(&ipv6_hdr, p);
1670
1671 /* IPsec library SA setup. */
1672 status = ipsec_sa_prm_get(p, &sa_prm, &ipv4_hdr, &ipv6_hdr, crypto_xform);
1673 if (status)
1674 goto error;
1675
1676 sa_size = rte_ipsec_sa_size(&sa_prm);
1677 if (sa_size < 0) {
1678 status = sa_size;
1679 goto error;
1680 }
1681 if (!sa_size) {
1682 status = -EINVAL;
1683 goto error;
1684 }
1685
1686 sa = calloc(1, sa_size);
1687 if (!sa) {
1688 status = -ENOMEM;
1689 goto error;
1690 }
1691
1692 sa_size = rte_ipsec_sa_init(sa, &sa_prm, sa_size);
1693 if (sa_size < 0) {
1694 status = sa_size;
1695 goto error;
1696 }
1697 if (!sa_size) {
1698 status = -EINVAL;
1699 goto error;
1700 }
1701
1702 sa_valid = 1;
1703
1704 /* Cryptodev library session setup. */
1705 crypto_session = rte_cryptodev_sym_session_create(ipsec->dev_id,
1706 sa_prm.crypto_xform,
1707 ipsec->mp_session);
1708 if (!crypto_session) {
1709 status = -ENOMEM;
1710 goto error;
1711 }

Callers 1

rte_swx_ipsec_sa_addFunction · 0.85

Calls 12

tunnel_ipv4_header_setFunction · 0.85
tunnel_ipv6_header_setFunction · 0.85
ipsec_sa_prm_getFunction · 0.85
rte_ipsec_sa_sizeFunction · 0.85
callocFunction · 0.85
rte_ipsec_sa_initFunction · 0.85
rte_ipsec_sa_finiFunction · 0.85
memsetFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected