Lines Matching full:esp
11 * This file is derived from net/ipv4/esp.c
22 #include <net/esp.h>
320 /* Move ESP header back into place. */
380 struct esp_info *esp, in esp6_output_udp_encap() argument
388 len = skb->len + esp->tailen - skb_transport_offset(skb); in esp6_output_udp_encap()
392 uh = (struct udphdr *)esp->esph; in esp6_output_udp_encap()
412 struct esp_info *esp) in esp6_output_tcp_encap() argument
414 __be16 *lenp = (void *)esp->esph; in esp6_output_tcp_encap()
419 len = skb->len + esp->tailen - skb_transport_offset(skb); in esp6_output_tcp_encap()
438 struct esp_info *esp) in esp6_output_tcp_encap() argument
445 struct esp_info *esp) in esp6_output_encap() argument
462 esph = esp6_output_udp_encap(skb, encap_type, esp, sport, dport); in esp6_output_encap()
465 esph = esp6_output_tcp_encap(x, skb, esp); in esp6_output_encap()
472 esp->esph = esph; in esp6_output_encap()
477 int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp) in esp6_output_head() argument
484 int tailen = esp->tailen; in esp6_output_head()
487 int err = esp6_output_encap(x, skb, esp); in esp6_output_head()
510 esp->inplace = false; in esp6_output_head()
526 esp_output_fill_trailer(tail, esp->tfclen, esp->plen, esp->proto); in esp6_output_head()
551 esph_offset = (unsigned char *)esp->esph - skb_transport_header(skb); in esp6_output_head()
557 esp->esph = (struct ip_esp_hdr *)(skb_transport_header(skb) + esph_offset); in esp6_output_head()
560 esp_output_fill_trailer(tail, esp->tfclen, esp->plen, esp->proto); in esp6_output_head()
568 int esp6_output_tail(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp) in esp6_output_tail() argument
596 tmp = esp_alloc_tmp(aead, esp->nfrags + 2, extralen); in esp6_output_tail()
605 if (esp->inplace) in esp6_output_tail()
608 dsg = &sg[esp->nfrags]; in esp6_output_tail()
610 esph = esp_output_set_esn(skb, x, esp->esph, extra); in esp6_output_tail()
611 esp->esph = esph; in esp6_output_tail()
613 sg_init_table(sg, esp->nfrags); in esp6_output_tail()
616 assoclen + ivlen + esp->clen + alen); in esp6_output_tail()
620 if (!esp->inplace) { in esp6_output_tail()
644 assoclen + ivlen + esp->clen + alen); in esp6_output_tail()
654 aead_request_set_crypt(req, sg, dsg, ivlen + esp->clen, iv); in esp6_output_tail()
658 memcpy(iv + ivlen - min(ivlen, 8), (u8 *)&esp->seqno + 8 - min(ivlen, 8), in esp6_output_tail()
697 struct esp_info esp; in esp6_output() local
699 esp.inplace = true; in esp6_output()
701 esp.proto = *skb_mac_header(skb); in esp6_output()
709 esp.tfclen = 0; in esp6_output()
716 esp.tfclen = padto - skb->len; in esp6_output()
719 esp.clen = ALIGN(skb->len + 2 + esp.tfclen, blksize); in esp6_output()
720 esp.plen = esp.clen - skb->len - esp.tfclen; in esp6_output()
721 esp.tailen = esp.tfclen + esp.plen + alen; in esp6_output()
723 esp.esph = ip_esp_hdr(skb); in esp6_output()
725 esp.nfrags = esp6_output_head(x, skb, &esp); in esp6_output()
726 if (esp.nfrags < 0) in esp6_output()
727 return esp.nfrags; in esp6_output()
729 esph = esp.esph; in esp6_output()
733 esp.seqno = cpu_to_be64(XFRM_SKB_CB(skb)->seq.output.low + in esp6_output()
738 return esp6_output_tail(x, skb, &esp); in esp6_output()
761 net_dbg_ratelimited("ipsec esp packet is garbage padlen=%d, elen=%d\n", in esp_remove_trailer()
1198 NL_SET_ERR_MSG(extack, "ESP: AEAD or CRYPT must be provided"); in esp6_init_state()
1228 NL_SET_ERR_MSG(extack, "Unsupported encapsulation type for ESP"); in esp6_init_state()