srvd_boolean_t srvd_service_nss_passwd_response_gid_set(srvd_service_response_t *response, gid_t gid) { SRVD_RETURN_FALSE_UNLESS(response); return srvd_protocol_packet_field_append_uint32(&response->packet, SRVD_SERVICE_NSS_PASSWD_RESPONSE_GID, (uint32_t)gid); }
enum nss_status _nss_srvd_getaliasent_r(struct aliasent *ae, char *buffer, size_t bufsize, int *ret_errno) { enum nss_status status; uint32_t *offset; srvd_service_request_t request; srvd_service_response_t response; SRVD_THREAD_ONCE_CALL(_srvd_nss_aliases_aliasent_initialize, _srvd_nss_aliases_aliasent_initialize_callback); if(!SRVD_THREAD_KEY_DATA_HAS(_srvd_nss_aliases_aliasent_offset)) { if(!_srvd_nss_aliases_aliasent_initialize_offset()) return NSS_STATUS_UNAVAIL; } offset = (uint32_t *)SRVD_THREAD_KEY_DATA_GET(_srvd_nss_aliases_aliasent_offset); srvd_service_request_initialize(&request); srvd_protocol_packet_field_append_uint32(&request.packet, SRVD_SERVICE_NSS_ALIASES_REQUEST_ENTITIES, *offset); srvd_service_response_initialize(&response); srvd_service_request_query(&request, &response); if(response.status == SRVD_SERVICE_RESPONSE_NOTFOUND) { SRVD_NSS_NORECORD(status, _nss_srvd_getaliasent_r_error); } else if(response.status == SRVD_SERVICE_RESPONSE_UNAVAIL) { SRVD_NSS_UNAVAIL(status, _nss_srvd_getaliasent_r_error); } else if(response.status != SRVD_SERVICE_RESPONSE_SUCCESS) { SRVD_NSS_FAIL(status, ret_errno, NSS_STATUS_TRYAGAIN, EINVAL, _nss_srvd_getaliasent_r_error); } status = _srvd_nss_aliases_populate(&response, ae, buffer, bufsize, ret_errno); (*offset)++; _nss_srvd_getaliasent_r_error: srvd_service_request_finalize(&request); srvd_service_response_finalize(&response); return status; }