/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); |