Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions src/libbpfilter/cgen/prog/map.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,22 @@ static struct bf_btf *_bf_map_make_btf(const struct bf_map *map)
btf__add_field(kbtf, "count", 1, 0, 0);
btf__add_field(kbtf, "size", 1, 64, 0);
break;
case BF_MAP_TYPE_STATE:
case BF_MAP_TYPE_STATE: {
int u32_id;
int rule_state_id;

// The map's single value holds one bf_rule_state per rule
btf__add_int(kbtf, "u64", 8, 0);
btf->key_type_id = btf__add_int(kbtf, "u32", 4, 0);
btf->value_type_id = btf__add_struct(kbtf, "bf_rule_state",
sizeof(struct bf_rule_state));
u32_id = btf__add_int(kbtf, "u32", 4, 0);
rule_state_id = btf__add_struct(kbtf, "bf_rule_state",
sizeof(struct bf_rule_state));
btf__add_field(kbtf, "last_log_ts", 1, 0, 0);
btf->key_type_id = u32_id;
btf->value_type_id =
btf__add_array(kbtf, u32_id, rule_state_id,
map->value_size / sizeof(struct bf_rule_state));
break;
}
case BF_MAP_TYPE_PRINTER:
case BF_MAP_TYPE_SET:
case BF_MAP_TYPE_LOG:
Expand Down
3 changes: 3 additions & 0 deletions tests/e2e/rules/log.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,6 @@ ${FROM_NS} ${BFCLI} chain set --from-str "chain chain_load_xdp_3 BF_HOOK_XDP ACC
# --verbose bpf adds a check after the log ELF stub call
${FROM_NS} ${BFCLI} --verbose bpf chain set --from-str "chain chain_load_xdp_3 BF_HOOK_XDP ACCEPT rule ip4.proto icmp log link counter DROP"
${FROM_NS} ${BFCLI} --verbose bpf chain set --from-str "chain chain_load_xdp_3 BF_HOOK_XDP ACCEPT rule ip4.proto tcp log 5-tuple every 1s counter DROP"

# log every <frequency> in a chain with more than one rule
${FROM_NS} ${BFCLI} chain set --from-str "chain chain_load_xdp_3 BF_HOOK_XDP ACCEPT rule ip4.proto tcp counter ACCEPT rule ip4.proto icmp log every 1s counter DROP"
Loading