ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/pack/freebsd/net/nss_ldapd/files/patch-nss__bsdnss.c
Revision: 101
Committed: 2009-08-22T17:48:38-07:00 (15 years, 10 months ago) by douglas
Content type: text/x-diff
File size: 6256 byte(s)
Log Message:
Pull in net/nss_ldapd before fixing its rc.d script.

File Contents

# Content
1 --- ./nss/bsdnss.c.orig 2009-08-10 16:06:22.000000000 +0000
2 +++ ./nss/bsdnss.c 2009-08-10 15:58:04.000000000 +0000
3 @@ -0,0 +1,157 @@
4 +#include <errno.h>
5 +#include <sys/param.h>
6 +#include <netinet/in.h>
7 +#include <pwd.h>
8 +#include <grp.h>
9 +#include <nss.h>
10 +#include <netdb.h>
11 +
12 +#define BUFFER_SIZE 1024
13 +
14 +extern enum nss_status _nss_ldap_getgrent_r(struct group *, char *, size_t,
15 + int *);
16 +extern enum nss_status _nss_ldap_getgrnam_r(const char *, struct group *,
17 + char *, size_t, int *);
18 +extern enum nss_status _nss_ldap_getgrgid_r(gid_t gid, struct group *, char *,
19 + size_t, int *);
20 +extern enum nss_status _nss_ldap_setgrent(void);
21 +extern enum nss_status _nss_ldap_endgrent(void);
22 +
23 +extern enum nss_status _nss_ldap_getpwent_r(struct passwd *, char *, size_t,
24 + int *);
25 +extern enum nss_status _nss_ldap_getpwnam_r(const char *, struct passwd *,
26 + char *, size_t, int *);
27 +extern enum nss_status _nss_ldap_getpwuid_r(gid_t gid, struct passwd *, char *,
28 + size_t, int *);
29 +extern enum nss_status _nss_ldap_setpwent(void);
30 +extern enum nss_status _nss_ldap_endpwent(void);
31 +
32 +extern enum nss_status _nss_ldap_gethostbyname_r (const char *name, struct hostent * result,
33 + char *buffer, size_t buflen, int *errnop,
34 + int *h_errnop);
35 +
36 +extern enum nss_status _nss_ldap_gethostbyname2_r (const char *name, int af, struct hostent * result,
37 + char *buffer, size_t buflen, int *errnop,
38 + int *h_errnop);
39 +extern enum nss_status _nss_ldap_gethostbyaddr_r (struct in_addr * addr, int len, int type,
40 + struct hostent * result, char *buffer,
41 + size_t buflen, int *errnop, int *h_errnop);
42 +
43 +NSS_METHOD_PROTOTYPE(__nss_compat_getgrnam_r);
44 +NSS_METHOD_PROTOTYPE(__nss_compat_getgrgid_r);
45 +NSS_METHOD_PROTOTYPE(__nss_compat_getgrent_r);
46 +NSS_METHOD_PROTOTYPE(__nss_compat_setgrent);
47 +NSS_METHOD_PROTOTYPE(__nss_compat_endgrent);
48 +
49 +NSS_METHOD_PROTOTYPE(__nss_compat_getpwnam_r);
50 +NSS_METHOD_PROTOTYPE(__nss_compat_getpwuid_r);
51 +NSS_METHOD_PROTOTYPE(__nss_compat_getpwent_r);
52 +NSS_METHOD_PROTOTYPE(__nss_compat_setpwent);
53 +NSS_METHOD_PROTOTYPE(__nss_compat_endpwent);
54 +
55 +NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyname);
56 +NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyname2);
57 +NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyaddr);
58 +
59 +static ns_mtab methods[] = {
60 +{ NSDB_GROUP, "getgrnam_r", __nss_compat_getgrnam_r, _nss_ldap_getgrnam_r },
61 +{ NSDB_GROUP, "getgrgid_r", __nss_compat_getgrgid_r, _nss_ldap_getgrgid_r },
62 +{ NSDB_GROUP, "getgrent_r", __nss_compat_getgrent_r, _nss_ldap_getgrent_r },
63 +{ NSDB_GROUP, "setgrent", __nss_compat_setgrent, _nss_ldap_setgrent },
64 +{ NSDB_GROUP, "endgrent", __nss_compat_endgrent, _nss_ldap_endgrent },
65 +
66 +{ NSDB_PASSWD, "getpwnam_r", __nss_compat_getpwnam_r, _nss_ldap_getpwnam_r },
67 +{ NSDB_PASSWD, "getpwuid_r", __nss_compat_getpwuid_r, _nss_ldap_getpwuid_r },
68 +{ NSDB_PASSWD, "getpwent_r", __nss_compat_getpwent_r, _nss_ldap_getpwent_r },
69 +{ NSDB_PASSWD, "setpwent", __nss_compat_setpwent, _nss_ldap_setpwent },
70 +{ NSDB_PASSWD, "endpwent", __nss_compat_endpwent, _nss_ldap_endpwent },
71 +
72 +{ NSDB_HOSTS, "gethostbyname", __nss_compat_gethostbyname, _nss_ldap_gethostbyname_r },
73 +{ NSDB_HOSTS, "gethostbyaddr", __nss_compat_gethostbyaddr, _nss_ldap_gethostbyaddr_r },
74 +{ NSDB_HOSTS, "gethostbyname2", __nss_compat_gethostbyname2, _nss_ldap_gethostbyname2_r },
75 +
76 +{ NSDB_GROUP_COMPAT, "getgrnam_r", __nss_compat_getgrnam_r, _nss_ldap_getgrnam_r },
77 +{ NSDB_GROUP_COMPAT, "getgrgid_r", __nss_compat_getgrgid_r, _nss_ldap_getgrgid_r },
78 +{ NSDB_GROUP_COMPAT, "getgrent_r", __nss_compat_getgrent_r, _nss_ldap_getgrent_r },
79 +{ NSDB_GROUP_COMPAT, "setgrent", __nss_compat_setgrent, _nss_ldap_setgrent },
80 +{ NSDB_GROUP_COMPAT, "endgrent", __nss_compat_endgrent, _nss_ldap_endgrent },
81 +
82 +{ NSDB_PASSWD_COMPAT, "getpwnam_r", __nss_compat_getpwnam_r, _nss_ldap_getpwnam_r },
83 +{ NSDB_PASSWD_COMPAT, "getpwuid_r", __nss_compat_getpwuid_r, _nss_ldap_getpwuid_r },
84 +{ NSDB_PASSWD_COMPAT, "getpwent_r", __nss_compat_getpwent_r, _nss_ldap_getpwent_r },
85 +{ NSDB_PASSWD_COMPAT, "setpwent", __nss_compat_setpwent, _nss_ldap_setpwent },
86 +{ NSDB_PASSWD_COMPAT, "endpwent", __nss_compat_endpwent, _nss_ldap_endpwent },
87 +
88 +};
89 +
90 +
91 +int __nss_compat_gethostbyname(void *retval, void *mdata, va_list ap)
92 +{
93 + enum nss_status (*fn)(const char *, struct hostent *, char *, size_t, int *, int *);
94 + const char *name;
95 + struct hostent *result;
96 + char buffer[BUFFER_SIZE];
97 + int errnop;
98 + int h_errnop;
99 + int af;
100 + enum nss_status status;
101 + fn = mdata;
102 + name = va_arg(ap, const char*);
103 + af = va_arg(ap,int);
104 + result = va_arg(ap,struct hostent *);
105 + status = fn(name, result, buffer, sizeof(buffer), &errnop, &h_errnop);
106 + status = __nss_compat_result(status,errnop);
107 + h_errno = h_errnop;
108 + return (status);
109 +}
110 +
111 +int __nss_compat_gethostbyname2(void *retval, void *mdata, va_list ap)
112 +{
113 + enum nss_status (*fn)(const char *, struct hostent *, char *, size_t, int *, int *);
114 + const char *name;
115 + struct hostent *result;
116 + char buffer[BUFFER_SIZE];
117 + int errnop;
118 + int h_errnop;
119 + int af;
120 + enum nss_status status;
121 + fn = mdata;
122 + name = va_arg(ap, const char*);
123 + af = va_arg(ap,int);
124 + result = va_arg(ap,struct hostent *);
125 + status = fn(name, result, buffer, sizeof(buffer), &errnop, &h_errnop);
126 + status = __nss_compat_result(status,errnop);
127 + h_errno = h_errnop;
128 + return (status);
129 +}
130 +
131 +int __nss_compat_gethostbyaddr(void *retval, void *mdata, va_list ap)
132 +{
133 + struct in_addr *addr;
134 + int len;
135 + int type;
136 + struct hostent *result;
137 + char buffer[BUFFER_SIZE];
138 + int errnop;
139 + int h_errnop;
140 + enum nss_status (*fn)(struct in_addr *, int, int, struct hostent *, char *, size_t, int *, int *);
141 + enum nss_status status;
142 + fn = mdata;
143 + addr = va_arg(ap, struct in_addr*);
144 + len = va_arg(ap,int);
145 + type = va_arg(ap,int);
146 + result = va_arg(ap, struct hostent*);
147 + status = fn(addr, len, type, result, buffer, sizeof(buffer), &errnop, &h_errnop);
148 + status = __nss_compat_result(status,errnop);
149 + h_errno = h_errnop;
150 + return (status);
151 +}
152 +
153 +ns_mtab *
154 +nss_module_register(const char *source, unsigned int *mtabsize,
155 + nss_module_unregister_fn *unreg)
156 +{
157 + *mtabsize = sizeof(methods)/sizeof(methods[0]);
158 + *unreg = NULL;
159 + return (methods);
160 +}

Properties

Name Value
svn:mime-type text/x-diff