Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -938,14 +938,14 @@ static int __init inet6_init(void)
|
||||
|
||||
err = proto_register(&pingv6_prot, 1);
|
||||
if (err)
|
||||
goto out_unregister_ping_proto;
|
||||
goto out_unregister_raw_proto;
|
||||
|
||||
/* We MUST register RAW sockets before we create the ICMP6,
|
||||
* IGMP6, or NDISC control sockets.
|
||||
*/
|
||||
err = rawv6_init();
|
||||
if (err)
|
||||
goto out_unregister_raw_proto;
|
||||
goto out_unregister_ping_proto;
|
||||
|
||||
/* Register the family here so that the init calls below will
|
||||
* be able to create sockets. (?? is this dangerous ??)
|
||||
@@ -1113,11 +1113,11 @@ netfilter_fail:
|
||||
igmp_fail:
|
||||
ndisc_cleanup();
|
||||
ndisc_fail:
|
||||
ip6_mr_cleanup();
|
||||
icmp_fail:
|
||||
unregister_pernet_subsys(&inet6_net_ops);
|
||||
ipmr_fail:
|
||||
icmpv6_cleanup();
|
||||
icmp_fail:
|
||||
ip6_mr_cleanup();
|
||||
ipmr_fail:
|
||||
unregister_pernet_subsys(&inet6_net_ops);
|
||||
register_pernet_fail:
|
||||
sock_unregister(PF_INET6);
|
||||
rtnl_unregister_all(PF_INET6);
|
||||
|
@@ -989,7 +989,10 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct fib6_info *rt,
|
||||
fib6_clean_expires(iter);
|
||||
else
|
||||
fib6_set_expires(iter, rt->expires);
|
||||
fib6_metric_set(iter, RTAX_MTU, rt->fib6_pmtu);
|
||||
|
||||
if (rt->fib6_pmtu)
|
||||
fib6_metric_set(iter, RTAX_MTU,
|
||||
rt->fib6_pmtu);
|
||||
return -EEXIST;
|
||||
}
|
||||
/* If we have the same destination and the same metric,
|
||||
|
@@ -1778,6 +1778,7 @@ static void ip6gre_netlink_parms(struct nlattr *data[],
|
||||
if (data[IFLA_GRE_COLLECT_METADATA])
|
||||
parms->collect_md = true;
|
||||
|
||||
parms->erspan_ver = 1;
|
||||
if (data[IFLA_GRE_ERSPAN_VER])
|
||||
parms->erspan_ver = nla_get_u8(data[IFLA_GRE_ERSPAN_VER]);
|
||||
|
||||
|
@@ -1188,7 +1188,15 @@ route_lookup:
|
||||
init_tel_txopt(&opt, encap_limit);
|
||||
ipv6_push_frag_opts(skb, &opt.ops, &proto);
|
||||
}
|
||||
hop_limit = hop_limit ? : ip6_dst_hoplimit(dst);
|
||||
|
||||
if (hop_limit == 0) {
|
||||
if (skb->protocol == htons(ETH_P_IP))
|
||||
hop_limit = ip_hdr(skb)->ttl;
|
||||
else if (skb->protocol == htons(ETH_P_IPV6))
|
||||
hop_limit = ipv6_hdr(skb)->hop_limit;
|
||||
else
|
||||
hop_limit = ip6_dst_hoplimit(dst);
|
||||
}
|
||||
|
||||
/* Calculate max headroom for all the headers and adjust
|
||||
* needed_headroom if necessary.
|
||||
|
@@ -481,7 +481,7 @@ vti6_xmit(struct sk_buff *skb, struct net_device *dev, struct flowi *fl)
|
||||
}
|
||||
|
||||
mtu = dst_mtu(dst);
|
||||
if (!skb->ignore_df && skb->len > mtu) {
|
||||
if (skb->len > mtu) {
|
||||
skb_dst_update_pmtu(skb, mtu);
|
||||
|
||||
if (skb->protocol == htons(ETH_P_IPV6)) {
|
||||
|
@@ -996,7 +996,6 @@ static void ip6_rt_copy_init(struct rt6_info *rt, struct fib6_info *ort)
|
||||
rt->rt6i_src = ort->fib6_src;
|
||||
#endif
|
||||
rt->rt6i_prefsrc = ort->fib6_prefsrc;
|
||||
rt->dst.lwtstate = lwtstate_get(ort->fib6_nh.nh_lwtstate);
|
||||
}
|
||||
|
||||
static struct fib6_node* fib6_backtrack(struct fib6_node *fn,
|
||||
|
Reference in New Issue
Block a user