• Nikolay Aleksandrov's avatar
    net: bridge: add support for user-controlled bool options · a428afe8
    Nikolay Aleksandrov authored
    We have been adding many new bridge options, a big number of which are
    boolean but still take up netlink attribute ids and waste space in the skb.
    Recently we discussed learning from link-local packets[1] and decided
    yet another new boolean option will be needed, thus introducing this API
    to save some bridge nl space.
    The API supports changing the value of multiple boolean options at once
    via the br_boolopt_multi struct which has an optmask (which options to
    set, bit per opt) and optval (options' new values). Future boolean
    options will only be added to the br_boolopt_id enum and then will have
    to be handled in br_boolopt_toggle/get. The API will automatically
    add the ability to change and export them via netlink, sysfs can use the
    single boolopt function versions to do the same. The behaviour with
    failing/succeeding is the same as with normal netlink option changing.
    
    If an option requires mapping to internal kernel flag or needs special
    configuration to be enabled then it should be handled in
    br_boolopt_toggle. It should also be able to retrieve an option's current
    state via br_boolopt_get.
    
    v2: WARN_ON() on unsupported option as that shouldn't be possible and
        also will help catch people who add new options without handling
        them for both set and get. Pass down extack so if an option desires
        it could set it on error and be more user-friendly.
    
    [1] https://www.spinics.net/lists/netdev/msg532698.htmlSigned-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a428afe8
br.c 8.05 KB