diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 9428345d3a07..612f3d138bf0 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -1258,7 +1258,8 @@ static int __ip6_append_data(struct sock *sk, | |||
1258 | int getfrag(void *from, char *to, int offset, | 1258 | int getfrag(void *from, char *to, int offset, |
1259 | int len, int odd, struct sk_buff *skb), | 1259 | int len, int odd, struct sk_buff *skb), |
1260 | void *from, int length, int transhdrlen, | 1260 | void *from, int length, int transhdrlen, |
1261 | unsigned int flags, int dontfrag) | 1261 | unsigned int flags, int dontfrag, |
1262 | const struct sockcm_cookie *sockc) | ||
1262 | { | 1263 | { |
1263 | struct sk_buff *skb, *skb_prev = NULL; | 1264 | struct sk_buff *skb, *skb_prev = NULL; |
1264 | unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu; | 1265 | unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu; |
@@ -1329,7 +1330,7 @@ emsgsize: | |||
1329 | csummode = CHECKSUM_PARTIAL; | 1330 | csummode = CHECKSUM_PARTIAL; |
1330 | 1331 | ||
1331 | if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) { | 1332 | if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) { |
1332 | sock_tx_timestamp(sk, &tx_flags); | 1333 | sock_tx_timestamp(sk, sockc->tsflags, &tx_flags); |
1333 | if (tx_flags & SKBTX_ANY_SW_TSTAMP && | 1334 | if (tx_flags & SKBTX_ANY_SW_TSTAMP && |
1334 | sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) | 1335 | sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) |
1335 | tskey = sk->sk_tskey++; | 1336 | tskey = sk->sk_tskey++; |
@@ -1565,7 +1566,8 @@ int ip6_append_data(struct sock *sk, | |||
1565 | int odd, struct sk_buff *skb), | 1566 | int odd, struct sk_buff *skb), |
1566 | void *from, int length, int transhdrlen, int hlimit, | 1567 | void *from, int length, int transhdrlen, int hlimit, |
1567 | int tclass, struct ipv6_txoptions *opt, struct flowi6 *fl6, | 1568 | int tclass, struct ipv6_txoptions *opt, struct flowi6 *fl6, |
1568 | struct rt6_info *rt, unsigned int flags, int dontfrag) | 1569 | struct rt6_info *rt, unsigned int flags, int dontfrag, |
1570 | const struct sockcm_cookie *sockc) | ||
1569 | { | 1571 | { |
1570 | struct inet_sock *inet = inet_sk(sk); | 1572 | struct inet_sock *inet = inet_sk(sk); |
1571 | struct ipv6_pinfo *np = inet6_sk(sk); | 1573 | struct ipv6_pinfo *np = inet6_sk(sk); |
@@ -1593,7 +1595,8 @@ int ip6_append_data(struct sock *sk, | |||
1593 | 1595 | ||
1594 | return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base, | 1596 | return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base, |
1595 | &np->cork, sk_page_frag(sk), getfrag, | 1597 | &np->cork, sk_page_frag(sk), getfrag, |
1596 | from, length, transhdrlen, flags, dontfrag); | 1598 | from, length, transhdrlen, flags, dontfrag, |
1599 | sockc); | ||
1597 | } | 1600 | } |
1598 | EXPORT_SYMBOL_GPL(ip6_append_data); | 1601 | EXPORT_SYMBOL_GPL(ip6_append_data); |
1599 | 1602 | ||
@@ -1752,7 +1755,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk, | |||
1752 | int hlimit, int tclass, | 1755 | int hlimit, int tclass, |
1753 | struct ipv6_txoptions *opt, struct flowi6 *fl6, | 1756 | struct ipv6_txoptions *opt, struct flowi6 *fl6, |
1754 | struct rt6_info *rt, unsigned int flags, | 1757 | struct rt6_info *rt, unsigned int flags, |
1755 | int dontfrag) | 1758 | int dontfrag, const struct sockcm_cookie *sockc) |
1756 | { | 1759 | { |
1757 | struct inet_cork_full cork; | 1760 | struct inet_cork_full cork; |
1758 | struct inet6_cork v6_cork; | 1761 | struct inet6_cork v6_cork; |
@@ -1779,7 +1782,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk, | |||
1779 | err = __ip6_append_data(sk, fl6, &queue, &cork.base, &v6_cork, | 1782 | err = __ip6_append_data(sk, fl6, &queue, &cork.base, &v6_cork, |
1780 | ¤t->task_frag, getfrag, from, | 1783 | ¤t->task_frag, getfrag, from, |
1781 | length + exthdrlen, transhdrlen + exthdrlen, | 1784 | length + exthdrlen, transhdrlen + exthdrlen, |
1782 | flags, dontfrag); | 1785 | flags, dontfrag, sockc); |
1783 | if (err) { | 1786 | if (err) { |
1784 | __ip6_flush_pending_frames(sk, &queue, &cork, &v6_cork); | 1787 | __ip6_flush_pending_frames(sk, &queue, &cork, &v6_cork); |
1785 | return ERR_PTR(err); | 1788 | return ERR_PTR(err); |