On 17-07-24 07:27 AM, Jiri Pirko wrote:
Mon, Jul 24, 2017 at 03:35:45AM CEST, j...@mojatatu.com wrote:
From: Jamal Hadi Salim <j...@mojatatu.com>
[..]

This helper should be part of the previous patch.


Will do next update.


>> @@ -1157,8 +1164,18 @@ static int tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
>>        struct tc_action_ops *a_o;
>>        int ret = 0;
>>        struct tcamsg *t = (struct tcamsg *) nlmsg_data(cb->nlh);
>> -      struct nlattr *kind = find_dump_kind(cb->nlh);
>> +      struct nla_bitfield_32 fb;
>> +      struct nlattr *count_attr = NULL;
>> +      struct nlattr *tb[TCA_ROOT_MAX + 1];
>> +      struct nlattr *kind = NULL;
>
> Reverse christmas tree :D
>

There were already 2 christmas trees in place;->
I will re-arrange this.


+       if (tb[TCA_ROOT_FLAGS])
+               fb = nla_get_bitfield_32(tb[TCA_ROOT_FLAGS]);

fb? bf? nbf? Please make this synced within the patchset.



Ok, what do you like best? ;->

Don't you need to mask value with selector? In fact, I think that
nla_get_bitfield_32 could just return u32 which would be (value&selector).
The validation takes care of unsupported bits.

For my use case I dont need any of the above since I dont need to
unset things. In other use cases you will need both selector and
value in case someone wants a bit to be set to 0.
Infact I think i will rename that helper to "nla_get_bitvalue_32"
to be more precise.

cheers,
jamal

Reply via email to