Loading include/net/dst.h +0 −8 Original line number Diff line number Diff line Loading @@ -432,17 +432,9 @@ static inline int xfrm_lookup(struct net *net, struct dst_entry **dst_p, { return 0; } static inline int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags) { return 0; } #else extern int xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags); extern int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags); #endif #endif Loading include/net/ipv6.h +2 −2 Original line number Diff line number Diff line Loading @@ -520,7 +520,7 @@ extern struct dst_entry * ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi *fl, const struct in6_addr *final_dst, bool can_sleep); extern struct dst_entry * ip6_dst_blackhole(struct net *net, extern struct dst_entry * ip6_blackhole_route(struct net *net, struct dst_entry *orig_dst); /* Loading include/net/route.h +1 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,7 @@ extern void rt_cache_flush_batch(struct net *net); extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); extern int ip_route_output_key(struct net *, struct rtable **, struct flowi *flp); extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk); extern struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig); extern int ip_route_input_common(struct sk_buff *skb, __be32 dst, __be32 src, u8 tos, struct net_device *devin, bool noref); Loading include/net/xfrm.h +1 −0 Original line number Diff line number Diff line Loading @@ -280,6 +280,7 @@ struct xfrm_policy_afinfo { int (*fill_dst)(struct xfrm_dst *xdst, struct net_device *dev, const struct flowi *fl); struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); }; extern int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); Loading net/ipv4/route.c +7 −13 Original line number Diff line number Diff line Loading @@ -2675,12 +2675,10 @@ static struct dst_ops ipv4_dst_blackhole_ops = { .update_pmtu = ipv4_rt_blackhole_update_pmtu, }; static int ipv4_dst_blackhole(struct net *net, struct rtable **rp, struct flowi *flp) struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig) { struct rtable *ort = *rp; struct rtable *rt = (struct rtable *) dst_alloc(&ipv4_dst_blackhole_ops, 1); struct rtable *rt = dst_alloc(&ipv4_dst_blackhole_ops, 1); struct rtable *ort = (struct rtable *) dst_orig; if (rt) { struct dst_entry *new = &rt->dst; Loading Loading @@ -2714,9 +2712,9 @@ static int ipv4_dst_blackhole(struct net *net, struct rtable **rp, struct flowi dst_free(new); } dst_release(&(*rp)->dst); *rp = rt; return rt ? 0 : -ENOMEM; dst_release(dst_orig); return rt ? &rt->dst : ERR_PTR(-ENOMEM); } int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, Loading @@ -2732,11 +2730,7 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, flp->fl4_src = (*rp)->rt_src; if (!flp->fl4_dst) flp->fl4_dst = (*rp)->rt_dst; err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, 0); if (err == -EREMOTE) err = ipv4_dst_blackhole(net, rp, flp); return err; return xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, 0); } return 0; Loading Loading
include/net/dst.h +0 −8 Original line number Diff line number Diff line Loading @@ -432,17 +432,9 @@ static inline int xfrm_lookup(struct net *net, struct dst_entry **dst_p, { return 0; } static inline int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags) { return 0; } #else extern int xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags); extern int __xfrm_lookup(struct net *net, struct dst_entry **dst_p, const struct flowi *fl, struct sock *sk, int flags); #endif #endif Loading
include/net/ipv6.h +2 −2 Original line number Diff line number Diff line Loading @@ -520,7 +520,7 @@ extern struct dst_entry * ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi *fl, const struct in6_addr *final_dst, bool can_sleep); extern struct dst_entry * ip6_dst_blackhole(struct net *net, extern struct dst_entry * ip6_blackhole_route(struct net *net, struct dst_entry *orig_dst); /* Loading
include/net/route.h +1 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,7 @@ extern void rt_cache_flush_batch(struct net *net); extern int __ip_route_output_key(struct net *, struct rtable **, const struct flowi *flp); extern int ip_route_output_key(struct net *, struct rtable **, struct flowi *flp); extern int ip_route_output_flow(struct net *, struct rtable **rp, struct flowi *flp, struct sock *sk); extern struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig); extern int ip_route_input_common(struct sk_buff *skb, __be32 dst, __be32 src, u8 tos, struct net_device *devin, bool noref); Loading
include/net/xfrm.h +1 −0 Original line number Diff line number Diff line Loading @@ -280,6 +280,7 @@ struct xfrm_policy_afinfo { int (*fill_dst)(struct xfrm_dst *xdst, struct net_device *dev, const struct flowi *fl); struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *orig); }; extern int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo); Loading
net/ipv4/route.c +7 −13 Original line number Diff line number Diff line Loading @@ -2675,12 +2675,10 @@ static struct dst_ops ipv4_dst_blackhole_ops = { .update_pmtu = ipv4_rt_blackhole_update_pmtu, }; static int ipv4_dst_blackhole(struct net *net, struct rtable **rp, struct flowi *flp) struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig) { struct rtable *ort = *rp; struct rtable *rt = (struct rtable *) dst_alloc(&ipv4_dst_blackhole_ops, 1); struct rtable *rt = dst_alloc(&ipv4_dst_blackhole_ops, 1); struct rtable *ort = (struct rtable *) dst_orig; if (rt) { struct dst_entry *new = &rt->dst; Loading Loading @@ -2714,9 +2712,9 @@ static int ipv4_dst_blackhole(struct net *net, struct rtable **rp, struct flowi dst_free(new); } dst_release(&(*rp)->dst); *rp = rt; return rt ? 0 : -ENOMEM; dst_release(dst_orig); return rt ? &rt->dst : ERR_PTR(-ENOMEM); } int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, Loading @@ -2732,11 +2730,7 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, flp->fl4_src = (*rp)->rt_src; if (!flp->fl4_dst) flp->fl4_dst = (*rp)->rt_dst; err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, 0); if (err == -EREMOTE) err = ipv4_dst_blackhole(net, rp, flp); return err; return xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, 0); } return 0; Loading