Skip to content

Commit 7276ca3

Browse files
committed
netfilter: bridge: nf_bridge_copy_header as static inline in header
Move nf_bridge_copy_header() as static inline in netfilter_bridge.h header file. This patch prepares the modularization of the br_netfilter code. Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 772476d commit 7276ca3

File tree

2 files changed

+38
-38
lines changed

2 files changed

+38
-38
lines changed

include/linux/netfilter_bridge.h

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,6 @@ enum nf_br_hook_priorities {
2424
#define BRNF_8021Q 0x10
2525
#define BRNF_PPPoE 0x20
2626

27-
/* Only used in br_forward.c */
28-
int nf_bridge_copy_header(struct sk_buff *skb);
29-
static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb)
30-
{
31-
if (skb->nf_bridge &&
32-
skb->nf_bridge->mask & (BRNF_BRIDGED | BRNF_BRIDGED_DNAT))
33-
return nf_bridge_copy_header(skb);
34-
return 0;
35-
}
36-
3727
static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb)
3828
{
3929
switch (skb->protocol) {
@@ -46,6 +36,44 @@ static inline unsigned int nf_bridge_encap_header_len(const struct sk_buff *skb)
4636
}
4737
}
4838

39+
static inline void nf_bridge_update_protocol(struct sk_buff *skb)
40+
{
41+
if (skb->nf_bridge->mask & BRNF_8021Q)
42+
skb->protocol = htons(ETH_P_8021Q);
43+
else if (skb->nf_bridge->mask & BRNF_PPPoE)
44+
skb->protocol = htons(ETH_P_PPP_SES);
45+
}
46+
47+
/* Fill in the header for fragmented IP packets handled by
48+
* the IPv4 connection tracking code.
49+
*
50+
* Only used in br_forward.c
51+
*/
52+
static inline int nf_bridge_copy_header(struct sk_buff *skb)
53+
{
54+
int err;
55+
unsigned int header_size;
56+
57+
nf_bridge_update_protocol(skb);
58+
header_size = ETH_HLEN + nf_bridge_encap_header_len(skb);
59+
err = skb_cow_head(skb, header_size);
60+
if (err)
61+
return err;
62+
63+
skb_copy_to_linear_data_offset(skb, -header_size,
64+
skb->nf_bridge->data, header_size);
65+
__skb_push(skb, nf_bridge_encap_header_len(skb));
66+
return 0;
67+
}
68+
69+
static inline int nf_bridge_maybe_copy_header(struct sk_buff *skb)
70+
{
71+
if (skb->nf_bridge &&
72+
skb->nf_bridge->mask & (BRNF_BRIDGED | BRNF_BRIDGED_DNAT))
73+
return nf_bridge_copy_header(skb);
74+
return 0;
75+
}
76+
4977
static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb)
5078
{
5179
if (unlikely(skb->nf_bridge->mask & BRNF_PPPoE))

net/bridge/br_netfilter.c

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,6 @@ static inline void nf_bridge_save_header(struct sk_buff *skb)
245245
skb->nf_bridge->data, header_size);
246246
}
247247

248-
static inline void nf_bridge_update_protocol(struct sk_buff *skb)
249-
{
250-
if (skb->nf_bridge->mask & BRNF_8021Q)
251-
skb->protocol = htons(ETH_P_8021Q);
252-
else if (skb->nf_bridge->mask & BRNF_PPPoE)
253-
skb->protocol = htons(ETH_P_PPP_SES);
254-
}
255-
256248
/* When handing a packet over to the IP layer
257249
* check whether we have a skb that is in the
258250
* expected format
@@ -320,26 +312,6 @@ static int br_parse_ip_options(struct sk_buff *skb)
320312
return -1;
321313
}
322314

323-
/* Fill in the header for fragmented IP packets handled by
324-
* the IPv4 connection tracking code.
325-
*/
326-
int nf_bridge_copy_header(struct sk_buff *skb)
327-
{
328-
int err;
329-
unsigned int header_size;
330-
331-
nf_bridge_update_protocol(skb);
332-
header_size = ETH_HLEN + nf_bridge_encap_header_len(skb);
333-
err = skb_cow_head(skb, header_size);
334-
if (err)
335-
return err;
336-
337-
skb_copy_to_linear_data_offset(skb, -header_size,
338-
skb->nf_bridge->data, header_size);
339-
__skb_push(skb, nf_bridge_encap_header_len(skb));
340-
return 0;
341-
}
342-
343315
/* PF_BRIDGE/PRE_ROUTING *********************************************/
344316
/* Undo the changes made for ip6tables PREROUTING and continue the
345317
* bridge PRE_ROUTING hook. */

0 commit comments

Comments
 (0)