mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
ESP: Export esp_output_fill_trailer function
The esp fill trailer method is identical for both IPv6 and IPv4. Share the implementation for esp6 and esp to avoid code duplication in addition it could be also used at various drivers code. Signed-off-by: Raed Salem <raeds@mellanox.com> Reviewed-by: Boris Pismenny <borisp@mellanox.com> Reviewed-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
a4c278d1be
commit
dda520c4d4
@ -11,6 +11,22 @@ static inline struct ip_esp_hdr *ip_esp_hdr(const struct sk_buff *skb)
|
|||||||
return (struct ip_esp_hdr *)skb_transport_header(skb);
|
return (struct ip_esp_hdr *)skb_transport_header(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void esp_output_fill_trailer(u8 *tail, int tfclen, int plen, __u8 proto)
|
||||||
|
{
|
||||||
|
/* Fill padding... */
|
||||||
|
if (tfclen) {
|
||||||
|
memset(tail, 0, tfclen);
|
||||||
|
tail += tfclen;
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < plen - 2; i++)
|
||||||
|
tail[i] = i + 1;
|
||||||
|
} while (0);
|
||||||
|
tail[plen - 2] = plen - 2;
|
||||||
|
tail[plen - 1] = proto;
|
||||||
|
}
|
||||||
|
|
||||||
struct esp_info {
|
struct esp_info {
|
||||||
struct ip_esp_hdr *esph;
|
struct ip_esp_hdr *esph;
|
||||||
__be64 seqno;
|
__be64 seqno;
|
||||||
|
@ -341,22 +341,6 @@ static void esp_output_done_esn(struct crypto_async_request *base, int err)
|
|||||||
esp_output_done(base, err);
|
esp_output_done(base, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void esp_output_fill_trailer(u8 *tail, int tfclen, int plen, __u8 proto)
|
|
||||||
{
|
|
||||||
/* Fill padding... */
|
|
||||||
if (tfclen) {
|
|
||||||
memset(tail, 0, tfclen);
|
|
||||||
tail += tfclen;
|
|
||||||
}
|
|
||||||
do {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < plen - 2; i++)
|
|
||||||
tail[i] = i + 1;
|
|
||||||
} while (0);
|
|
||||||
tail[plen - 2] = plen - 2;
|
|
||||||
tail[plen - 1] = proto;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct ip_esp_hdr *esp_output_udp_encap(struct sk_buff *skb,
|
static struct ip_esp_hdr *esp_output_udp_encap(struct sk_buff *skb,
|
||||||
int encap_type,
|
int encap_type,
|
||||||
struct esp_info *esp,
|
struct esp_info *esp,
|
||||||
|
@ -207,22 +207,6 @@ static void esp_output_done_esn(struct crypto_async_request *base, int err)
|
|||||||
esp_output_done(base, err);
|
esp_output_done(base, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void esp_output_fill_trailer(u8 *tail, int tfclen, int plen, __u8 proto)
|
|
||||||
{
|
|
||||||
/* Fill padding... */
|
|
||||||
if (tfclen) {
|
|
||||||
memset(tail, 0, tfclen);
|
|
||||||
tail += tfclen;
|
|
||||||
}
|
|
||||||
do {
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < plen - 2; i++)
|
|
||||||
tail[i] = i + 1;
|
|
||||||
} while (0);
|
|
||||||
tail[plen - 2] = plen - 2;
|
|
||||||
tail[plen - 1] = proto;
|
|
||||||
}
|
|
||||||
|
|
||||||
int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp)
|
int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp)
|
||||||
{
|
{
|
||||||
u8 *tail;
|
u8 *tail;
|
||||||
|
Loading…
Reference in New Issue
Block a user