ipv6: Remove DST_METRICS_FORCE_OVERWRITE and _rt6i_peer
_rt6i_peer is no longer needed after the last patch,
'ipv6: Stop rt6_info from using inet_peer's metrics'.
DST_METRICS_FORCE_OVERWRITE is added by
commit e5fd387ad5
("ipv6: do not overwrite inetpeer metrics prematurely").
Since inetpeer is no longer used for metrics, this bit is also not needed.
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Reviewed-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Cc: Michal Kubeček <mkubecek@suse.cz>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4b32b5ad31
commit
afc4eef80c
|
@ -109,7 +109,6 @@ u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old);
|
||||||
extern const u32 dst_default_metrics[];
|
extern const u32 dst_default_metrics[];
|
||||||
|
|
||||||
#define DST_METRICS_READ_ONLY 0x1UL
|
#define DST_METRICS_READ_ONLY 0x1UL
|
||||||
#define DST_METRICS_FORCE_OVERWRITE 0x2UL
|
|
||||||
#define DST_METRICS_FLAGS 0x3UL
|
#define DST_METRICS_FLAGS 0x3UL
|
||||||
#define __DST_METRICS_PTR(Y) \
|
#define __DST_METRICS_PTR(Y) \
|
||||||
((u32 *)((Y) & ~DST_METRICS_FLAGS))
|
((u32 *)((Y) & ~DST_METRICS_FLAGS))
|
||||||
|
@ -120,11 +119,6 @@ static inline bool dst_metrics_read_only(const struct dst_entry *dst)
|
||||||
return dst->_metrics & DST_METRICS_READ_ONLY;
|
return dst->_metrics & DST_METRICS_READ_ONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void dst_metrics_set_force_overwrite(struct dst_entry *dst)
|
|
||||||
{
|
|
||||||
dst->_metrics |= DST_METRICS_FORCE_OVERWRITE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old);
|
void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old);
|
||||||
|
|
||||||
static inline void dst_destroy_metrics_generic(struct dst_entry *dst)
|
static inline void dst_destroy_metrics_generic(struct dst_entry *dst)
|
||||||
|
|
|
@ -121,7 +121,6 @@ struct rt6_info {
|
||||||
struct rt6key rt6i_prefsrc;
|
struct rt6key rt6i_prefsrc;
|
||||||
|
|
||||||
struct inet6_dev *rt6i_idev;
|
struct inet6_dev *rt6i_idev;
|
||||||
unsigned long _rt6i_peer;
|
|
||||||
|
|
||||||
u32 rt6i_metric;
|
u32 rt6i_metric;
|
||||||
u32 rt6i_pmtu;
|
u32 rt6i_pmtu;
|
||||||
|
@ -130,36 +129,6 @@ struct rt6_info {
|
||||||
u8 rt6i_protocol;
|
u8 rt6i_protocol;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct inet_peer *rt6_peer_ptr(struct rt6_info *rt)
|
|
||||||
{
|
|
||||||
return inetpeer_ptr(rt->_rt6i_peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool rt6_has_peer(struct rt6_info *rt)
|
|
||||||
{
|
|
||||||
return inetpeer_ptr_is_peer(rt->_rt6i_peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void __rt6_set_peer(struct rt6_info *rt, struct inet_peer *peer)
|
|
||||||
{
|
|
||||||
__inetpeer_ptr_set_peer(&rt->_rt6i_peer, peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool rt6_set_peer(struct rt6_info *rt, struct inet_peer *peer)
|
|
||||||
{
|
|
||||||
return inetpeer_ptr_set_peer(&rt->_rt6i_peer, peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void rt6_init_peer(struct rt6_info *rt, struct inet_peer_base *base)
|
|
||||||
{
|
|
||||||
inetpeer_init_ptr(&rt->_rt6i_peer, base);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void rt6_transfer_peer(struct rt6_info *rt, struct rt6_info *ort)
|
|
||||||
{
|
|
||||||
inetpeer_transfer_peer(&rt->_rt6i_peer, &ort->_rt6i_peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst)
|
static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst)
|
||||||
{
|
{
|
||||||
return ((struct rt6_info *)dst)->rt6i_idev;
|
return ((struct rt6_info *)dst)->rt6i_idev;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -71,13 +71,6 @@ static int xfrm6_get_tos(const struct flowi *fl)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xfrm6_init_dst(struct net *net, struct xfrm_dst *xdst)
|
|
||||||
{
|
|
||||||
struct rt6_info *rt = (struct rt6_info *)xdst;
|
|
||||||
|
|
||||||
rt6_init_peer(rt, net->ipv6.peers);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int xfrm6_init_path(struct xfrm_dst *path, struct dst_entry *dst,
|
static int xfrm6_init_path(struct xfrm_dst *path, struct dst_entry *dst,
|
||||||
int nfheader_len)
|
int nfheader_len)
|
||||||
{
|
{
|
||||||
|
@ -106,8 +99,6 @@ static int xfrm6_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
rt6_transfer_peer(&xdst->u.rt6, rt);
|
|
||||||
|
|
||||||
/* Sheit... I remember I did this right. Apparently,
|
/* Sheit... I remember I did this right. Apparently,
|
||||||
* it was magically lost, so this code needs audit */
|
* it was magically lost, so this code needs audit */
|
||||||
xdst->u.rt6.rt6i_flags = rt->rt6i_flags & (RTF_ANYCAST |
|
xdst->u.rt6.rt6i_flags = rt->rt6i_flags & (RTF_ANYCAST |
|
||||||
|
@ -255,10 +246,6 @@ static void xfrm6_dst_destroy(struct dst_entry *dst)
|
||||||
if (likely(xdst->u.rt6.rt6i_idev))
|
if (likely(xdst->u.rt6.rt6i_idev))
|
||||||
in6_dev_put(xdst->u.rt6.rt6i_idev);
|
in6_dev_put(xdst->u.rt6.rt6i_idev);
|
||||||
dst_destroy_metrics_generic(dst);
|
dst_destroy_metrics_generic(dst);
|
||||||
if (rt6_has_peer(&xdst->u.rt6)) {
|
|
||||||
struct inet_peer *peer = rt6_peer_ptr(&xdst->u.rt6);
|
|
||||||
inet_putpeer(peer);
|
|
||||||
}
|
|
||||||
xfrm_dst_destroy(xdst);
|
xfrm_dst_destroy(xdst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +295,6 @@ static struct xfrm_policy_afinfo xfrm6_policy_afinfo = {
|
||||||
.get_saddr = xfrm6_get_saddr,
|
.get_saddr = xfrm6_get_saddr,
|
||||||
.decode_session = _decode_session6,
|
.decode_session = _decode_session6,
|
||||||
.get_tos = xfrm6_get_tos,
|
.get_tos = xfrm6_get_tos,
|
||||||
.init_dst = xfrm6_init_dst,
|
|
||||||
.init_path = xfrm6_init_path,
|
.init_path = xfrm6_init_path,
|
||||||
.fill_dst = xfrm6_fill_dst,
|
.fill_dst = xfrm6_fill_dst,
|
||||||
.blackhole_route = ip6_blackhole_route,
|
.blackhole_route = ip6_blackhole_route,
|
||||||
|
|
Loading…
Reference in New Issue