4049b63 nss: rewrite nss responder so it uses cache_req

19 files Authored by pbrezina 7 years ago, Committed by lslebodn 7 years ago,
    nss: rewrite nss responder so it uses cache_req
    
    Given the size of the current nss responder it was quite impossible
    to simply switch into using the cache_req interface, especially
    because most of the code was duplication of cache lookups.
    
    This patch completely rewrites the responder from scratch. The amount
    of code was reduced to less than a half lines of code with no code duplication,
    better documentation and better maintainability and readability.
    
    All functionality should be intact.
    
    *Code organization*
    All protocol (parsing input message and send a reply) is placed
    in nss_protocol.c. Functions that deals with creating a reply
    packet are placed into their specific nss_protocol_$object.c files.
    
    All supported commands are placed into nss_cmd.c. Functions that
    deals with cache req are in nss_get_object.c and nss_enum.c.
    
    *Code flow for non-enumeration*
    An nss_getby_$input-type is called for each non-enumeration command.
    This function parses the input message, creates a cache_req_data
    structure and issues nss_get_object that calls cache_req. When
    this request is done nss_getby_done make sure a reply is sent to
    the client.
    
    *Comments on enumeration*
    I made some effort to make sure enumeration shares the same code
    for users, groups, services and netgroups. Netgroups now uses
    nss negative cache instead of implementing its own.
    
    Resolves:
    https://fedorahosted.org/sssd/ticket/3151
    
    Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
    
        
file modified
+15 -6
file modified
+141 -1
file modified
+15 -39
file modified
+2 -2
file modified
+6 -0