ipv6: Move common init code for rt6_info to a new function rt6_info_init()
Introduce rt6_info_init() to do the common init work for 'struct rt6_info' (after calling dst_alloc). It is a prep work to fix the rt6_info init logic in the ip6_blackhole_route(). Signed-off-by: Martin KaFai Lau <kafai@fb.com> Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> Cc: Julian Anastasov <ja@ssi.bg> Cc: Phil Sutter <phil@nwl.cc> Cc: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
53ca376eec
commit
ebfa45f0d9
1 changed files with 11 additions and 6 deletions
|
@ -319,6 +319,15 @@ static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void rt6_info_init(struct rt6_info *rt)
|
||||||
|
{
|
||||||
|
struct dst_entry *dst = &rt->dst;
|
||||||
|
|
||||||
|
memset(dst + 1, 0, sizeof(*rt) - sizeof(*dst));
|
||||||
|
INIT_LIST_HEAD(&rt->rt6i_siblings);
|
||||||
|
INIT_LIST_HEAD(&rt->rt6i_uncached);
|
||||||
|
}
|
||||||
|
|
||||||
/* allocate dst with ip6_dst_ops */
|
/* allocate dst with ip6_dst_ops */
|
||||||
static struct rt6_info *__ip6_dst_alloc(struct net *net,
|
static struct rt6_info *__ip6_dst_alloc(struct net *net,
|
||||||
struct net_device *dev,
|
struct net_device *dev,
|
||||||
|
@ -327,13 +336,9 @@ static struct rt6_info *__ip6_dst_alloc(struct net *net,
|
||||||
struct rt6_info *rt = dst_alloc(&net->ipv6.ip6_dst_ops, dev,
|
struct rt6_info *rt = dst_alloc(&net->ipv6.ip6_dst_ops, dev,
|
||||||
0, DST_OBSOLETE_FORCE_CHK, flags);
|
0, DST_OBSOLETE_FORCE_CHK, flags);
|
||||||
|
|
||||||
if (rt) {
|
if (rt)
|
||||||
struct dst_entry *dst = &rt->dst;
|
rt6_info_init(rt);
|
||||||
|
|
||||||
memset(dst + 1, 0, sizeof(*rt) - sizeof(*dst));
|
|
||||||
INIT_LIST_HEAD(&rt->rt6i_siblings);
|
|
||||||
INIT_LIST_HEAD(&rt->rt6i_uncached);
|
|
||||||
}
|
|
||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue