Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: net/ipv4/Kconfig net/ipv4/tcp_timer.c
This commit is contained in:
@@ -670,7 +670,7 @@ static struct rt6_info *rt6_alloc_cow(struct rt6_info *ort, struct in6_addr *dad
|
||||
|
||||
if (net_ratelimit())
|
||||
printk(KERN_WARNING
|
||||
"Neighbour table overflow.\n");
|
||||
"ipv6: Neighbour table overflow.\n");
|
||||
dst_free(&rt->dst);
|
||||
return NULL;
|
||||
}
|
||||
@@ -1559,14 +1559,13 @@ out:
|
||||
* i.e. Path MTU discovery
|
||||
*/
|
||||
|
||||
void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr,
|
||||
struct net_device *dev, u32 pmtu)
|
||||
static void rt6_do_pmtu_disc(struct in6_addr *daddr, struct in6_addr *saddr,
|
||||
struct net *net, u32 pmtu, int ifindex)
|
||||
{
|
||||
struct rt6_info *rt, *nrt;
|
||||
struct net *net = dev_net(dev);
|
||||
int allfrag = 0;
|
||||
|
||||
rt = rt6_lookup(net, daddr, saddr, dev->ifindex, 0);
|
||||
rt = rt6_lookup(net, daddr, saddr, ifindex, 0);
|
||||
if (rt == NULL)
|
||||
return;
|
||||
|
||||
@@ -1634,6 +1633,27 @@ out:
|
||||
dst_release(&rt->dst);
|
||||
}
|
||||
|
||||
void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr,
|
||||
struct net_device *dev, u32 pmtu)
|
||||
{
|
||||
struct net *net = dev_net(dev);
|
||||
|
||||
/*
|
||||
* RFC 1981 states that a node "MUST reduce the size of the packets it
|
||||
* is sending along the path" that caused the Packet Too Big message.
|
||||
* Since it's not possible in the general case to determine which
|
||||
* interface was used to send the original packet, we update the MTU
|
||||
* on the interface that will be used to send future packets. We also
|
||||
* update the MTU on the interface that received the Packet Too Big in
|
||||
* case the original packet was forced out that interface with
|
||||
* SO_BINDTODEVICE or similar. This is the next best thing to the
|
||||
* correct behaviour, which would be to update the MTU on all
|
||||
* interfaces.
|
||||
*/
|
||||
rt6_do_pmtu_disc(daddr, saddr, net, pmtu, 0);
|
||||
rt6_do_pmtu_disc(daddr, saddr, net, pmtu, dev->ifindex);
|
||||
}
|
||||
|
||||
/*
|
||||
* Misc support functions
|
||||
*/
|
||||
|
Reference in New Issue
Block a user