flow_keys
.offset = offsetof(struct flow_keys, control),
.offset = offsetof(struct flow_keys, basic),
.offset = offsetof(struct flow_keys, addrs.v4addrs),
.offset = offsetof(struct flow_keys, addrs.v6addrs),
.offset = offsetof(struct flow_keys, addrs.tipckey),
.offset = offsetof(struct flow_keys, ports),
.offset = offsetof(struct flow_keys, icmp),
.offset = offsetof(struct flow_keys, vlan),
.offset = offsetof(struct flow_keys, tags),
.offset = offsetof(struct flow_keys, keyid),
static bool bond_flow_ip(struct sk_buff *skb, struct flow_keys *fk, const void *data,
__be16 l2_proto, int nhoff, int hlen, struct flow_keys *fk)
static u32 bond_ip_hash(u32 hash, struct flow_keys *flow, int xmit_policy)
struct flow_keys flow;
static void bond_sk_to_flow(struct sock *sk, struct flow_keys *flow)
struct flow_keys flow;
u32 bnxt_get_ntp_filter_idx(struct bnxt *bp, struct flow_keys *fkeys,
struct flow_keys *keys1 = &f1->fkeys;
struct flow_keys *keys2 = &f2->fkeys;
struct flow_keys *fkeys;
static u32 bnxt_get_rss_flow_tuple_len(struct bnxt *bp, struct flow_keys *fkeys)
static u32 bnxt_toeplitz(struct bnxt *bp, struct flow_keys *fkeys,
struct flow_keys *keys = &fltr->fkeys;
struct flow_keys fkeys;
u32 bnxt_get_ntp_filter_idx(struct bnxt *bp, struct flow_keys *fkeys,
struct flow_keys *fkeys;
struct flow_keys *fkeys;
struct flow_keys keys;
struct flow_keys *k)
struct flow_keys keys;
int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq)
int enic_addfltr_5t(struct enic *enic, struct flow_keys *keys, u16 rq);
u16 flow_id, struct flow_keys *fkeys);
struct flow_keys fkeys;
static void hclge_fd_get_flow_tuples(const struct flow_keys *fkeys,
u16 flow_id, struct flow_keys *fkeys)
ice_arfs_build_entry(struct ice_vsi *vsi, const struct flow_keys *fk,
ice_arfs_cmp(const struct ice_fdir_fltr *fltr_info, const struct flow_keys *fk,
struct flow_keys fk;
struct flow_keys fk;
struct flow_keys fk;
struct flow_keys flow_keys;
skb_flow_dissect_flow_keys(skb, &flow_keys, FLOW_DISSECTOR_F_STOP_BEFORE_ENCAP);
if (flow_keys.basic.ip_proto != IPPROTO_TCP &&
flow_keys.basic.ip_proto != IPPROTO_UDP &&
flow_keys.basic.ip_proto != IPPROTO_GRE)
if (flow_keys.basic.ip_proto == IPPROTO_TCP ||
flow_keys.basic.ip_proto == IPPROTO_UDP) {
tuple->port.src = flow_keys.ports.src;
tuple->port.dst = flow_keys.ports.dst;
tuple->n_proto = flow_keys.basic.n_proto;
tuple->ip_proto = flow_keys.basic.ip_proto;
switch (flow_keys.basic.n_proto) {
tuple->ip.src_v4 = flow_keys.addrs.v4addrs.src;
tuple->ip.dst_v4 = flow_keys.addrs.v4addrs.dst;
tuple->ip.src_v6 = flow_keys.addrs.v6addrs.src;
tuple->ip.dst_v6 = flow_keys.addrs.v6addrs.dst;
const struct flow_keys *fk,
static bool arfs_cmp(const struct arfs_tuple *tuple, const struct flow_keys *fk)
const struct flow_keys *fk)
struct flow_keys fk;
struct flow_keys fk;
struct flow_keys fk;
struct flow_keys fk;
struct flow_keys flow;
struct flow_keys flow;
struct flow_keys *flow,
struct flow_keys keys;
struct flow_keys;
__u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys);
offsetof(struct flow_keys, FLOW_KEYS_HASH_START_FIELD)
__be32 flow_get_u32_src(const struct flow_keys *flow);
__be32 flow_get_u32_dst(const struct flow_keys *flow);
const struct flow_keys *flow);
static inline bool flow_keys_have_l4(const struct flow_keys *keys)
u32 flow_hash_from_keys(struct flow_keys *keys);
u32 flow_hash_from_keys_seed(struct flow_keys *keys,
struct bpf_flow_keys *flow_keys;
static inline void iph_to_flow_copy_v4addrs(struct flow_keys *flow,
struct flow_keys *flkeys)
struct flow_keys *flkeys)
const struct sk_buff *skb, struct flow_keys *hkeys);
struct flow_keys *flkeys)
struct flow_keys *flkeys)
const struct sk_buff *skb, struct flow_keys *flkeys);
struct flow_keys *keys)
struct flow_keys *keys)
static inline void iph_to_flow_copy_v6addrs(struct flow_keys *flow,
__bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
struct bpf_flow_keys flow_keys;
ctx.flow_keys = &flow_keys;
ret = bpf_test_finish(kattr, uattr, &flow_keys, NULL,
sizeof(flow_keys), 0, retval, duration);
case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
case bpf_ctx_range_ptr(struct __sk_buff, flow_keys):
case offsetof(struct __sk_buff, flow_keys):
*insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(struct bpf_flow_dissector, flow_keys),
offsetof(struct bpf_flow_dissector, flow_keys));
key_tags->flow_label = ntohl(flow_keys->flow_label);
struct bpf_flow_keys *flow_keys = ctx->flow_keys;
memset(flow_keys, 0, sizeof(*flow_keys));
flow_keys->n_proto = proto;
flow_keys->nhoff = nhoff;
flow_keys->thoff = flow_keys->nhoff;
flow_keys->flags = flags;
flow_keys->nhoff = clamp_t(u16, flow_keys->nhoff, nhoff, hlen);
flow_keys->thoff = clamp_t(u16, flow_keys->thoff,
flow_keys->nhoff, hlen);
struct bpf_flow_keys flow_keys;
.flow_keys = &flow_keys,
__skb_flow_bpf_to_target(&flow_keys, flow_dissector,
static const void *flow_keys_hash_start(const struct flow_keys *flow)
static inline size_t flow_keys_hash_length(const struct flow_keys *flow)
__be32 flow_get_u32_src(const struct flow_keys *flow)
__be32 flow_get_u32_dst(const struct flow_keys *flow)
static inline void __flow_hash_consistentify(struct flow_keys *keys)
static inline u32 __flow_hash_from_keys(struct flow_keys *keys,
u32 flow_hash_from_keys(struct flow_keys *keys)
u32 flow_hash_from_keys_seed(struct flow_keys *keys,
struct flow_keys *keys,
const struct flow_keys *flow)
struct flow_keys keys;
struct flow_keys keys;
struct flow_keys keys;
__u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys)
.offset = offsetof(struct flow_keys, control),
.offset = offsetof(struct flow_keys, basic),
.offset = offsetof(struct flow_keys, addrs.v4addrs),
.offset = offsetof(struct flow_keys, addrs.v6addrs),
.offset = offsetof(struct flow_keys, addrs.tipckey),
.offset = offsetof(struct flow_keys, ports),
.offset = offsetof(struct flow_keys, vlan),
.offset = offsetof(struct flow_keys, tags),
.offset = offsetof(struct flow_keys, keyid),
.offset = offsetof(struct flow_keys, control),
.offset = offsetof(struct flow_keys, basic),
.offset = offsetof(struct flow_keys, addrs.v4addrs),
.offset = offsetof(struct flow_keys, addrs.v6addrs),
.offset = offsetof(struct flow_keys, ports),
.offset = offsetof(struct flow_keys, control),
.offset = offsetof(struct flow_keys, basic),
static void __skb_flow_bpf_to_target(const struct bpf_flow_keys *flow_keys,
key_control->thoff = flow_keys->thoff;
if (flow_keys->is_frag)
if (flow_keys->is_first_frag)
if (flow_keys->is_encap)
key_basic->n_proto = flow_keys->n_proto;
key_basic->ip_proto = flow_keys->ip_proto;
if (flow_keys->addr_proto == ETH_P_IP &&
key_addrs->v4addrs.src = flow_keys->ipv4_src;
key_addrs->v4addrs.dst = flow_keys->ipv4_dst;
} else if (flow_keys->addr_proto == ETH_P_IPV6 &&
memcpy(&key_addrs->v6addrs.src, &flow_keys->ipv6_src,
memcpy(&key_addrs->v6addrs.dst, &flow_keys->ipv6_dst,
key_ports->src = flow_keys->sport;
key_ports->dst = flow_keys->dport;
key_ports_range->tp.src = flow_keys->sport;
key_ports_range->tp.dst = flow_keys->dport;
struct flow_keys flkeys;
struct flow_keys flkeys;
struct flow_keys *hash_keys)
struct flow_keys keys, hash_keys;
struct flow_keys keys, hash_keys;
struct flow_keys hash_keys;
const struct sk_buff *skb, struct flow_keys *flkeys)
struct flow_keys hash_keys;
struct flow_keys keys;
struct flow_keys keys;
__be32 saddr, dscp_t dscp, struct flow_keys *hkeys)
struct flow_keys *flkeys = NULL, _flkeys;
struct flow_keys flkeys;
struct flow_keys *keys,
struct flow_keys *flkeys)
struct flow_keys *_flkeys = flkeys;
struct flow_keys keys, hash_keys;
struct flow_keys keys, hash_keys;
struct flow_keys hash_keys;
const struct sk_buff *skb, struct flow_keys *flkeys)
struct flow_keys hash_keys;
struct flow_keys keys;
struct flow_keys keys;
struct flow_keys *flkeys = NULL, _flkeys;
struct action_flow_keys *keys = &ovs_pcpu->flow_keys;
struct action_flow_keys flow_keys;
const struct flow_keys *flow)
const struct flow_keys *flow)
const struct flow_keys *flow)
const struct flow_keys *flow)
const struct flow_keys *flow)
static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow)
struct flow_keys flow_keys;
skb_flow_dissect_flow_keys(skb, &flow_keys, 0);
keys[n] = flow_key_get(skb, key, &flow_keys);
static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow)
static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow)
const struct flow_keys *flow)
const struct flow_keys *flow)
static bool cake_update_flowkeys(struct flow_keys *keys,
struct flow_keys keys, host_keys;
struct flow_keys temp;
__bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
struct bpf_flow_keys flow_keys = {};
err = bpf_map_lookup_elem(keys_fd, &key, &flow_keys);
ASSERT_MEMEQ(&flow_keys, &tests[i].keys,
struct bpf_flow_keys flow_keys;
.data_out = &flow_keys,
ASSERT_EQ(topts.data_size_out, sizeof(flow_keys),
ASSERT_MEMEQ(&flow_keys, &tests[i].keys,
.data_out = &flow_keys,
.data_size_out = sizeof(flow_keys),
ASSERT_EQ(topts.data_size_out, sizeof(flow_keys),
struct bpf_flow_keys flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
struct bpf_flow_keys *keys = skb->flow_keys;
__u16 thoff = skb->flow_keys->thoff;
: __imm_const(__sk_buff_flow_keys, offsetof(struct __sk_buff, flow_keys))
offsetof(struct __sk_buff, flow_keys)),
offsetof(struct __sk_buff, flow_keys)),
: __imm_const(flow_keys_off, offsetof(struct __sk_buff, flow_keys)),