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, 5 insertions, 10 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 93beee944657..6ad5aadf81ad 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -194,7 +194,8 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
194 struct ipv6hdr *hdr; 194 struct ipv6hdr *hdr;
195 u8 proto = fl->proto; 195 u8 proto = fl->proto;
196 int seg_len = skb->len; 196 int seg_len = skb->len;
197 int hlimit, tclass; 197 int hlimit = -1;
198 int tclass = 0;
198 u32 mtu; 199 u32 mtu;
199 200
200 if (opt) { 201 if (opt) {
@@ -237,19 +238,13 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
237 /* 238 /*
238 * Fill in the IPv6 header 239 * Fill in the IPv6 header
239 */ 240 */
240 241 if (np) {
241 hlimit = -1; 242 tclass = np->tclass;
242 if (np)
243 hlimit = np->hop_limit; 243 hlimit = np->hop_limit;
244 }
244 if (hlimit < 0) 245 if (hlimit < 0)
245 hlimit = ip6_dst_hoplimit(dst); 246 hlimit = ip6_dst_hoplimit(dst);
246 247
247 tclass = -1;
248 if (np)
249 tclass = np->tclass;
250 if (tclass < 0)
251 tclass = 0;
252
253 *(__be32 *)hdr = htonl(0x60000000 | (tclass << 20)) | fl->fl6_flowlabel; 248 *(__be32 *)hdr = htonl(0x60000000 | (tclass << 20)) | fl->fl6_flowlabel;
254 249
255 hdr->payload_len = htons(seg_len); 250 hdr->payload_len = htons(seg_len);