xfrm: make xfrm modes builtin
after previous changes, xfrm_mode contains no function pointers anymore and all modules defining such struct contain no code except an init/exit functions to register the xfrm_mode struct with the xfrm core. Just place the xfrm modes core and remove the modules, the run-time xfrm_mode register/unregister functionality is removed. Before: text data bss dec filename 7523 200 2364 10087 net/xfrm/xfrm_input.o 40003 628 440 41071 net/xfrm/xfrm_state.o 15730338 6937080 4046908 26714326 vmlinux 7389 200 2364 9953 net/xfrm/xfrm_input.o 40574 656 440 41670 net/xfrm/xfrm_state.o 15730084 6937068 4046908 26714060 vmlinux The xfrm*_mode_{transport,tunnel,beet} modules are gone. v2: replace CONFIG_INET6_XFRM_MODE_* IS_ENABLED guards with CONFIG_IPV6 ones rather than removing them. Signed-off-by: Florian Westphal <fw@strlen.de> Reviewed-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:

committed by
Steffen Klassert

parent
733a5fac2f
commit
4c145dce26
@@ -351,7 +351,7 @@ xfrm_inner_mode_encap_remove(struct xfrm_state *x,
|
||||
|
||||
static int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
{
|
||||
struct xfrm_mode *inner_mode = x->inner_mode;
|
||||
const struct xfrm_mode *inner_mode = x->inner_mode;
|
||||
const struct xfrm_state_afinfo *afinfo;
|
||||
int err = -EAFNOSUPPORT;
|
||||
|
||||
@@ -394,7 +394,6 @@ static int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
*/
|
||||
static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_INET_XFRM_MODE_TRANSPORT)
|
||||
int ihl = skb->data - skb_transport_header(skb);
|
||||
|
||||
if (skb->transport_header != skb->network_header) {
|
||||
@@ -405,14 +404,11 @@ static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
ip_hdr(skb)->tot_len = htons(skb->len + ihl);
|
||||
skb_reset_transport_header(skb);
|
||||
return 0;
|
||||
#else
|
||||
return -EOPNOTSUPP;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int xfrm6_transport_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_INET6_XFRM_MODE_TRANSPORT)
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
int ihl = skb->data - skb_transport_header(skb);
|
||||
|
||||
if (skb->transport_header != skb->network_header) {
|
||||
@@ -425,7 +421,8 @@ static int xfrm6_transport_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
skb_reset_transport_header(skb);
|
||||
return 0;
|
||||
#else
|
||||
return -EOPNOTSUPP;
|
||||
WARN_ON_ONCE(1);
|
||||
return -EAFNOSUPPORT;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -458,12 +455,12 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
|
||||
{
|
||||
const struct xfrm_state_afinfo *afinfo;
|
||||
struct net *net = dev_net(skb->dev);
|
||||
const struct xfrm_mode *inner_mode;
|
||||
int err;
|
||||
__be32 seq;
|
||||
__be32 seq_hi;
|
||||
struct xfrm_state *x = NULL;
|
||||
xfrm_address_t *daddr;
|
||||
struct xfrm_mode *inner_mode;
|
||||
u32 mark = skb->mark;
|
||||
unsigned int family = AF_UNSPEC;
|
||||
int decaps = 0;
|
||||
|
Reference in New Issue
Block a user