Ejemplo n.º 1
0
enum nss_status
_nss_srvd_getaliasbyname_r(const char *name, struct aliasent *ae,
                           char *buffer, size_t bufsize, int *ret_errno) {
  enum nss_status status;
  srvd_service_request_t request;
  srvd_service_response_t response;

  srvd_service_request_initialize(&request);
  srvd_protocol_packet_field_append(&request.packet, SRVD_SERVICE_NSS_ALIASES_REQUEST_NAME,
                                    (uint16_t)(sysconf(_SC_LOGIN_NAME_MAX) + 1), name);

  srvd_service_response_initialize(&response);
  srvd_service_request_query(&request, &response);

  if(response.status == SRVD_SERVICE_RESPONSE_NOTFOUND) {
    SRVD_NSS_NORECORD(status, _nss_srvd_getaliasbyname_r_error);
  }
  else if(response.status == SRVD_SERVICE_RESPONSE_UNAVAIL) {
    SRVD_NSS_UNAVAIL(status, _nss_srvd_getaliasbyname_r_error);
  }
  else if(response.status != SRVD_SERVICE_RESPONSE_SUCCESS) {
    SRVD_NSS_FAIL(status, ret_errno, NSS_STATUS_TRYAGAIN, EINVAL,
                  _nss_srvd_getaliasbyname_r_error);
  }

  status = _srvd_nss_aliases_populate(&response, ae, buffer, bufsize, ret_errno);

 _nss_srvd_getaliasbyname_r_error:

  srvd_service_request_finalize(&request);
  srvd_service_response_finalize(&response);

  return status;
}
Ejemplo n.º 2
0
srvd_boolean_t srvd_service_nss_passwd_response_gecos_set(srvd_service_response_t *response,
                                                          const char *gecos, size_t length) {
  SRVD_RETURN_FALSE_UNLESS(response);
  SRVD_RETURN_FALSE_UNLESS(gecos);

  return srvd_protocol_packet_field_append(&response->packet,
                                           SRVD_SERVICE_NSS_PASSWD_RESPONSE_GECOS, length, gecos);
}
Ejemplo n.º 3
0
srvd_boolean_t srvd_service_nss_passwd_response_shell_set(srvd_service_response_t *response,
                                                          const char *shell, size_t length) {
  SRVD_RETURN_FALSE_UNLESS(response);
  SRVD_RETURN_FALSE_UNLESS(shell);

  return srvd_protocol_packet_field_append(&response->packet,
                                           SRVD_SERVICE_NSS_PASSWD_RESPONSE_SHELL, length, shell);
}