|
@@ -86,9 +86,9 @@ static void ip6_dst_ifdown(struct dst_entry *,
|
|
static int ip6_dst_gc(struct dst_ops *ops);
|
|
static int ip6_dst_gc(struct dst_ops *ops);
|
|
|
|
|
|
static int ip6_pkt_discard(struct sk_buff *skb);
|
|
static int ip6_pkt_discard(struct sk_buff *skb);
|
|
-static int ip6_pkt_discard_out(struct sock *sk, struct sk_buff *skb);
|
|
|
|
|
|
+static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
|
static int ip6_pkt_prohibit(struct sk_buff *skb);
|
|
static int ip6_pkt_prohibit(struct sk_buff *skb);
|
|
-static int ip6_pkt_prohibit_out(struct sock *sk, struct sk_buff *skb);
|
|
|
|
|
|
+static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
|
static void ip6_link_failure(struct sk_buff *skb);
|
|
static void ip6_link_failure(struct sk_buff *skb);
|
|
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
|
|
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
|
|
struct sk_buff *skb, u32 mtu);
|
|
struct sk_buff *skb, u32 mtu);
|
|
@@ -308,7 +308,7 @@ static const struct rt6_info ip6_blk_hole_entry_template = {
|
|
.obsolete = DST_OBSOLETE_FORCE_CHK,
|
|
.obsolete = DST_OBSOLETE_FORCE_CHK,
|
|
.error = -EINVAL,
|
|
.error = -EINVAL,
|
|
.input = dst_discard,
|
|
.input = dst_discard,
|
|
- .output = dst_discard_sk,
|
|
|
|
|
|
+ .output = dst_discard_out,
|
|
},
|
|
},
|
|
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
|
|
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
|
|
.rt6i_protocol = RTPROT_KERNEL,
|
|
.rt6i_protocol = RTPROT_KERNEL,
|
|
@@ -1195,7 +1195,7 @@ struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *dst_ori
|
|
|
|
|
|
new->__use = 1;
|
|
new->__use = 1;
|
|
new->input = dst_discard;
|
|
new->input = dst_discard;
|
|
- new->output = dst_discard_sk;
|
|
|
|
|
|
+ new->output = dst_discard_out;
|
|
|
|
|
|
if (dst_metrics_read_only(&ort->dst))
|
|
if (dst_metrics_read_only(&ort->dst))
|
|
new->_metrics = ort->dst._metrics;
|
|
new->_metrics = ort->dst._metrics;
|
|
@@ -1853,7 +1853,7 @@ int ip6_route_info_create(struct fib6_config *cfg, struct rt6_info **rt_ret)
|
|
switch (cfg->fc_type) {
|
|
switch (cfg->fc_type) {
|
|
case RTN_BLACKHOLE:
|
|
case RTN_BLACKHOLE:
|
|
rt->dst.error = -EINVAL;
|
|
rt->dst.error = -EINVAL;
|
|
- rt->dst.output = dst_discard_sk;
|
|
|
|
|
|
+ rt->dst.output = dst_discard_out;
|
|
rt->dst.input = dst_discard;
|
|
rt->dst.input = dst_discard;
|
|
break;
|
|
break;
|
|
case RTN_PROHIBIT:
|
|
case RTN_PROHIBIT:
|
|
@@ -2446,7 +2446,7 @@ static int ip6_pkt_discard(struct sk_buff *skb)
|
|
return ip6_pkt_drop(skb, ICMPV6_NOROUTE, IPSTATS_MIB_INNOROUTES);
|
|
return ip6_pkt_drop(skb, ICMPV6_NOROUTE, IPSTATS_MIB_INNOROUTES);
|
|
}
|
|
}
|
|
|
|
|
|
-static int ip6_pkt_discard_out(struct sock *sk, struct sk_buff *skb)
|
|
|
|
|
|
+static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb)
|
|
{
|
|
{
|
|
skb->dev = skb_dst(skb)->dev;
|
|
skb->dev = skb_dst(skb)->dev;
|
|
return ip6_pkt_drop(skb, ICMPV6_NOROUTE, IPSTATS_MIB_OUTNOROUTES);
|
|
return ip6_pkt_drop(skb, ICMPV6_NOROUTE, IPSTATS_MIB_OUTNOROUTES);
|
|
@@ -2457,7 +2457,7 @@ static int ip6_pkt_prohibit(struct sk_buff *skb)
|
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_INNOROUTES);
|
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_INNOROUTES);
|
|
}
|
|
}
|
|
|
|
|
|
-static int ip6_pkt_prohibit_out(struct sock *sk, struct sk_buff *skb)
|
|
|
|
|
|
+static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb)
|
|
{
|
|
{
|
|
skb->dev = skb_dst(skb)->dev;
|
|
skb->dev = skb_dst(skb)->dev;
|
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|