Implmement auth_attr
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Wed, 17 Sep 2008 18:15:35 +0000 (18:15 +0000)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Wed, 17 Sep 2008 18:15:35 +0000 (18:15 +0000)
nss/databases.def
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Versions
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthattr.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthnam.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getprofattr.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr-lookup.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr.h [new file with mode: 0644]

index c35d7f1..96dce6b 100644 (file)
    field size for it must be increases.  */
 
 DEFINE_DATABASE (aliases)
+#ifdef __OpenSolaris_kernel__
+DEFINE_DATABASE (auth_attr)
+#endif
 DEFINE_DATABASE (ethers)
 DEFINE_DATABASE (group)
 DEFINE_DATABASE (hosts)
 DEFINE_DATABASE (netgroup)
 DEFINE_DATABASE (networks)
 DEFINE_DATABASE (passwd)
+#ifdef __OpenSolaris_kernel__
+DEFINE_DATABASE (prof_attr)
+#endif
 DEFINE_DATABASE (protocols)
 DEFINE_DATABASE (publickey)
 DEFINE_DATABASE (rpc)
index 4d3edcb..a9540a6 100644 (file)
@@ -33,7 +33,7 @@ sysdep_routines +=  gethrtime mount umount umount2 systeminfo resolvepath \
     _so_send _so_sendmsg _so_sendto _so_setsockopt _so_shutdown _so_socket \
     _so_socketpair _sysconfig rctl atomic door getexecname is_system_labeled \
     privP mnttab modctl acl facl lltostr ulltostr defopen defread defcntl \
-    _getprofnam _getprofattr
+    _getprofnam _getprofattr _getauthnam _getauthattr
 sysdep_routines += sys_fdsync sys_brk sys_fcntl sys_utssys sys_lwp_private \
     sys_uname sys_getloadavg sys_utimes sys_getpeerucred sys_ucred_get \
     sys_privsys sys_putmsg sys_putpmsg sys_meminfo sys_pset_getloadavg \
@@ -53,7 +53,8 @@ sysdep_headers += sys/feature_tests.h sys/mount.h sys/cred.h sys/ulimit.h \
     sys/ucred.h sys/port_impl.h sys/ttold.h sys/machtypes.h sys/dirent.h \
     sys/utime.h sys/vfstab sys/procfs.h
 sysdep_headers += ucred.h priv.h bits/regset.h door.h zone.h deflt.h \
-    prof_attr.h rtld_db.h pcsample.h port.h atomic.h bits/machtypes.h
+    prof_attr.h auth_attr.h rtld_db.h pcsample.h port.h atomic.h \
+    bits/machtypes.h
 headers := $(filter-out sys/sysinfo.h,$(headers))
 endif
 
@@ -110,7 +111,7 @@ libnsl-routines += nsl_misc
 endif
 
 ifeq ($(subdir),nss)
-databases += prof_attr
+databases += prof_attr auth_attr
 endif
 
 ifeq ($(subdir),nptl)
index 18068f6..be44e1d 100644 (file)
@@ -22,17 +22,17 @@ libc {
     door_server_create; door_setparam; door_ucred; door_unbind;
 
     # e
-    _endprofattr;
+    _endauthattr; _endprofattr;
 
     # f
     facl; fork1;
 
     # g
-    getacct; getcpuid; getexecname; gethrtime; gethrvtime; getextmntent;
-    getmntany; getmntent; getpagesizes; getpagesizes2; getpeerucred; getpflags;
-    getppriv; getprivimplinfo; _getprofattr; _getprofnam; getprojid; getrctl;
-    gettaskid; getustack; getvmusage; getzoneid; getzoneidbyname;
-    getzonenamebyid;
+    getacct; _getauthattr; _getauthnam; getcpuid; getexecname; gethrtime;
+    gethrvtime; getextmntent; getmntany; getmntent; getpagesizes;
+    getpagesizes2; getpeerucred; getpflags; getppriv; getprivimplinfo;
+    _getprofattr; _getprofnam; getprojid; getrctl; gettaskid; getustack;
+    getvmusage; getzoneid; getzoneidbyname; getzonenamebyid;
 
     # h
     hasmntopt;
@@ -73,10 +73,10 @@ libc {
     resolvepath;
 
     # s
-    sendfilev; sendfilev64; setpflags; setppriv; _setprofattr; setprojrctl;
-    setrctl; settaskid; setustack; sig2str; _so_accept; _so_bind; _so_connect;
-    _so_getpeername; _so_getsockname; _so_getsockopt; _so_listen; _so_recv;
-    _so_recvfrom; _so_recvmsg; _so_send; _so_sendmsg; _so_sendto;
+    sendfilev; sendfilev64; _setauthattr; setpflags; setppriv; _setprofattr;
+    setprojrctl; setrctl; settaskid; setustack; sig2str; _so_accept; _so_bind;
+    _so_connect; _so_getpeername; _so_getsockname; _so_getsockopt; _so_listen;
+    _so_recv; _so_recvfrom; _so_recvmsg; _so_send; _so_sendmsg; _so_sendto;
     _so_setsockopt; _so_shutdown; _so_socket; _so_socketpair; str2sig; strlcat;
     strlcpy; swapctl; __systemcall; sysfs; systeminfo;
 
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthattr.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthattr.c
new file mode 100644 (file)
index 0000000..b3cf72b
--- /dev/null
@@ -0,0 +1,39 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <auth_attr.h>
+
+#define LOOKUP_TYPE    authstr_t
+#define SETFUNC_NAME   _setauthattr
+#define        GETFUNC_NAME    _getauthattr
+#define        ENDFUNC_NAME    _endauthattr
+#define DATABASE_NAME  auth_attr
+#define BUFLEN         NSS_BUFLEN_PROFATTR
+
+#include "../nss/getXXent_r.c"
+
+authstr_t * _getauthattr (authstr_t *psbuf, char *buf, int buflen, int *errnop)
+{
+  authstr_t *psbufp;
+  int errval = _getauthattr_r (psbuf, buf, buflen, &psbufp);
+  if (errval && errnop)
+    *errnop = errval;
+
+  return errval ? NULL : psbuf;
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthnam.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauthnam.c
new file mode 100644 (file)
index 0000000..2b9bd42
--- /dev/null
@@ -0,0 +1,40 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <auth_attr.h>
+
+#define LOOKUP_TYPE    authstr_t
+#define FUNCTION_NAME  _getauthnam
+#define DATABASE_NAME  auth_attr
+#define ADD_PARAMS     const char *name
+#define ADD_VARIABLES  name
+#define BUFLEN         NSS_BUFLEN_PROFATTR
+
+#include <nss/getXXbyYY_r.c>
+
+authstr_t * _getauthnam (const char *name, authstr_t *psbuf, char *buf,
+      int buflen, int *errnop)
+{
+  authstr_t *psbufp;
+  int errval = _getauthnam_r (name, psbuf, buf, buflen, &psbufp);
+  if (errval && errnop)
+    *errnop = errval;
+
+  return errval ? NULL : psbuf;
+}
index c653c8c..819044d 100644 (file)
@@ -23,7 +23,7 @@
 #define SETFUNC_NAME   _setprofattr
 #define        GETFUNC_NAME    _getprofattr
 #define        ENDFUNC_NAME    _endprofattr
-#define DATABASE_NAME  passwd
+#define DATABASE_NAME  prof_attr
 #define BUFLEN         NSS_BUFLEN_PROFATTR
 
 #include "../nss/getXXent_r.c"
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr-lookup.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr-lookup.c
new file mode 100644 (file)
index 0000000..77ed349
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#define DATABASE_NAME auth_attr
+#define DEFAULT_CONFIG "files nis"
+
+#include "XXX-lookup.c"
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auth_attr.h
new file mode 100644 (file)
index 0000000..943db39
--- /dev/null
@@ -0,0 +1,57 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _AUTH_ATTR_H
+#define _AUTH_ATTR_H
+
+#include <features.h>
+
+#define NSS_BUFLEN_AUTHATTR    1024
+
+typedef struct authstr_s
+  {
+       char *name;
+       char *res1;
+       char *res2;
+       char *short_desc;
+       char *long_desc;
+       char *attr;
+} authstr_t;
+
+typedef struct kv_s kva_t;
+
+typedef struct authattr_s
+  {
+       char *name;
+       char *res1;
+       char *res2;
+       char *short_desc;
+       char *long_desc;
+       kva_t *attr;
+ } authattr_t;
+
+extern authattr_t *getauthnam (const char *);
+extern authattr_t *getauthattr (void);
+extern void getauthlist (const char *, char **, int *);
+extern void setauthattr (void);
+extern void endauthattr (void);
+extern void free_authattr (authattr_t *);
+extern void free_authlist (char **, int);
+
+#endif /* _AUTH_ATTR_H */