• Nikolay Aleksandrov's avatar
    bridge: mdb: add support for more attributes and export timer · 21257156
    Nikolay Aleksandrov authored
    Currently mdb entries are exported directly as a structure inside
    MDBA_MDB_ENTRY_INFO attribute, we can't really extend it without
    breaking user-space. In order to export new mdb fields, I've converted
    the MDBA_MDB_ENTRY_INFO into a nested attribute which starts like before
    with struct br_mdb_entry (without header, as it's casted directly in
    iproute2) and continues with MDBA_MDB_EATTR_ attributes. This way we
    keep compatibility with older users and can export new data.
    I've tested this with iproute2, both with and without support for the
    added attribute and it works fine.
    So basically we again have MDBA_MDB_ENTRY_INFO with struct br_mdb_entry
    inside but it may contain also some additional MDBA_MDB_EATTR_ attributes
    such as MDBA_MDB_EATTR_TIMER which can be parsed by user-space.
    
    So the new structure is:
    [MDBA_MDB] = {
         [MDBA_MDB_ENTRY] = {
             [MDBA_MDB_ENTRY_INFO]
             [MDBA_MDB_ENTRY_INFO] { <- Nested attribute
                 struct br_mdb_entry <- nla_put_nohdr()
                 [MDBA_MDB_ENTRY attributes] <- normal netlink attributes
             }
         }
    }
    Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    21257156
br_mdb.c 15.4 KB