|
@@ -105,36 +105,6 @@ static struct rt6_info *rt6_get_route_info(struct net *net,
|
|
const struct in6_addr *gwaddr, int ifindex);
|
|
const struct in6_addr *gwaddr, int ifindex);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-static void rt6_bind_peer(struct rt6_info *rt, int create)
|
|
|
|
-{
|
|
|
|
- struct inet_peer_base *base;
|
|
|
|
- struct inet_peer *peer;
|
|
|
|
-
|
|
|
|
- base = inetpeer_base_ptr(rt->_rt6i_peer);
|
|
|
|
- if (!base)
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
- peer = inet_getpeer_v6(base, &rt->rt6i_dst.addr, create);
|
|
|
|
- if (peer) {
|
|
|
|
- if (!rt6_set_peer(rt, peer))
|
|
|
|
- inet_putpeer(peer);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static struct inet_peer *__rt6_get_peer(struct rt6_info *rt, int create)
|
|
|
|
-{
|
|
|
|
- if (rt6_has_peer(rt))
|
|
|
|
- return rt6_peer_ptr(rt);
|
|
|
|
-
|
|
|
|
- rt6_bind_peer(rt, create);
|
|
|
|
- return (rt6_has_peer(rt) ? rt6_peer_ptr(rt) : NULL);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static struct inet_peer *rt6_get_peer_create(struct rt6_info *rt)
|
|
|
|
-{
|
|
|
|
- return __rt6_get_peer(rt, 1);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static u32 *ipv6_cow_metrics(struct dst_entry *dst, unsigned long old)
|
|
static u32 *ipv6_cow_metrics(struct dst_entry *dst, unsigned long old)
|
|
{
|
|
{
|
|
struct rt6_info *rt = (struct rt6_info *)dst;
|
|
struct rt6_info *rt = (struct rt6_info *)dst;
|
|
@@ -291,7 +261,6 @@ static inline struct rt6_info *ip6_dst_alloc(struct net *net,
|
|
struct dst_entry *dst = &rt->dst;
|
|
struct dst_entry *dst = &rt->dst;
|
|
|
|
|
|
memset(dst + 1, 0, sizeof(*rt) - sizeof(*dst));
|
|
memset(dst + 1, 0, sizeof(*rt) - sizeof(*dst));
|
|
- rt6_init_peer(rt, table ? &table->tb6_peers : net->ipv6.peers);
|
|
|
|
INIT_LIST_HEAD(&rt->rt6i_siblings);
|
|
INIT_LIST_HEAD(&rt->rt6i_siblings);
|
|
}
|
|
}
|
|
return rt;
|
|
return rt;
|
|
@@ -1052,7 +1021,6 @@ struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *dst_ori
|
|
new = &rt->dst;
|
|
new = &rt->dst;
|
|
|
|
|
|
memset(new + 1, 0, sizeof(*rt) - sizeof(*new));
|
|
memset(new + 1, 0, sizeof(*rt) - sizeof(*new));
|
|
- rt6_init_peer(rt, net->ipv6.peers);
|
|
|
|
|
|
|
|
new->__use = 1;
|
|
new->__use = 1;
|
|
new->input = dst_discard;
|
|
new->input = dst_discard;
|
|
@@ -1597,10 +1565,8 @@ int ip6_route_add(struct fib6_config *cfg)
|
|
|
|
|
|
ipv6_addr_prefix(&rt->rt6i_dst.addr, &cfg->fc_dst, cfg->fc_dst_len);
|
|
ipv6_addr_prefix(&rt->rt6i_dst.addr, &cfg->fc_dst, cfg->fc_dst_len);
|
|
rt->rt6i_dst.plen = cfg->fc_dst_len;
|
|
rt->rt6i_dst.plen = cfg->fc_dst_len;
|
|
- if (rt->rt6i_dst.plen == 128) {
|
|
|
|
|
|
+ if (rt->rt6i_dst.plen == 128)
|
|
rt->dst.flags |= DST_HOST;
|
|
rt->dst.flags |= DST_HOST;
|
|
- dst_metrics_set_force_overwrite(&rt->dst);
|
|
|
|
- }
|
|
|
|
|
|
|
|
#ifdef CONFIG_IPV6_SUBTREES
|
|
#ifdef CONFIG_IPV6_SUBTREES
|
|
ipv6_addr_prefix(&rt->rt6i_src.addr, &cfg->fc_src, cfg->fc_src_len);
|
|
ipv6_addr_prefix(&rt->rt6i_src.addr, &cfg->fc_src, cfg->fc_src_len);
|