Skip to content

Commit e527693

Browse files
tomratbertdavem330
authored andcommitted
flow_dissector: Move skb related functions to skbuff.h
Move the flow dissector functions that are specific to skbuffs into skbuff.h out of flow_dissector.h. This makes flow_dissector.h have no dependencies on skbuff.h. Signed-off-by: Tom Herbert <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent d3d11fe commit e527693

File tree

2 files changed

+47
-50
lines changed

2 files changed

+47
-50
lines changed

include/linux/skbuff.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,53 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type)
945945
skb->hash = hash;
946946
}
947947

948+
void __skb_get_hash(struct sk_buff *skb);
949+
u32 skb_get_poff(const struct sk_buff *skb);
950+
u32 __skb_get_poff(const struct sk_buff *skb, void *data,
951+
const struct flow_keys *keys, int hlen);
952+
__be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto,
953+
void *data, int hlen_proto);
954+
955+
static inline __be32 skb_flow_get_ports(const struct sk_buff *skb,
956+
int thoff, u8 ip_proto)
957+
{
958+
return __skb_flow_get_ports(skb, thoff, ip_proto, NULL, 0);
959+
}
960+
961+
void skb_flow_dissector_init(struct flow_dissector *flow_dissector,
962+
const struct flow_dissector_key *key,
963+
unsigned int key_count);
964+
965+
bool __skb_flow_dissect(const struct sk_buff *skb,
966+
struct flow_dissector *flow_dissector,
967+
void *target_container,
968+
void *data, __be16 proto, int nhoff, int hlen);
969+
970+
static inline bool skb_flow_dissect(const struct sk_buff *skb,
971+
struct flow_dissector *flow_dissector,
972+
void *target_container)
973+
{
974+
return __skb_flow_dissect(skb, flow_dissector, target_container,
975+
NULL, 0, 0, 0);
976+
}
977+
978+
static inline bool skb_flow_dissect_flow_keys(const struct sk_buff *skb,
979+
struct flow_keys *flow)
980+
{
981+
memset(flow, 0, sizeof(*flow));
982+
return __skb_flow_dissect(skb, &flow_keys_dissector, flow,
983+
NULL, 0, 0, 0);
984+
}
985+
986+
static inline bool skb_flow_dissect_flow_keys_buf(struct flow_keys *flow,
987+
void *data, __be16 proto,
988+
int nhoff, int hlen)
989+
{
990+
memset(flow, 0, sizeof(*flow));
991+
return __skb_flow_dissect(NULL, &flow_keys_buf_dissector, flow,
992+
data, proto, nhoff, hlen);
993+
}
994+
948995
static inline __u32 skb_get_hash(struct sk_buff *skb)
949996
{
950997
if (!skb->l4_hash && !skb->sw_hash)

include/net/flow_dissector.h

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#define _NET_FLOW_DISSECTOR_H
33

44
#include <linux/types.h>
5-
#include <linux/skbuff.h>
65
#include <linux/in6.h>
76
#include <uapi/linux/if_ether.h>
87

@@ -134,23 +133,6 @@ struct flow_dissector {
134133
unsigned short int offset[FLOW_DISSECTOR_KEY_MAX];
135134
};
136135

137-
void skb_flow_dissector_init(struct flow_dissector *flow_dissector,
138-
const struct flow_dissector_key *key,
139-
unsigned int key_count);
140-
141-
bool __skb_flow_dissect(const struct sk_buff *skb,
142-
struct flow_dissector *flow_dissector,
143-
void *target_container,
144-
void *data, __be16 proto, int nhoff, int hlen);
145-
146-
static inline bool skb_flow_dissect(const struct sk_buff *skb,
147-
struct flow_dissector *flow_dissector,
148-
void *target_container)
149-
{
150-
return __skb_flow_dissect(skb, flow_dissector, target_container,
151-
NULL, 0, 0, 0);
152-
}
153-
154136
struct flow_keys {
155137
struct flow_dissector_key_control control;
156138
#define FLOW_KEYS_HASH_START_FIELD basic
@@ -170,38 +152,6 @@ __be32 flow_get_u32_dst(const struct flow_keys *flow);
170152
extern struct flow_dissector flow_keys_dissector;
171153
extern struct flow_dissector flow_keys_buf_dissector;
172154

173-
static inline bool skb_flow_dissect_flow_keys(const struct sk_buff *skb,
174-
struct flow_keys *flow)
175-
{
176-
memset(flow, 0, sizeof(*flow));
177-
return __skb_flow_dissect(skb, &flow_keys_dissector, flow,
178-
NULL, 0, 0, 0);
179-
}
180-
181-
static inline bool skb_flow_dissect_flow_keys_buf(struct flow_keys *flow,
182-
void *data, __be16 proto,
183-
int nhoff, int hlen)
184-
{
185-
memset(flow, 0, sizeof(*flow));
186-
return __skb_flow_dissect(NULL, &flow_keys_buf_dissector, flow,
187-
data, proto, nhoff, hlen);
188-
}
189-
190-
__be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto,
191-
void *data, int hlen_proto);
192-
193-
static inline __be32 skb_flow_get_ports(const struct sk_buff *skb,
194-
int thoff, u8 ip_proto)
195-
{
196-
return __skb_flow_get_ports(skb, thoff, ip_proto, NULL, 0);
197-
}
198-
199-
u32 flow_hash_from_keys(struct flow_keys *keys);
200-
void __skb_get_hash(struct sk_buff *skb);
201-
u32 skb_get_poff(const struct sk_buff *skb);
202-
u32 __skb_get_poff(const struct sk_buff *skb, void *data,
203-
const struct flow_keys *keys, int hlen);
204-
205155
/* struct flow_keys_digest:
206156
*
207157
* This structure is used to hold a digest of the full flow keys. This is a

0 commit comments

Comments
 (0)