Skip to content

Commit 885e8c6

Browse files
Florian Westphalummakynes
authored andcommitted
netfilter: nat: move nf_xfrm_me_harder to where it is used
remove the export and make it static. Signed-off-by: Florian Westphal <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent b2f0ca0 commit 885e8c6

File tree

3 files changed

+38
-39
lines changed

3 files changed

+38
-39
lines changed

include/net/netfilter/nf_nat.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,6 @@ unsigned int
104104
nf_nat_inet_fn(void *priv, struct sk_buff *skb,
105105
const struct nf_hook_state *state);
106106

107-
int nf_xfrm_me_harder(struct net *n, struct sk_buff *s, unsigned int family);
108-
109107
static inline int nf_nat_initialized(struct nf_conn *ct,
110108
enum nf_nat_manip_type manip)
111109
{

net/netfilter/nf_nat_core.c

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -146,43 +146,6 @@ static void __nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl)
146146
return;
147147
}
148148
}
149-
150-
int nf_xfrm_me_harder(struct net *net, struct sk_buff *skb, unsigned int family)
151-
{
152-
struct flowi fl;
153-
unsigned int hh_len;
154-
struct dst_entry *dst;
155-
struct sock *sk = skb->sk;
156-
int err;
157-
158-
err = xfrm_decode_session(skb, &fl, family);
159-
if (err < 0)
160-
return err;
161-
162-
dst = skb_dst(skb);
163-
if (dst->xfrm)
164-
dst = ((struct xfrm_dst *)dst)->route;
165-
if (!dst_hold_safe(dst))
166-
return -EHOSTUNREACH;
167-
168-
if (sk && !net_eq(net, sock_net(sk)))
169-
sk = NULL;
170-
171-
dst = xfrm_lookup(net, dst, &fl, sk, 0);
172-
if (IS_ERR(dst))
173-
return PTR_ERR(dst);
174-
175-
skb_dst_drop(skb);
176-
skb_dst_set(skb, dst);
177-
178-
/* Change in oif may mean change in hh_len. */
179-
hh_len = skb_dst(skb)->dev->hard_header_len;
180-
if (skb_headroom(skb) < hh_len &&
181-
pskb_expand_head(skb, hh_len - skb_headroom(skb), 0, GFP_ATOMIC))
182-
return -ENOMEM;
183-
return 0;
184-
}
185-
EXPORT_SYMBOL(nf_xfrm_me_harder);
186149
#endif /* CONFIG_XFRM */
187150

188151
/* We keep an extra hash for each conntrack, for fast searching. */

net/netfilter/nf_nat_proto.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,44 @@ nf_nat_ipv4_pre_routing(void *priv, struct sk_buff *skb,
659659
return ret;
660660
}
661661

662+
#ifdef CONFIG_XFRM
663+
static int nf_xfrm_me_harder(struct net *net, struct sk_buff *skb, unsigned int family)
664+
{
665+
struct sock *sk = skb->sk;
666+
struct dst_entry *dst;
667+
unsigned int hh_len;
668+
struct flowi fl;
669+
int err;
670+
671+
err = xfrm_decode_session(skb, &fl, family);
672+
if (err < 0)
673+
return err;
674+
675+
dst = skb_dst(skb);
676+
if (dst->xfrm)
677+
dst = ((struct xfrm_dst *)dst)->route;
678+
if (!dst_hold_safe(dst))
679+
return -EHOSTUNREACH;
680+
681+
if (sk && !net_eq(net, sock_net(sk)))
682+
sk = NULL;
683+
684+
dst = xfrm_lookup(net, dst, &fl, sk, 0);
685+
if (IS_ERR(dst))
686+
return PTR_ERR(dst);
687+
688+
skb_dst_drop(skb);
689+
skb_dst_set(skb, dst);
690+
691+
/* Change in oif may mean change in hh_len. */
692+
hh_len = skb_dst(skb)->dev->hard_header_len;
693+
if (skb_headroom(skb) < hh_len &&
694+
pskb_expand_head(skb, hh_len - skb_headroom(skb), 0, GFP_ATOMIC))
695+
return -ENOMEM;
696+
return 0;
697+
}
698+
#endif
699+
662700
static unsigned int
663701
nf_nat_ipv4_local_in(void *priv, struct sk_buff *skb,
664702
const struct nf_hook_state *state)

0 commit comments

Comments
 (0)