Hi, On 01/05/2017 09:01 PM, Daniel Borkmann wrote: > On 01/05/2017 05:25 PM, Daniel Borkmann wrote: >> On 12/29/2016 06:28 PM, Daniel Mack wrote:
> [...] >>> +static struct bpf_map *trie_alloc(union bpf_attr *attr) >>> +{ >>> + struct lpm_trie *trie; >>> + >>> + /* check sanity of attributes */ >>> + if (attr->max_entries == 0 || attr->map_flags || >>> + attr->key_size < sizeof(struct bpf_lpm_trie_key) + 1 || >>> + attr->key_size > sizeof(struct bpf_lpm_trie_key) + 256 || >>> + attr->value_size != sizeof(u64)) >>> + return ERR_PTR(-EINVAL); > > One more question on this regarding value size as u64 (perhaps I > missed it along the way): reason this was chosen was because for > keeping stats? Why not making user choose a size as in other maps, > so also custom structs could be stored there? In my use case, the actual value of a node is in fact ignored, all that matters is whether a node exists in a trie or not. The test code uses u64 for its tests. I can change it around so that the value size can be defined by userspace, but ideally it would also support 0-byte lengths then. The bpf map syscall handler should handle the latter just fine if I read the code correctly? Thanks, Daniel