[XFRM]: uninline xfrm_selector_match()
Six callsites, huge. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>hifive-unleashed-5.1
parent
fcc70d5fdc
commit
776810217a
|
@ -506,40 +506,8 @@ __be16 xfrm_flowi_dport(struct flowi *fl)
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int
|
extern int xfrm_selector_match(struct xfrm_selector *sel, struct flowi *fl,
|
||||||
__xfrm4_selector_match(struct xfrm_selector *sel, struct flowi *fl)
|
unsigned short family);
|
||||||
{
|
|
||||||
return addr_match(&fl->fl4_dst, &sel->daddr, sel->prefixlen_d) &&
|
|
||||||
addr_match(&fl->fl4_src, &sel->saddr, sel->prefixlen_s) &&
|
|
||||||
!((xfrm_flowi_dport(fl) ^ sel->dport) & sel->dport_mask) &&
|
|
||||||
!((xfrm_flowi_sport(fl) ^ sel->sport) & sel->sport_mask) &&
|
|
||||||
(fl->proto == sel->proto || !sel->proto) &&
|
|
||||||
(fl->oif == sel->ifindex || !sel->ifindex);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
__xfrm6_selector_match(struct xfrm_selector *sel, struct flowi *fl)
|
|
||||||
{
|
|
||||||
return addr_match(&fl->fl6_dst, &sel->daddr, sel->prefixlen_d) &&
|
|
||||||
addr_match(&fl->fl6_src, &sel->saddr, sel->prefixlen_s) &&
|
|
||||||
!((xfrm_flowi_dport(fl) ^ sel->dport) & sel->dport_mask) &&
|
|
||||||
!((xfrm_flowi_sport(fl) ^ sel->sport) & sel->sport_mask) &&
|
|
||||||
(fl->proto == sel->proto || !sel->proto) &&
|
|
||||||
(fl->oif == sel->ifindex || !sel->ifindex);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
xfrm_selector_match(struct xfrm_selector *sel, struct flowi *fl,
|
|
||||||
unsigned short family)
|
|
||||||
{
|
|
||||||
switch (family) {
|
|
||||||
case AF_INET:
|
|
||||||
return __xfrm4_selector_match(sel, fl);
|
|
||||||
case AF_INET6:
|
|
||||||
return __xfrm6_selector_match(sel, fl);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
||||||
/* If neither has a context --> match
|
/* If neither has a context --> match
|
||||||
|
|
|
@ -50,6 +50,40 @@ static void xfrm_policy_put_afinfo(struct xfrm_policy_afinfo *afinfo);
|
||||||
static struct xfrm_policy_afinfo *xfrm_policy_lock_afinfo(unsigned int family);
|
static struct xfrm_policy_afinfo *xfrm_policy_lock_afinfo(unsigned int family);
|
||||||
static void xfrm_policy_unlock_afinfo(struct xfrm_policy_afinfo *afinfo);
|
static void xfrm_policy_unlock_afinfo(struct xfrm_policy_afinfo *afinfo);
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__xfrm4_selector_match(struct xfrm_selector *sel, struct flowi *fl)
|
||||||
|
{
|
||||||
|
return addr_match(&fl->fl4_dst, &sel->daddr, sel->prefixlen_d) &&
|
||||||
|
addr_match(&fl->fl4_src, &sel->saddr, sel->prefixlen_s) &&
|
||||||
|
!((xfrm_flowi_dport(fl) ^ sel->dport) & sel->dport_mask) &&
|
||||||
|
!((xfrm_flowi_sport(fl) ^ sel->sport) & sel->sport_mask) &&
|
||||||
|
(fl->proto == sel->proto || !sel->proto) &&
|
||||||
|
(fl->oif == sel->ifindex || !sel->ifindex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__xfrm6_selector_match(struct xfrm_selector *sel, struct flowi *fl)
|
||||||
|
{
|
||||||
|
return addr_match(&fl->fl6_dst, &sel->daddr, sel->prefixlen_d) &&
|
||||||
|
addr_match(&fl->fl6_src, &sel->saddr, sel->prefixlen_s) &&
|
||||||
|
!((xfrm_flowi_dport(fl) ^ sel->dport) & sel->dport_mask) &&
|
||||||
|
!((xfrm_flowi_sport(fl) ^ sel->sport) & sel->sport_mask) &&
|
||||||
|
(fl->proto == sel->proto || !sel->proto) &&
|
||||||
|
(fl->oif == sel->ifindex || !sel->ifindex);
|
||||||
|
}
|
||||||
|
|
||||||
|
int xfrm_selector_match(struct xfrm_selector *sel, struct flowi *fl,
|
||||||
|
unsigned short family)
|
||||||
|
{
|
||||||
|
switch (family) {
|
||||||
|
case AF_INET:
|
||||||
|
return __xfrm4_selector_match(sel, fl);
|
||||||
|
case AF_INET6:
|
||||||
|
return __xfrm6_selector_match(sel, fl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int xfrm_register_type(struct xfrm_type *type, unsigned short family)
|
int xfrm_register_type(struct xfrm_type *type, unsigned short family)
|
||||||
{
|
{
|
||||||
struct xfrm_policy_afinfo *afinfo = xfrm_policy_lock_afinfo(family);
|
struct xfrm_policy_afinfo *afinfo = xfrm_policy_lock_afinfo(family);
|
||||||
|
|
Loading…
Reference in New Issue