• Patrick McHardy's avatar
    [RTNETLINK]: Add nested compat attribute · afdc3238
    Patrick McHardy authored
    Add a nested compat attribute type that can be used to convert
    attributes that contain a structure to nested attributes in a
    backwards compatible way.
    
    The attribute looks like this:
    
    struct {
            [ compat contents ]
            struct rtattr {
                    .rta_len        = total size,
                    .rta_type       = type,
            } rta;
            struct old_structure struct;
    
            [ nested top-level attribute ]
            struct rtattr {
                    .rta_len        = nest size,
                    .rta_type       = type,
            } nest_attr;
    
            [ optional 0 .. n nested attributes ]
            struct rtattr {
                    .rta_len        = private attribute len,
                    .rta_type       = private attribute typ,
            } nested_attr;
            struct nested_data data;
    };
    
    Since both userspace and kernel deal correctly with attributes that are
    larger than expected old versions will just parse the compat part and
    ignore the rest.
    Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    afdc3238
rtnetlink.c 31.4 KB