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