aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r--net/ipv6/ip6_output.c15
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}
1598EXPORT_SYMBOL_GPL(ip6_append_data); 1601EXPORT_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 &current->task_frag, getfrag, from, 1783 &current->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);