• Craig Gallek's avatar
    soreuseport: define reuseport groups · ef456144
    Craig Gallek authored
    struct sock_reuseport is an optional shared structure referenced by each
    socket belonging to a reuseport group.  When a socket is bound to an
    address/port not yet in use and the reuseport flag has been set, the
    structure will be allocated and attached to the newly bound socket.
    When subsequent calls to bind are made for the same address/port, the
    shared structure will be updated to include the new socket and the
    newly bound socket will reference the group structure.
    
    Usually, when an incoming packet was destined for a reuseport group,
    all sockets in the same group needed to be considered before a
    dispatching decision was made.  With this structure, an appropriate
    socket can be found after looking up just one socket in the group.
    
    This shared structure will also allow for more complicated decisions to
    be made when selecting a socket (eg a BPF filter).
    
    This work is based off a similar implementation written by
    Ying Cai <ycai@google.com> for implementing policy-based reuseport
    selection.
    Signed-off-by: default avatarCraig Gallek <kraig@google.com>
    Acked-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ef456144
sock.h 63.9 KB