• David S. Miller's avatar
    ipv4: Sanitize and simplify ip_route_{connect,newports}() · 2d7192d6
    David S. Miller authored
    These functions are used together as a unit for route resolution
    during connect().  They address the chicken-and-egg problem that
    exists when ports need to be allocated during connect() processing,
    yet such port allocations require addressing information from the
    routing code.
    
    It's currently more heavy handed than it needs to be, and in
    particular we allocate and initialize a flow object twice.
    
    Let the callers provide the on-stack flow object.  That way we only
    need to initialize it once in the ip_route_connect() call.
    
    Later, if ip_route_newports() needs to do anything, it re-uses that
    flow object as-is except for the ports which it updates before the
    route re-lookup.
    
    Also, describe why this set of facilities are needed and how it works
    in a big comment.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Reviewed-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    2d7192d6
tcp_ipv4.c 65.7 KB