/branches/18.06.1/target/linux/generic/pending-4.14/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 |
@@ -2469,6 +2469,7 @@ static const char *const rtn_type_names[ |
@@ -2460,6 +2460,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 |
@@ -163,6 +163,7 @@ static int ipmr_rule_action(struct fib_r |
@@ -161,6 +161,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 |
@@ -170,6 +170,8 @@ static int ip6mr_rule_action(struct fib_ |
@@ -168,6 +168,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), |
@@ -2046,6 +2063,11 @@ static struct rt6_info *ip6_route_info_c |
@@ -2043,6 +2060,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: |
@@ -2771,6 +2793,17 @@ static int ip6_pkt_prohibit_out(struct n |
@@ -2768,6 +2790,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. |
*/ |
@@ -3007,7 +3040,8 @@ static int rtm_to_fib6_config(struct sk_ |
@@ -3004,7 +3037,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) |
@@ -3502,6 +3536,9 @@ static int rt6_fill_node(struct net *net |
@@ -3494,6 +3528,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; |
@@ -3820,6 +3857,8 @@ static int ip6_route_dev_notify(struct n |
@@ -3812,6 +3849,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 |
@@ -3831,6 +3870,7 @@ static int ip6_route_dev_notify(struct n |
@@ -3823,6 +3862,7 @@ static int ip6_route_dev_notify(struct n |
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); |
#ifdef CONFIG_IPV6_MULTIPLE_TABLES |
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); |
@@ -208,7 +208,7 @@ |
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); |
#endif |
} |
@@ -4047,6 +4087,17 @@ static int __net_init ip6_route_net_init |
@@ -4039,6 +4079,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; |
@@ -4065,6 +4116,8 @@ out: |
@@ -4057,6 +4108,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: |
@@ -4082,6 +4135,7 @@ static void __net_exit ip6_route_net_exi |
@@ -4074,6 +4127,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); |
} |
@@ -4155,6 +4209,9 @@ void __init ip6_route_init_special_entri |
@@ -4147,6 +4201,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); |