nsswitch/winbind_nss_solaris.c

ソースコードを見る。

データ構造

struct  nss_groupsbymem

関数

static NSS_STATUS _nss_winbind_setpwent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_endpwent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getpwent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getpwnam_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getpwuid_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_passwd_destr (nss_backend_t *be, void *args)
nss_backend_t_nss_winbind_passwd_constr (const char *db_name, const char *src_name, const char *cfg_args)
static NSS_STATUS _nss_winbind_setgrent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_endgrent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getgrent_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getgrnam_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getgrgid_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_getgroupsbymember_solwrap (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_group_destr (nss_backend_t *be, void *args)
nss_backend_t_nss_winbind_group_constr (const char *db_name, const char *src_name, const char *cfg_args)
static NSS_STATUS parse_response (int af, nss_XbyY_args_t *argp, struct winbindd_response *response)
static NSS_STATUS _nss_winbind_ipnodes_getbyname (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_hosts_getbyname (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_hosts_getbyaddr (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_common_endent (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_common_setent (nss_backend_t *be, void *args)
static NSS_STATUS _nss_winbind_common_getent (nss_backend_t *be, void *args)
static nss_backend_t_nss_winbind_common_constr (nss_backend_op_t ops[], int n_ops)
static NSS_STATUS _nss_winbind_common_destr (nss_backend_t *be, void *args)
nss_backend_t_nss_winbind_ipnodes_constr (char *dummy1, char *dummy2, char *dummy3) const
nss_backend_t_nss_winbind_hosts_constr (char *dummy1, char *dummy2, char *dummy3) const

変数

static nss_backend_op_t passwd_ops []
static nss_backend_op_t group_ops []
static nss_backend_op_t ipnodes_ops []
static nss_backend_op_t host_ops []


関数

static NSS_STATUS _nss_winbind_setpwent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c87 行で定義されています。

参照先 _nss_winbind_setpwent().

00088 {
00089         NSS_DEBUG("_nss_winbind_setpwent_solwrap");
00090         return _nss_winbind_setpwent();
00091 }

static NSS_STATUS _nss_winbind_endpwent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c94 行で定義されています。

参照先 _nss_winbind_endpwent().

00095 {
00096         NSS_DEBUG("_nss_winbind_endpwent_solwrap");
00097         return _nss_winbind_endpwent();
00098 }

static NSS_STATUS _nss_winbind_getpwent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c101 行で定義されています。

参照先 _nss_winbind_getpwent_r()NSS_STATUS_SUCCESSresultsnprintf().

00102 {
00103         NSS_STATUS ret;
00104         char* buffer = NSS_ARGS(args)->buf.buffer;
00105         int buflen = NSS_ARGS(args)->buf.buflen;
00106         struct passwd* result = (struct passwd*) NSS_ARGS(args)->buf.result;
00107         int* errnop = &NSS_ARGS(args)->erange;
00108         char logmsg[80];
00109 
00110         ret = _nss_winbind_getpwent_r(result, buffer, 
00111                                       buflen, errnop);
00112 
00113         if(ret == NSS_STATUS_SUCCESS)
00114                 {
00115                         snprintf(logmsg, 79, "_nss_winbind_getpwent_solwrap: Returning user: %s\n",
00116                                  result->pw_name);
00117                         NSS_DEBUG(logmsg);
00118                         NSS_ARGS(args)->returnval = (void*) result;
00119                 } else {
00120                         snprintf(logmsg, 79, "_nss_winbind_getpwent_solwrap: Returning error: %d.\n",ret);
00121                         NSS_DEBUG(logmsg);
00122                 }
00123     
00124         return ret;
00125 }

static NSS_STATUS _nss_winbind_getpwnam_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c128 行で定義されています。

参照先 _nss_winbind_getpwnam_r()bufNSS_STATUS_SUCCESSresult.

00129 {
00130         NSS_STATUS ret;
00131         struct passwd* result = (struct passwd*) NSS_ARGS(args)->buf.result;
00132 
00133         NSS_DEBUG("_nss_winbind_getpwnam_solwrap");
00134 
00135         ret = _nss_winbind_getpwnam_r (NSS_ARGS(args)->key.name,
00136                                                 result,
00137                                                 NSS_ARGS(args)->buf.buffer,
00138                                                 NSS_ARGS(args)->buf.buflen,
00139                                                 &NSS_ARGS(args)->erange);
00140         if(ret == NSS_STATUS_SUCCESS)
00141                 NSS_ARGS(args)->returnval = (void*) result;
00142   
00143         return ret;
00144 }

static NSS_STATUS _nss_winbind_getpwuid_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c147 行で定義されています。

参照先 _nss_winbind_getpwuid_r()bufNSS_STATUS_SUCCESSresult.

00148 {
00149         NSS_STATUS ret;
00150         struct passwd* result = (struct passwd*) NSS_ARGS(args)->buf.result;
00151   
00152         NSS_DEBUG("_nss_winbind_getpwuid_solwrap");
00153         ret = _nss_winbind_getpwuid_r (NSS_ARGS(args)->key.uid,
00154                                        result,
00155                                        NSS_ARGS(args)->buf.buffer,
00156                                        NSS_ARGS(args)->buf.buflen,
00157                                        &NSS_ARGS(args)->erange);
00158         if(ret == NSS_STATUS_SUCCESS)
00159                 NSS_ARGS(args)->returnval = (void*) result;
00160   
00161         return ret;
00162 }

static NSS_STATUS _nss_winbind_passwd_destr ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c164 行で定義されています。

参照先 NSS_STATUS_SUCCESS.

00165 {
00166         SAFE_FREE(be);
00167         NSS_DEBUG("_nss_winbind_passwd_destr");
00168         return NSS_STATUS_SUCCESS;
00169 }

nss_backend_t* _nss_winbind_passwd_constr ( const char *  db_name,
const char *  src_name,
const char *  cfg_args 
)

winbind_nss_solaris.c182 行で定義されています。

参照先 nss_backend::n_opsnss_backend::opspasswd_ops.

00185 {
00186         nss_backend_t *be;
00187   
00188         if(!(be = SMB_MALLOC_P(nss_backend_t)) )
00189                 return NULL;
00190 
00191         be->ops = passwd_ops;
00192         be->n_ops = sizeof(passwd_ops) / sizeof(nss_backend_op_t);
00193 
00194         NSS_DEBUG("Initialized nss_winbind passwd backend");
00195         return be;
00196 }

static NSS_STATUS _nss_winbind_setgrent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c202 行で定義されています。

参照先 _nss_winbind_setgrent().

00203 {
00204         NSS_DEBUG("_nss_winbind_setgrent_solwrap");
00205         return _nss_winbind_setgrent();
00206 }

static NSS_STATUS _nss_winbind_endgrent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c209 行で定義されています。

参照先 _nss_winbind_endgrent().

00210 {
00211         NSS_DEBUG("_nss_winbind_endgrent_solwrap");
00212         return _nss_winbind_endgrent();
00213 }

static NSS_STATUS _nss_winbind_getgrent_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c216 行で定義されています。

参照先 _nss_winbind_getgrent_r()NSS_STATUS_SUCCESSresultsnprintf().

00217 {
00218         NSS_STATUS ret;
00219         char* buffer = NSS_ARGS(args)->buf.buffer;
00220         int buflen = NSS_ARGS(args)->buf.buflen;
00221         struct group* result = (struct group*) NSS_ARGS(args)->buf.result;
00222         int* errnop = &NSS_ARGS(args)->erange;
00223         char logmsg[80];
00224 
00225         ret = _nss_winbind_getgrent_r(result, buffer, 
00226                                       buflen, errnop);
00227 
00228         if(ret == NSS_STATUS_SUCCESS)
00229                 {
00230                         snprintf(logmsg, 79, "_nss_winbind_getgrent_solwrap: Returning group: %s\n", result->gr_name);
00231                         NSS_DEBUG(logmsg);
00232                         NSS_ARGS(args)->returnval = (void*) result;
00233                 } else {
00234                         snprintf(logmsg, 79, "_nss_winbind_getgrent_solwrap: Returning error: %d.\n", ret);
00235                         NSS_DEBUG(logmsg);
00236                 }
00237 
00238         return ret;
00239         
00240 }

static NSS_STATUS _nss_winbind_getgrnam_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c243 行で定義されています。

参照先 _nss_winbind_getgrnam_r()bufNSS_STATUS_SUCCESSresult.

00244 {
00245         NSS_STATUS ret;
00246         struct group* result = (struct group*) NSS_ARGS(args)->buf.result;
00247 
00248         NSS_DEBUG("_nss_winbind_getgrnam_solwrap");
00249         ret = _nss_winbind_getgrnam_r(NSS_ARGS(args)->key.name,
00250                                       result,
00251                                       NSS_ARGS(args)->buf.buffer,
00252                                       NSS_ARGS(args)->buf.buflen,
00253                                       &NSS_ARGS(args)->erange);
00254 
00255         if(ret == NSS_STATUS_SUCCESS)
00256                 NSS_ARGS(args)->returnval = (void*) result;
00257   
00258         return ret;
00259 }

static NSS_STATUS _nss_winbind_getgrgid_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c262 行で定義されています。

参照先 _nss_winbind_getgrgid_r()bufNSS_STATUS_SUCCESSresult.

00263 {
00264         NSS_STATUS ret;
00265         struct group* result = (struct group*) NSS_ARGS(args)->buf.result;
00266 
00267         NSS_DEBUG("_nss_winbind_getgrgid_solwrap");
00268         ret = _nss_winbind_getgrgid_r (NSS_ARGS(args)->key.gid,
00269                                        result,
00270                                        NSS_ARGS(args)->buf.buffer,
00271                                        NSS_ARGS(args)->buf.buflen,
00272                                        &NSS_ARGS(args)->erange);
00273 
00274         if(ret == NSS_STATUS_SUCCESS)
00275                 NSS_ARGS(args)->returnval = (void*) result;
00276 
00277         return ret;
00278 }

static NSS_STATUS _nss_winbind_getgroupsbymember_solwrap ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c281 行で定義されています。

参照先 _nss_winbind_initgroups_dyn()nss_groupsbymem::gid_arraynss_groupsbymem::maxgidsNSS_STATUS_NOTFOUNDNSS_STATUS_SUCCESSnss_groupsbymem::numgidsnss_groupsbymem::username.

00282 {
00283         int errnop;
00284         struct nss_groupsbymem *gmem = (struct nss_groupsbymem *)args;
00285 
00286         NSS_DEBUG("_nss_winbind_getgroupsbymember");
00287 
00288         _nss_winbind_initgroups_dyn(gmem->username,
00289                 gmem->gid_array[0], /* Primary Group */
00290                 &gmem->numgids,
00291                 &gmem->maxgids,
00292                 &gmem->gid_array,
00293                 gmem->maxgids,
00294                 &errnop);
00295 
00296         /*
00297          * If the maximum number of gids have been found, return
00298          * SUCCESS so the switch engine will stop searching. Otherwise
00299          * return NOTFOUND so nsswitch will continue to get groups
00300          * from the remaining database backends specified in the
00301          * nsswitch.conf file.
00302          */
00303         return (gmem->numgids == gmem->maxgids ? NSS_STATUS_SUCCESS : NSS_STATUS_NOTFOUND);
00304 }

static NSS_STATUS _nss_winbind_group_destr ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c307 行で定義されています。

参照先 NSS_STATUS_SUCCESS.

00308 {
00309         SAFE_FREE(be);
00310         NSS_DEBUG("_nss_winbind_group_destr");
00311         return NSS_STATUS_SUCCESS;
00312 }

nss_backend_t* _nss_winbind_group_constr ( const char *  db_name,
const char *  src_name,
const char *  cfg_args 
)

winbind_nss_solaris.c326 行で定義されています。

参照先 group_opsnss_backend::n_opsnss_backend::ops.

00329 {
00330         nss_backend_t* be;
00331 
00332         if(!(be = SMB_MALLOC_P(nss_backend_t)) )
00333                 return NULL;
00334 
00335         be->ops = group_ops;
00336         be->n_ops = sizeof(group_ops) / sizeof(nss_backend_op_t);
00337   
00338         NSS_DEBUG("Initialized nss_winbind group backend");
00339         return be;
00340 }

static NSS_STATUS parse_response ( int  af,
nss_XbyY_args_t argp,
struct winbindd_response response 
) [static]

winbind_nss_solaris.c352 行で定義されています。

参照先 nss_XbyY_args::bufnss_XbyY_buf_t::buffernss_XbyY_buf_t::buflenwinbindd_response::datanss_XbyY_args::h_errnolenNSS_STATUS_UNAVAILnss_XbyY_buf_t::resultwinbindd_response::winsresp.

参照元 _nss_winbind_hosts_getbyaddr()_nss_winbind_hosts_getbyname()_nss_winbind_ipnodes_getbyname().

00353 {
00354         struct hostent *he = (struct hostent *)argp->buf.result;
00355         char *buffer = argp->buf.buffer;
00356         int buflen =  argp->buf.buflen;
00357         NSS_STATUS ret;
00358 
00359         char *p, *data;
00360         int addrcount = 0;
00361         int len = 0;
00362         struct in_addr *addrp;
00363         struct in6_addr *addrp6;
00364         int i;
00365 
00366         /* response is tab separated list of ip addresses with hostname
00367            and newline at the end. so at first we will strip newline
00368            then construct list of addresses for hostent.
00369         */
00370         p = strchr(response->data.winsresp, '\n');
00371         if(p) *p = '\0';
00372         else {/* it must be broken */
00373                 argp->h_errno = NO_DATA;
00374                 return NSS_STATUS_UNAVAIL;
00375         }
00376 
00377         for(; p != response->data.winsresp; p--) {
00378                 if(*p == '\t') addrcount++;
00379         }
00380 
00381         if(addrcount == 0) {/* it must be broken */
00382                 argp->h_errno = NO_DATA;
00383                 return NSS_STATUS_UNAVAIL;
00384         }
00385 
00386         /* allocate space for addresses and h_addr_list */
00387         he->h_addrtype = af;
00388         if( he->h_addrtype == AF_INET) {
00389                 he->h_length =  sizeof(struct in_addr);
00390                 addrp = (struct in_addr *)ROUND_DOWN(buffer + buflen,
00391                                                 sizeof(struct in_addr));
00392                 addrp -= addrcount;
00393                 he->h_addr_list = (char **)ROUND_DOWN(addrp, sizeof (char*));
00394                 he->h_addr_list -= addrcount+1;
00395         } else {
00396                 he->h_length = sizeof(struct in6_addr);
00397                 addrp6 = (struct in6_addr *)ROUND_DOWN(buffer + buflen,
00398                                                 sizeof(struct in6_addr));
00399                 addrp6 -= addrcount;
00400                 he->h_addr_list = (char **)ROUND_DOWN(addrp6, sizeof (char*));
00401                 he->h_addr_list -= addrcount+1;
00402         }
00403 
00404         /* buffer too small?! */
00405         if((char *)he->h_addr_list < buffer ) {
00406                 argp->erange = 1;
00407                 return NSS_STR_PARSE_ERANGE;
00408         }
00409         
00410         data = response->data.winsresp;
00411         for( i = 0; i < addrcount; i++) {
00412                 p = strchr(data, '\t');
00413                 if(p == NULL) break; /* just in case... */
00414 
00415                 *p = '\0'; /* terminate the string */
00416                 if(he->h_addrtype == AF_INET) {
00417                   he->h_addr_list[i] = (char *)&addrp[i];
00418                   if ((addrp[i].s_addr = inet_addr(data)) == -1) {
00419                     argp->erange = 1;
00420                     return NSS_STR_PARSE_ERANGE;
00421                   }
00422                 } else {
00423                   he->h_addr_list[i] = (char *)&addrp6[i];
00424                   if (strchr(data, ':') != 0) {
00425                         if (inet_pton(AF_INET6, data, &addrp6[i]) != 1) {
00426                           argp->erange = 1;
00427                           return NSS_STR_PARSE_ERANGE;
00428                         }
00429                   } else {
00430                         struct in_addr in4;
00431                         if ((in4.s_addr = inet_addr(data)) == -1) {
00432                           argp->erange = 1;
00433                           return NSS_STR_PARSE_ERANGE;
00434                         }
00435                         IN6_INADDR_TO_V4MAPPED(&in4, &addrp6[i]);
00436                   }
00437                 }
00438                 data = p+1;
00439         }
00440 
00441         he->h_addr_list[i] = (char *)NULL;
00442 
00443         len = strlen(data);
00444         if(len > he->h_addr_list - (char**)argp->buf.buffer) {
00445                 argp->erange = 1;
00446                 return NSS_STR_PARSE_ERANGE;
00447         }
00448 
00449         /* this is a bit overkill to use _nss_netdb_aliases here since
00450            there seems to be no aliases but it will create all data for us */
00451         he->h_aliases = _nss_netdb_aliases(data, len, buffer,
00452                                 ((char*) he->h_addr_list) - buffer);
00453         if(he->h_aliases == NULL) {
00454             argp->erange = 1;
00455             ret = NSS_STR_PARSE_ERANGE;
00456         } else {
00457             he->h_name = he->h_aliases[0];
00458             he->h_aliases++;
00459             ret = NSS_STR_PARSE_SUCCESS;
00460         }
00461 
00462         argp->returnval = (void*)he;
00463         return ret;
00464 }

static NSS_STATUS _nss_winbind_ipnodes_getbyname ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c467 行で定義されています。

参照先 winbindd_request::datafree_response()nss_XbyY_args::h_errnonss_XbyY_args::keynss_XbyY_key::nameNSS_STATUS_SUCCESSNSS_STATUS_UNAVAILparse_response()winbindd_request_response()WINBINDD_WINS_BYNAMEwinbindd_request::winsreq.

00468 {
00469         nss_XbyY_args_t *argp = (nss_XbyY_args_t*) args;
00470         struct winbindd_response response;
00471         struct winbindd_request request;
00472         NSS_STATUS ret;
00473         int af;
00474 
00475         ZERO_STRUCT(response);
00476         ZERO_STRUCT(request);
00477 
00478         /* I assume there that AI_ADDRCONFIG cases are handled in nss
00479            frontend code, at least it seems done so in solaris...
00480 
00481            we will give NO_DATA for pure IPv6; IPv4 will be returned for
00482            AF_INET or for AF_INET6 and AI_ALL|AI_V4MAPPED we have to map
00483            IPv4 to IPv6.
00484          */
00485 #ifdef HAVE_NSS_XBYY_KEY_IPNODE
00486         af = argp->key.ipnode.af_family;
00487         if(af == AF_INET6 && argp->key.ipnode.flags == 0) {
00488                 argp->h_errno = NO_DATA;
00489                 return NSS_STATUS_UNAVAIL;
00490         }
00491 #else
00492         /* I'm not that sure if this is correct, but... */
00493         af = AF_INET6;
00494 #endif
00495 
00496         strncpy(request.data.winsreq, argp->key.name, sizeof(request.data.winsreq) - 1);
00497         request.data.winsreq[sizeof(request.data.winsreq) - 1] = '\0';
00498 
00499         if( (ret = winbindd_request_response(WINBINDD_WINS_BYNAME, &request, &response))
00500                 == NSS_STATUS_SUCCESS ) {
00501           ret = parse_response(af, argp, &response);
00502         }
00503 
00504         free_response(&response);
00505         return ret;
00506 }

static NSS_STATUS _nss_winbind_hosts_getbyname ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c509 行で定義されています。

参照先 winbindd_request::datafree_response()nss_XbyY_args::keynss_XbyY_key::nameNSS_STATUS_SUCCESSparse_response()winbindd_request_response()WINBINDD_WINS_BYNAMEwinbindd_request::winsreq.

00510 {
00511         nss_XbyY_args_t *argp = (nss_XbyY_args_t*) args;
00512         struct winbindd_response response;
00513         struct winbindd_request request;
00514         NSS_STATUS ret;
00515 
00516         ZERO_STRUCT(response);
00517         ZERO_STRUCT(request);
00518         
00519         strncpy(request.data.winsreq, argp->key.name, sizeof(request.data.winsreq) - 1);
00520         request.data.winsreq[sizeof(request.data.winsreq) - 1] = '\0';
00521 
00522         if( (ret = winbindd_request_response(WINBINDD_WINS_BYNAME, &request, &response))
00523                 == NSS_STATUS_SUCCESS ) {
00524           ret = parse_response(AF_INET, argp, &response);
00525         }
00526 
00527         free_response(&response);
00528         return ret;
00529 }

static NSS_STATUS _nss_winbind_hosts_getbyaddr ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c532 行で定義されています。

参照先 winbindd_request::datafree_response()NSS_STATUS_SUCCESSNSS_STATUS_UNAVAILparse_response()winbindd_request_response()WINBINDD_WINS_BYIPwinbindd_request::winsreq.

00533 {
00534         NSS_STATUS ret;
00535         struct winbindd_response response;
00536         struct winbindd_request request;
00537         nss_XbyY_args_t *argp = (nss_XbyY_args_t *)args;
00538         const char *p;
00539 
00540         ZERO_STRUCT(response);
00541         ZERO_STRUCT(request);
00542 
00543         /* winbindd currently does not resolve IPv6 */
00544         if(argp->key.hostaddr.type == AF_INET6) {
00545                 argp->h_errno = NO_DATA;
00546                 return NSS_STATUS_UNAVAIL;
00547         }
00548 
00549         p = inet_ntop(argp->key.hostaddr.type, argp->key.hostaddr.addr,
00550                         request.data.winsreq, INET6_ADDRSTRLEN);
00551 
00552         ret = winbindd_request_response(WINBINDD_WINS_BYIP, &request, &response);
00553 
00554         if( ret == NSS_STATUS_SUCCESS) {
00555           parse_response(argp->key.hostaddr.type, argp, &response);
00556         }
00557         free_response(&response);
00558         return ret;
00559 }

static NSS_STATUS _nss_winbind_common_endent ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c563 行で定義されています。

参照先 NSS_STATUS_UNAVAIL.

00564 {
00565         return (NSS_STATUS_UNAVAIL);
00566 }

static NSS_STATUS _nss_winbind_common_setent ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c569 行で定義されています。

参照先 NSS_STATUS_UNAVAIL.

00570 {
00571         return (NSS_STATUS_UNAVAIL);
00572 }

static NSS_STATUS _nss_winbind_common_getent ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c575 行で定義されています。

参照先 NSS_STATUS_UNAVAIL.

00576 {
00577         return (NSS_STATUS_UNAVAIL);
00578 }

static nss_backend_t* _nss_winbind_common_constr ( nss_backend_op_t  ops[],
int  n_ops 
) [static]

winbind_nss_solaris.c581 行で定義されています。

参照先 nss_backend::n_opsnss_backend::ops.

参照元 _nss_winbind_hosts_constr()_nss_winbind_ipnodes_constr().

00582 {
00583         nss_backend_t* be;
00584 
00585         if(!(be = SMB_MALLOC_P(nss_backend_t)) )
00586         return NULL;
00587 
00588         be->ops = ops;
00589         be->n_ops = n_ops;
00590 
00591         return be;
00592 }

static NSS_STATUS _nss_winbind_common_destr ( nss_backend_t be,
void *  args 
) [static]

winbind_nss_solaris.c595 行で定義されています。

参照先 NSS_STATUS_SUCCESS.

00596 {
00597         SAFE_FREE(be);
00598         return NSS_STATUS_SUCCESS;
00599 }

nss_backend_t* _nss_winbind_ipnodes_constr ( char *  dummy1,
char *  dummy2,
char *  dummy3 
) const

winbind_nss_solaris.c611 行で定義されています。

参照先 _nss_winbind_common_constr().

00613 {
00614         return (_nss_winbind_common_constr(ipnodes_ops,
00615                 sizeof (ipnodes_ops) / sizeof (ipnodes_ops[0])));
00616 }

nss_backend_t* _nss_winbind_hosts_constr ( char *  dummy1,
char *  dummy2,
char *  dummy3 
) const

winbind_nss_solaris.c628 行で定義されています。

参照先 _nss_winbind_common_constr().

00630 {
00631         return (_nss_winbind_common_constr(host_ops,
00632                 sizeof (host_ops) / sizeof (host_ops[0])));
00633 }


変数

nss_backend_op_t passwd_ops[] [static]

初期値:

winbind_nss_solaris.c171 行で定義されています。

参照元 _nss_winbind_passwd_constr().

nss_backend_op_t group_ops[] [static]

初期値:

winbind_nss_solaris.c314 行で定義されています。

参照元 _nss_winbind_group_constr().

nss_backend_op_t ipnodes_ops[] [static]

初期値:

winbind_nss_solaris.c601 行で定義されています。

nss_backend_op_t host_ops[] [static]

初期値:

winbind_nss_solaris.c618 行で定義されています。


Sambaに対してSat Aug 29 21:23:55 2009に生成されました。  doxygen 1.4.7