[XFRM]: Pull xfrm_state_by{spi,src} hash table knowledge out of afinfo.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -63,44 +63,6 @@ __xfrm6_init_tempsel(struct xfrm_state *x, struct flowi *fl,
|
||||
x->props.family = AF_INET6;
|
||||
}
|
||||
|
||||
static struct xfrm_state *
|
||||
__xfrm6_state_lookup_byaddr(xfrm_address_t *daddr, xfrm_address_t *saddr,
|
||||
u8 proto)
|
||||
{
|
||||
struct xfrm_state *x = NULL;
|
||||
unsigned h;
|
||||
|
||||
h = __xfrm6_src_hash(saddr);
|
||||
list_for_each_entry(x, xfrm6_state_afinfo.state_bysrc+h, bysrc) {
|
||||
if (x->props.family == AF_INET6 &&
|
||||
ipv6_addr_equal((struct in6_addr *)daddr, (struct in6_addr *)x->id.daddr.a6) &&
|
||||
ipv6_addr_equal((struct in6_addr *)saddr, (struct in6_addr *)x->props.saddr.a6) &&
|
||||
proto == x->id.proto) {
|
||||
xfrm_state_hold(x);
|
||||
return x;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct xfrm_state *
|
||||
__xfrm6_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto)
|
||||
{
|
||||
unsigned h = __xfrm6_spi_hash(daddr, spi, proto);
|
||||
struct xfrm_state *x;
|
||||
|
||||
list_for_each_entry(x, xfrm6_state_afinfo.state_byspi+h, byspi) {
|
||||
if (x->props.family == AF_INET6 &&
|
||||
spi == x->id.spi &&
|
||||
ipv6_addr_equal((struct in6_addr *)daddr, (struct in6_addr *)x->id.daddr.a6) &&
|
||||
proto == x->id.proto) {
|
||||
xfrm_state_hold(x);
|
||||
return x;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
__xfrm6_state_sort(struct xfrm_state **dst, struct xfrm_state **src, int n)
|
||||
{
|
||||
@@ -223,8 +185,6 @@ __xfrm6_tmpl_sort(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n)
|
||||
static struct xfrm_state_afinfo xfrm6_state_afinfo = {
|
||||
.family = AF_INET6,
|
||||
.init_tempsel = __xfrm6_init_tempsel,
|
||||
.state_lookup = __xfrm6_state_lookup,
|
||||
.state_lookup_byaddr = __xfrm6_state_lookup_byaddr,
|
||||
.tmpl_sort = __xfrm6_tmpl_sort,
|
||||
.state_sort = __xfrm6_state_sort,
|
||||
};
|
||||
|
Reference in New Issue
Block a user