OpenWrt

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/branches/18.06.1/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -66,7 +66,7 @@
static void rt_fibinfo_free(struct rtable __rcu **rtp)
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -2406,6 +2406,7 @@ static const char *const rtn_type_names[
@@ -2396,6 +2396,7 @@ static const char *const rtn_type_names[
[RTN_THROW] = "THROW",
[RTN_NAT] = "NAT",
[RTN_XRESOLVE] = "XRESOLVE",
@@ -76,7 +76,7 @@
static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -159,6 +159,7 @@ static int ipmr_rule_action(struct fib_r
@@ -157,6 +157,7 @@ static int ipmr_rule_action(struct fib_r
case FR_ACT_UNREACHABLE:
return -ENETUNREACH;
case FR_ACT_PROHIBIT:
@@ -99,7 +99,7 @@
tb_id = fib_rule_get_table(rule, arg);
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -169,6 +169,8 @@ static int ip6mr_rule_action(struct fib_
@@ -167,6 +167,8 @@ static int ip6mr_rule_action(struct fib_
return -ENETUNREACH;
case FR_ACT_PROHIBIT:
return -EACCES;
@@ -141,7 +141,7 @@
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
@@ -1970,6 +1987,11 @@ static struct rt6_info *ip6_route_info_c
@@ -1967,6 +1984,11 @@ static struct rt6_info *ip6_route_info_c
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
@@ -153,7 +153,7 @@
case RTN_THROW:
case RTN_UNREACHABLE:
default:
@@ -2613,6 +2635,17 @@ static int ip6_pkt_prohibit_out(struct n
@@ -2610,6 +2632,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@@ -171,7 +171,7 @@
/*
* Allocate a dst for local (unicast / anycast) address.
*/
@@ -2850,7 +2883,8 @@ static int rtm_to_fib6_config(struct sk_
@@ -2847,7 +2880,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@@ -181,7 +181,7 @@
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
@@ -3222,6 +3256,9 @@ static int rt6_fill_node(struct net *net
@@ -3219,6 +3253,9 @@ static int rt6_fill_node(struct net *net
case -EACCES:
rtm->rtm_type = RTN_PROHIBIT;
break;
@@ -191,7 +191,7 @@
case -EAGAIN:
rtm->rtm_type = RTN_THROW;
break;
@@ -3498,6 +3535,8 @@ static int ip6_route_dev_notify(struct n
@@ -3495,6 +3532,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -200,7 +200,7 @@
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
@@ -3509,6 +3548,7 @@ static int ip6_route_dev_notify(struct n
@@ -3506,6 +3545,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -208,7 +208,7 @@
in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
@@ -3724,6 +3764,17 @@ static int __net_init ip6_route_net_init
@@ -3721,6 +3761,17 @@ static int __net_init ip6_route_net_init
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
@@ -226,7 +226,7 @@
#endif
net->ipv6.sysctl.flush_delay = 0;
@@ -3742,6 +3793,8 @@ out:
@@ -3739,6 +3790,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -235,7 +235,7 @@
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
@@ -3759,6 +3812,7 @@ static void __net_exit ip6_route_net_exi
@@ -3756,6 +3809,7 @@ static void __net_exit ip6_route_net_exi
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
@@ -243,7 +243,7 @@
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
}
@@ -3832,6 +3886,9 @@ void __init ip6_route_init_special_entri
@@ -3829,6 +3883,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);