1 #ifndef _NET_FLOW_KEYS_H
2 #define _NET_FLOW_KEYS_H
5 * @src: source ip address in case of IPv4
6 * For IPv6 it contains 32bit hash of src address
7 * @dst: destination ip address in case of IPv4
8 * For IPv6 it contains 32bit hash of dst address
9 * @ports: port numbers of Transport header
10 * port16[0]: src port number
11 * port16[1]: dst port number
12 * @thoff: Transport header offset
13 * @n_proto: Network header protocol (eg. IPv4/IPv6)
14 * @ip_proto: Transport header protocol (eg. TCP/UDP)
15 * All the members, except thoff, are in network byte order.
18 /* (src,dst) must be grouped, in the same way than in IP header */
30 bool __skb_flow_dissect(const struct sk_buff
*skb
, struct flow_keys
*flow
,
31 void *data
, __be16 proto
, int nhoff
, int hlen
);
32 static inline bool skb_flow_dissect(const struct sk_buff
*skb
, struct flow_keys
*flow
)
34 return __skb_flow_dissect(skb
, flow
, NULL
, 0, 0, 0);
36 __be32
__skb_flow_get_ports(const struct sk_buff
*skb
, int thoff
, u8 ip_proto
,
37 void *data
, int hlen_proto
);
38 static inline __be32
skb_flow_get_ports(const struct sk_buff
*skb
, int thoff
, u8 ip_proto
)
40 return __skb_flow_get_ports(skb
, thoff
, ip_proto
, NULL
, 0);
42 u32
flow_hash_from_keys(struct flow_keys
*keys
);
43 unsigned int flow_get_hlen(const unsigned char *data
, unsigned int max_len
,
46 /* struct flow_keys_digest:
48 * This structure is used to hold a digest of the full flow keys. This is a
49 * larger "hash" of a flow to allow definitively matching specific flows where
50 * the 32 bit skb->hash is not large enough. The size is limited to 16 bytes so
51 * that it can by used in CB of skb (see sch_choke for an example).
53 #define FLOW_KEYS_DIGEST_LEN 16
54 struct flow_keys_digest
{
55 u8 data
[FLOW_KEYS_DIGEST_LEN
];
58 void make_flow_keys_digest(struct flow_keys_digest
*digest
,
59 const struct flow_keys
*flow
);
This page took 0.036669 seconds and 5 git commands to generate.