summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/ipv6.h1
-rw-r--r--net/ipv6/ip6_output.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 0bc21b4e19eb..49207c629e4f 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -189,6 +189,7 @@ struct ipv6_pinfo {
struct ipv6_txoptions *opt;
struct rt6_info *rt;
struct flowi *fl;
+ int hop_limit;
} cork;
};
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 195cc36b21bb..6a5eaec0c3bd 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1243,6 +1243,7 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, int offse
dst_hold(&rt->u.dst);
np->cork.rt = rt;
np->cork.fl = fl;
+ np->cork.hop_limit = hlimit;
inet->cork.fragsize = mtu = dst_pmtu(&rt->u.dst);
inet->cork.length = 0;
inet->sndmsg_page = NULL;
@@ -1465,7 +1466,7 @@ int ip6_push_pending_frames(struct sock *sk)
hdr->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
else
hdr->payload_len = 0;
- hdr->hop_limit = np->hop_limit;
+ hdr->hop_limit = np->cork.hop_limit;
hdr->nexthdr = proto;
ipv6_addr_copy(&hdr->saddr, &fl->fl6_src);
ipv6_addr_copy(&hdr->daddr, final_dst);