45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER START
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The contents of this file are subject to the terms of the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Common Development and Distribution License (the "License").
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You may not use this file except in compliance with the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * or http://www.opensolaris.org/os/licensing.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * See the License for the specific language governing permissions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * and limitations under the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * When distributing Covered Code, include this CDDL HEADER in each
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * If applicable, add the following below this CDDL HEADER, with the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * fields enclosed by brackets "[]" replaced with your own identifying
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * information: Portions Copyright [yyyy] [name of copyright owner]
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk *
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER END
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Use is subject to license terms.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#pragma ident "%Z%%M% %I% %E% SMI"
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#include "files_common.h"
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#include <sys/tsol/tndb.h>
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#include <string.h>
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk/*
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * files/tsol_gettpent.c --
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * "files" backend for nsswitch "tnrhtp" database
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkstatic int
cb5caa98562cf06753163f558cbcfe30b8f4673adjlcheck_name(nss_XbyY_args_t *args, const char *line, int linelen)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk{
cb5caa98562cf06753163f558cbcfe30b8f4673adjl const char *limit, *linep, *keyp;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
cb5caa98562cf06753163f558cbcfe30b8f4673adjl linep = line;
cb5caa98562cf06753163f558cbcfe30b8f4673adjl limit = line + linelen;
cb5caa98562cf06753163f558cbcfe30b8f4673adjl keyp = args->key.name;
cb5caa98562cf06753163f558cbcfe30b8f4673adjl
cb5caa98562cf06753163f558cbcfe30b8f4673adjl /* compare template name, ':' is the seperator */
cb5caa98562cf06753163f558cbcfe30b8f4673adjl while (*keyp && linep < limit && *linep != ':' && *keyp == *linep) {
cb5caa98562cf06753163f558cbcfe30b8f4673adjl keyp++;
cb5caa98562cf06753163f558cbcfe30b8f4673adjl linep++;
cb5caa98562cf06753163f558cbcfe30b8f4673adjl }
cb5caa98562cf06753163f558cbcfe30b8f4673adjl if (*keyp == '\0' && linep < limit && *linep == ':')
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (0);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk}
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkstatic nss_status_t
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkgetbyname(be, a)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk files_backend_ptr_t be;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk void *a;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk{
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk nss_XbyY_args_t *argp = (nss_XbyY_args_t *)a;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
cb5caa98562cf06753163f558cbcfe30b8f4673adjl if (argp->key.name == NULL)
cb5caa98562cf06753163f558cbcfe30b8f4673adjl return (NSS_NOTFOUND);
cb5caa98562cf06753163f558cbcfe30b8f4673adjl
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (_nss_files_XY_all(be, argp, 1, argp->key.name, check_name));
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk}
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpkstatic files_backend_op_t tsol_tp_ops[] = {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk _nss_files_destr,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk _nss_files_endent,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk _nss_files_setent,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk _nss_files_getent_netdb,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk getbyname
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk};
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpknss_backend_t *
cb5caa98562cf06753163f558cbcfe30b8f4673adjl/* LINTED E_FUNC_ARG_UNUSED */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk_nss_files_tnrhtp_constr(dummy1, dummy2, dummy3)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk const char *dummy1, *dummy2, *dummy3;
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk{
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (_nss_files_constr(tsol_tp_ops,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk sizeof (tsol_tp_ops) / sizeof (tsol_tp_ops[0]),
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk "/etc/security/tsol/tnrhtp",
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk NSS_LINELEN_TSOL_TP,
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk NULL));
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk}