On 7/23/17 7:35 PM, Jamal Hadi Salim wrote: > In the most basic form, the user specifies the attribute policy as: > [ATTR_GOO] = { .type = NLA_BITFIELD_32, .validation_data = &myvalidflags }, > > where myvalidflags is the bit mask of the flags the kernel understands. > > If the user _does not_ provide myvalidflags then the attribute will > also be rejected.
No other netlink attribute has this requirement. Users of the attributes are the only ones that know if a value is valid or not (e.g, attribute passing a device index) and those are always checked in line. Furthermore, you are locking this attribute into a static meaning of what is a valid value when flags can be valid or invalid based on other attributes passed in the request.