diff options
author | Steve French <sfrench@us.ibm.com> | 2006-03-03 06:27:25 -0500 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-03-03 06:27:25 -0500 |
commit | c6ee60b7c8bbc78e3b1776b2820a7e7f95f8996a (patch) | |
tree | 99b48ef0f5217fddc0aa897d9e60d95ace7da6ff /net/ipv6 | |
parent | 13298defe5323c7fdcac268f588d8d1090758fb8 (diff) | |
parent | c499ec24c31edf270e777a868ffd0daddcfe7ebd (diff) |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_output.c | 15 | ||||
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 1 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_LOG.c | 7 |
3 files changed, 20 insertions, 3 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index efa3e72cfcfa..f999edd846a9 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -494,6 +494,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) | |||
494 | struct net_device *dev; | 494 | struct net_device *dev; |
495 | struct sk_buff *frag; | 495 | struct sk_buff *frag; |
496 | struct rt6_info *rt = (struct rt6_info*)skb->dst; | 496 | struct rt6_info *rt = (struct rt6_info*)skb->dst; |
497 | struct ipv6_pinfo *np = skb->sk ? inet6_sk(skb->sk) : NULL; | ||
497 | struct ipv6hdr *tmp_hdr; | 498 | struct ipv6hdr *tmp_hdr; |
498 | struct frag_hdr *fh; | 499 | struct frag_hdr *fh; |
499 | unsigned int mtu, hlen, left, len; | 500 | unsigned int mtu, hlen, left, len; |
@@ -505,7 +506,12 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) | |||
505 | hlen = ip6_find_1stfragopt(skb, &prevhdr); | 506 | hlen = ip6_find_1stfragopt(skb, &prevhdr); |
506 | nexthdr = *prevhdr; | 507 | nexthdr = *prevhdr; |
507 | 508 | ||
508 | mtu = dst_mtu(&rt->u.dst) - hlen - sizeof(struct frag_hdr); | 509 | mtu = dst_mtu(&rt->u.dst); |
510 | if (np && np->frag_size < mtu) { | ||
511 | if (np->frag_size) | ||
512 | mtu = np->frag_size; | ||
513 | } | ||
514 | mtu -= hlen + sizeof(struct frag_hdr); | ||
509 | 515 | ||
510 | if (skb_shinfo(skb)->frag_list) { | 516 | if (skb_shinfo(skb)->frag_list) { |
511 | int first_len = skb_pagelen(skb); | 517 | int first_len = skb_pagelen(skb); |
@@ -882,7 +888,12 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
882 | inet->cork.fl = *fl; | 888 | inet->cork.fl = *fl; |
883 | np->cork.hop_limit = hlimit; | 889 | np->cork.hop_limit = hlimit; |
884 | np->cork.tclass = tclass; | 890 | np->cork.tclass = tclass; |
885 | inet->cork.fragsize = mtu = dst_mtu(rt->u.dst.path); | 891 | mtu = dst_mtu(rt->u.dst.path); |
892 | if (np && np->frag_size < mtu) { | ||
893 | if (np->frag_size) | ||
894 | mtu = np->frag_size; | ||
895 | } | ||
896 | inet->cork.fragsize = mtu; | ||
886 | if (dst_allfrag(rt->u.dst.path)) | 897 | if (dst_allfrag(rt->u.dst.path)) |
887 | inet->cork.flags |= IPCORK_ALLFRAG; | 898 | inet->cork.flags |= IPCORK_ALLFRAG; |
888 | inet->cork.length = 0; | 899 | inet->cork.length = 0; |
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index faea8a120ee2..48597538db3f 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -884,6 +884,7 @@ ip6ip6_tnl_change(struct ip6_tnl *t, struct ip6_tnl_parm *p) | |||
884 | t->parms.encap_limit = p->encap_limit; | 884 | t->parms.encap_limit = p->encap_limit; |
885 | t->parms.flowinfo = p->flowinfo; | 885 | t->parms.flowinfo = p->flowinfo; |
886 | t->parms.link = p->link; | 886 | t->parms.link = p->link; |
887 | ip6_tnl_dst_reset(t); | ||
887 | ip6ip6_tnl_link_config(t); | 888 | ip6ip6_tnl_link_config(t); |
888 | return 0; | 889 | return 0; |
889 | } | 890 | } |
diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c index 77c725832dec..6b930efa9fb9 100644 --- a/net/ipv6/netfilter/ip6t_LOG.c +++ b/net/ipv6/netfilter/ip6t_LOG.c | |||
@@ -436,7 +436,12 @@ ip6t_log_target(struct sk_buff **pskb, | |||
436 | li.u.log.level = loginfo->level; | 436 | li.u.log.level = loginfo->level; |
437 | li.u.log.logflags = loginfo->logflags; | 437 | li.u.log.logflags = loginfo->logflags; |
438 | 438 | ||
439 | nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li, loginfo->prefix); | 439 | if (loginfo->logflags & IP6T_LOG_NFLOG) |
440 | nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li, | ||
441 | loginfo->prefix); | ||
442 | else | ||
443 | ip6t_log_packet(PF_INET6, hooknum, *pskb, in, out, &li, | ||
444 | loginfo->prefix); | ||
440 | 445 | ||
441 | return IP6T_CONTINUE; | 446 | return IP6T_CONTINUE; |
442 | } | 447 | } |