From 5ef2546767525c8a4a3c2bc60357b23c3dffcf6b Mon Sep 17 00:00:00 2001 From: Olivier Matz Date: Tue, 21 May 2019 18:13:06 +0200 Subject: [PATCH] net: add rte prefix to ESP structure Add 'rte_' prefix to structures: - rename struct esp_hdr as struct rte_esp_hdr. Signed-off-by: Olivier Matz Reviewed-by: Stephen Hemminger Reviewed-by: Maxime Coquelin Reviewed-by: Ferruh Yigit --- app/test/test_ipsec.c | 4 +-- examples/ipsec-secgw/esp.c | 47 +++++++++++++++++++----------------- examples/ipsec-secgw/sa.c | 6 ++--- lib/librte_ethdev/rte_flow.h | 2 +- lib/librte_ipsec/crypto.h | 2 +- lib/librte_ipsec/esp_inb.c | 10 ++++---- lib/librte_ipsec/esp_outb.c | 8 +++--- lib/librte_ipsec/sa.c | 10 +++++--- lib/librte_net/rte_esp.h | 2 +- 9 files changed, 48 insertions(+), 43 deletions(-) diff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c index 64e56c0561..4342b730b7 100644 --- a/app/test/test_ipsec.c +++ b/app/test/test_ipsec.c @@ -569,12 +569,12 @@ setup_test_string_tunneled(struct rte_mempool *mpool, const char *string, size_t len, uint32_t spi, uint32_t seq) { struct rte_mbuf *m = rte_pktmbuf_alloc(mpool); - uint32_t hdrlen = sizeof(struct ipv4_hdr) + sizeof(struct esp_hdr); + uint32_t hdrlen = sizeof(struct ipv4_hdr) + sizeof(struct rte_esp_hdr); uint32_t taillen = sizeof(struct esp_tail); uint32_t t_len = len + hdrlen + taillen; uint32_t padlen; - struct esp_hdr esph = { + struct rte_esp_hdr esph = { .spi = rte_cpu_to_be_32(spi), .seq = rte_cpu_to_be_32(seq) }; diff --git a/examples/ipsec-secgw/esp.c b/examples/ipsec-secgw/esp.c index faa84ddd13..f11d095ba7 100644 --- a/examples/ipsec-secgw/esp.c +++ b/examples/ipsec-secgw/esp.c @@ -49,7 +49,7 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa, } payload_len = rte_pktmbuf_pkt_len(m) - ip_hdr_len - - sizeof(struct esp_hdr) - sa->iv_len - sa->digest_len; + sizeof(struct rte_esp_hdr) - sa->iv_len - sa->digest_len; if ((payload_len & (sa->block_size - 1)) || (payload_len <= 0)) { RTE_LOG_DP(DEBUG, IPSEC_ESP, "payload %d not multiple of %u\n", @@ -61,13 +61,14 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa, sym_cop->m_src = m; if (sa->aead_algo == RTE_CRYPTO_AEAD_AES_GCM) { - sym_cop->aead.data.offset = ip_hdr_len + sizeof(struct esp_hdr) + - sa->iv_len; + sym_cop->aead.data.offset = + ip_hdr_len + sizeof(struct rte_esp_hdr) + sa->iv_len; sym_cop->aead.data.length = payload_len; struct cnt_blk *icb; uint8_t *aad; - uint8_t *iv = RTE_PTR_ADD(ip4, ip_hdr_len + sizeof(struct esp_hdr)); + uint8_t *iv = RTE_PTR_ADD(ip4, ip_hdr_len + + sizeof(struct rte_esp_hdr)); icb = get_cnt_blk(m); icb->salt = sa->salt; @@ -75,7 +76,7 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa, icb->cnt = rte_cpu_to_be_32(1); aad = get_aad(m); - memcpy(aad, iv - sizeof(struct esp_hdr), 8); + memcpy(aad, iv - sizeof(struct rte_esp_hdr), 8); sym_cop->aead.aad.data = aad; sym_cop->aead.aad.phys_addr = rte_pktmbuf_iova_offset(m, aad - rte_pktmbuf_mtod(m, uint8_t *)); @@ -85,12 +86,14 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa, sym_cop->aead.digest.phys_addr = rte_pktmbuf_iova_offset(m, rte_pktmbuf_pkt_len(m) - sa->digest_len); } else { - sym_cop->cipher.data.offset = ip_hdr_len + sizeof(struct esp_hdr) + + sym_cop->cipher.data.offset = ip_hdr_len + + sizeof(struct rte_esp_hdr) + sa->iv_len; sym_cop->cipher.data.length = payload_len; struct cnt_blk *icb; - uint8_t *iv = RTE_PTR_ADD(ip4, ip_hdr_len + sizeof(struct esp_hdr)); + uint8_t *iv = RTE_PTR_ADD(ip4, ip_hdr_len + + sizeof(struct rte_esp_hdr)); uint8_t *iv_ptr = rte_crypto_op_ctod_offset(cop, uint8_t *, IV_OFFSET); @@ -118,7 +121,7 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa, case RTE_CRYPTO_AUTH_SHA1_HMAC: case RTE_CRYPTO_AUTH_SHA256_HMAC: sym_cop->auth.data.offset = ip_hdr_len; - sym_cop->auth.data.length = sizeof(struct esp_hdr) + + sym_cop->auth.data.length = sizeof(struct rte_esp_hdr) + sa->iv_len + payload_len; break; default: @@ -192,7 +195,7 @@ esp_inbound_post(struct rte_mbuf *m, struct ipsec_sa *sa, if (unlikely(sa->flags == TRANSPORT)) { ip = rte_pktmbuf_mtod(m, struct ip *); ip4 = (struct ip *)rte_pktmbuf_adj(m, - sizeof(struct esp_hdr) + sa->iv_len); + sizeof(struct rte_esp_hdr) + sa->iv_len); if (likely(ip->ip_v == IPVERSION)) { memmove(ip4, ip, ip->ip_hl * 4); ip4->ip_p = *nexthdr; @@ -206,7 +209,7 @@ esp_inbound_post(struct rte_mbuf *m, struct ipsec_sa *sa, sizeof(struct ip6_hdr)); } } else - ipip_inbound(m, sizeof(struct esp_hdr) + sa->iv_len); + ipip_inbound(m, sizeof(struct rte_esp_hdr) + sa->iv_len); return 0; } @@ -217,7 +220,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, { struct ip *ip4; struct ip6_hdr *ip6; - struct esp_hdr *esp = NULL; + struct rte_esp_hdr *esp = NULL; uint8_t *padding = NULL, *new_ip, nlp; struct rte_crypto_sym_op *sym_cop; int32_t i; @@ -268,7 +271,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, } /* Check maximum packet size */ - if (unlikely(ip_hdr_len + sizeof(struct esp_hdr) + sa->iv_len + + if (unlikely(ip_hdr_len + sizeof(struct rte_esp_hdr) + sa->iv_len + pad_payload_len + sa->digest_len > IP_MAXPACKET)) { RTE_LOG(ERR, IPSEC_ESP, "ipsec packet is too big\n"); return -EINVAL; @@ -290,20 +293,20 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, switch (sa->flags) { case IP4_TUNNEL: - ip4 = ip4ip_outbound(m, sizeof(struct esp_hdr) + sa->iv_len, + ip4 = ip4ip_outbound(m, sizeof(struct rte_esp_hdr) + sa->iv_len, &sa->src, &sa->dst); - esp = (struct esp_hdr *)(ip4 + 1); + esp = (struct rte_esp_hdr *)(ip4 + 1); break; case IP6_TUNNEL: - ip6 = ip6ip_outbound(m, sizeof(struct esp_hdr) + sa->iv_len, + ip6 = ip6ip_outbound(m, sizeof(struct rte_esp_hdr) + sa->iv_len, &sa->src, &sa->dst); - esp = (struct esp_hdr *)(ip6 + 1); + esp = (struct rte_esp_hdr *)(ip6 + 1); break; case TRANSPORT: new_ip = (uint8_t *)rte_pktmbuf_prepend(m, - sizeof(struct esp_hdr) + sa->iv_len); + sizeof(struct rte_esp_hdr) + sa->iv_len); memmove(new_ip, ip4, ip_hdr_len); - esp = (struct esp_hdr *)(new_ip + ip_hdr_len); + esp = (struct rte_esp_hdr *)(new_ip + ip_hdr_len); ip4 = (struct ip *)new_ip; if (likely(ip4->ip_v == IPVERSION)) { ip4->ip_p = IPPROTO_ESP; @@ -362,7 +365,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, uint8_t *aad; sym_cop->aead.data.offset = ip_hdr_len + - sizeof(struct esp_hdr) + sa->iv_len; + sizeof(struct rte_esp_hdr) + sa->iv_len; sym_cop->aead.data.length = pad_payload_len; /* Fill pad_len using default sequential scheme */ @@ -392,12 +395,12 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, case RTE_CRYPTO_CIPHER_3DES_CBC: case RTE_CRYPTO_CIPHER_AES_CBC: sym_cop->cipher.data.offset = ip_hdr_len + - sizeof(struct esp_hdr); + sizeof(struct rte_esp_hdr); sym_cop->cipher.data.length = pad_payload_len + sa->iv_len; break; case RTE_CRYPTO_CIPHER_AES_CTR: sym_cop->cipher.data.offset = ip_hdr_len + - sizeof(struct esp_hdr) + sa->iv_len; + sizeof(struct rte_esp_hdr) + sa->iv_len; sym_cop->cipher.data.length = pad_payload_len; break; default: @@ -422,7 +425,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, case RTE_CRYPTO_AUTH_SHA1_HMAC: case RTE_CRYPTO_AUTH_SHA256_HMAC: sym_cop->auth.data.offset = ip_hdr_len; - sym_cop->auth.data.length = sizeof(struct esp_hdr) + + sym_cop->auth.data.length = sizeof(struct rte_esp_hdr) + sa->iv_len + pad_payload_len; break; default: diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c index b850e9839e..c65dbe974c 100644 --- a/examples/ipsec-secgw/sa.c +++ b/examples/ipsec-secgw/sa.c @@ -1219,7 +1219,7 @@ static inline void single_inbound_lookup(struct ipsec_sa *sadb, struct rte_mbuf *pkt, struct ipsec_sa **sa_ret) { - struct esp_hdr *esp; + struct rte_esp_hdr *esp; struct ip *ip; uint32_t *src4_addr; uint8_t *src6_addr; @@ -1229,9 +1229,9 @@ single_inbound_lookup(struct ipsec_sa *sadb, struct rte_mbuf *pkt, ip = rte_pktmbuf_mtod(pkt, struct ip *); if (ip->ip_v == IPVERSION) - esp = (struct esp_hdr *)(ip + 1); + esp = (struct rte_esp_hdr *)(ip + 1); else - esp = (struct esp_hdr *)(((struct ip6_hdr *)ip) + 1); + esp = (struct rte_esp_hdr *)(((struct ip6_hdr *)ip) + 1); if (esp->spi == INVALID_SPI) return; diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index e87a706132..c8fa2720c3 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -915,7 +915,7 @@ static const struct rte_flow_item_gtp rte_flow_item_gtp_mask = { * Matches an ESP header. */ struct rte_flow_item_esp { - struct esp_hdr hdr; /**< ESP header definition. */ + struct rte_esp_hdr hdr; /**< ESP header definition. */ }; /** Default mask for RTE_FLOW_ITEM_TYPE_ESP. */ diff --git a/lib/librte_ipsec/crypto.h b/lib/librte_ipsec/crypto.h index 45d4ef7bf3..f8fbf8d4f3 100644 --- a/lib/librte_ipsec/crypto.h +++ b/lib/librte_ipsec/crypto.h @@ -47,7 +47,7 @@ struct aead_gcm_aad { } __attribute__((packed)); struct gcm_esph_iv { - struct esp_hdr esph; + struct rte_esp_hdr esph; uint64_t iv; } __attribute__((packed)); diff --git a/lib/librte_ipsec/esp_inb.c b/lib/librte_ipsec/esp_inb.c index 4e0e12a855..3e12ca1030 100644 --- a/lib/librte_ipsec/esp_inb.c +++ b/lib/librte_ipsec/esp_inb.c @@ -68,7 +68,7 @@ inb_cop_prepare(struct rte_crypto_op *cop, algo = sa->algo_type; ivp = rte_pktmbuf_mtod_offset(mb, uint64_t *, - pofs + sizeof(struct esp_hdr)); + pofs + sizeof(struct rte_esp_hdr)); /* fill sym op fields */ sop = cop->sym; @@ -139,9 +139,9 @@ inb_pkt_prepare(const struct rte_ipsec_sa *sa, const struct replay_sqn *rsn, uint64_t sqn; uint32_t clen, icv_ofs, plen; struct rte_mbuf *ml; - struct esp_hdr *esph; + struct rte_esp_hdr *esph; - esph = rte_pktmbuf_mtod_offset(mb, struct esp_hdr *, hlen); + esph = rte_pktmbuf_mtod_offset(mb, struct rte_esp_hdr *, hlen); /* * retrieve and reconstruct SQN, then check it, then @@ -295,10 +295,10 @@ static inline void * tun_process_step2(struct rte_mbuf *mb, struct rte_mbuf *ml, uint32_t hlen, uint32_t adj, uint32_t tlen, uint32_t *sqn) { - const struct esp_hdr *ph; + const struct rte_esp_hdr *ph; /* read SQN value */ - ph = rte_pktmbuf_mtod_offset(mb, const struct esp_hdr *, hlen); + ph = rte_pktmbuf_mtod_offset(mb, const struct rte_esp_hdr *, hlen); sqn[0] = ph->seq; /* cut of ICV, ESP tail and padding bytes */ diff --git a/lib/librte_ipsec/esp_outb.c b/lib/librte_ipsec/esp_outb.c index c798bc4c49..862a9982da 100644 --- a/lib/librte_ipsec/esp_outb.c +++ b/lib/librte_ipsec/esp_outb.c @@ -108,7 +108,7 @@ outb_tun_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc, { uint32_t clen, hlen, l2len, pdlen, pdofs, plen, tlen; struct rte_mbuf *ml; - struct esp_hdr *esph; + struct rte_esp_hdr *esph; struct esp_tail *espt; char *ph, *pt; uint64_t *iv; @@ -156,7 +156,7 @@ outb_tun_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc, sqn_low16(sqc)); /* update spi, seqn and iv */ - esph = (struct esp_hdr *)(ph + sa->hdr_len); + esph = (struct rte_esp_hdr *)(ph + sa->hdr_len); iv = (uint64_t *)(esph + 1); copy_iv(iv, ivp, sa->iv_len); @@ -275,7 +275,7 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc, uint8_t np; uint32_t clen, hlen, pdlen, pdofs, plen, tlen, uhlen; struct rte_mbuf *ml; - struct esp_hdr *esph; + struct rte_esp_hdr *esph; struct esp_tail *espt; char *ph, *pt; uint64_t *iv; @@ -318,7 +318,7 @@ outb_trs_pkt_prepare(struct rte_ipsec_sa *sa, rte_be64_t sqc, IPPROTO_ESP); /* update spi, seqn and iv */ - esph = (struct esp_hdr *)(ph + uhlen); + esph = (struct rte_esp_hdr *)(ph + uhlen); iv = (uint64_t *)(esph + 1); copy_iv(iv, ivp, sa->iv_len); diff --git a/lib/librte_ipsec/sa.c b/lib/librte_ipsec/sa.c index 846e317fe0..1cb71caa12 100644 --- a/lib/librte_ipsec/sa.c +++ b/lib/librte_ipsec/sa.c @@ -233,7 +233,7 @@ esp_inb_init(struct rte_ipsec_sa *sa) /* these params may differ with new algorithms support */ sa->ctp.auth.offset = 0; sa->ctp.auth.length = sa->icv_len - sa->sqh_len; - sa->ctp.cipher.offset = sizeof(struct esp_hdr) + sa->iv_len; + sa->ctp.cipher.offset = sizeof(struct rte_esp_hdr) + sa->iv_len; sa->ctp.cipher.length = sa->icv_len + sa->ctp.cipher.offset; } @@ -259,7 +259,8 @@ esp_outb_init(struct rte_ipsec_sa *sa, uint32_t hlen) /* these params may differ with new algorithms support */ sa->ctp.auth.offset = hlen; - sa->ctp.auth.length = sizeof(struct esp_hdr) + sa->iv_len + sa->sqh_len; + sa->ctp.auth.length = sizeof(struct rte_esp_hdr) + + sa->iv_len + sa->sqh_len; algo_type = sa->algo_type; @@ -267,13 +268,14 @@ esp_outb_init(struct rte_ipsec_sa *sa, uint32_t hlen) case ALGO_TYPE_AES_GCM: case ALGO_TYPE_AES_CTR: case ALGO_TYPE_NULL: - sa->ctp.cipher.offset = hlen + sizeof(struct esp_hdr) + + sa->ctp.cipher.offset = hlen + sizeof(struct rte_esp_hdr) + sa->iv_len; sa->ctp.cipher.length = 0; break; case ALGO_TYPE_AES_CBC: case ALGO_TYPE_3DES_CBC: - sa->ctp.cipher.offset = sa->hdr_len + sizeof(struct esp_hdr); + sa->ctp.cipher.offset = sa->hdr_len + + sizeof(struct rte_esp_hdr); sa->ctp.cipher.length = sa->iv_len; break; } diff --git a/lib/librte_net/rte_esp.h b/lib/librte_net/rte_esp.h index 8e1b3d2dd8..c569b7906b 100644 --- a/lib/librte_net/rte_esp.h +++ b/lib/librte_net/rte_esp.h @@ -20,7 +20,7 @@ extern "C" { /** * ESP Header */ -struct esp_hdr { +struct rte_esp_hdr { rte_be32_t spi; /**< Security Parameters Index */ rte_be32_t seq; /**< packet sequence number */ } __attribute__((__packed__)); -- 2.20.1