Merge lp:~stgraber/ubuntu/saucy/nfs-utils/debian-merge into lp:ubuntu/saucy/nfs-utils

Proposed by Stéphane Graber
Status: Merged
Merged at revision: 72
Proposed branch: lp:~stgraber/ubuntu/saucy/nfs-utils/debian-merge
Merge into: lp:ubuntu/saucy/nfs-utils
Diff against target: 78508 lines (+51632/-15364)
295 files modified
.gitignore (+4/-2)
.pc/01-sm-notify-in-sbin.patch/utils/statd/statd.c (+2/-1)
.pc/02-524255-manpages.patch/utils/nfsd/nfsd.man (+8/-1)
.pc/11-532048-reduce-verbosity.patch/utils/gssd/gss_util.c (+1/-1)
.pc/11-532048-reduce-verbosity.patch/utils/gssd/gssd_proc.c (+107/-87)
.pc/17-multiarch-kerberos-paths.patch/aclocal/kerberos5.m4 (+6/-0)
.pc/18-osd_login-sbindir.patch/utils/osd_login/Makefile.am (+0/-12)
.pc/20-remove-autogenerated-man.patch/utils/nfsdcltrack/nfsdcltrack.man (+211/-0)
.pc/20-ticket-expired-error.patch/utils/gssd/gssd.c (+7/-4)
.pc/20-ticket-expired-error.patch/utils/gssd/gssd.h (+4/-2)
.pc/20-ticket-expired-error.patch/utils/gssd/gssd.man (+233/-88)
.pc/20-ticket-expired-error.patch/utils/gssd/gssd_proc.c (+107/-87)
.pc/applied-patches (+1/-1)
ChangeLog (+0/-1527)
Makefile.in (+149/-99)
README (+3/-22)
aclocal.m4 (+252/-8615)
aclocal/kerberos5.m4 (+6/-0)
aclocal/libcap.m4 (+1/-1)
aclocal/librpcsecgss.m4 (+2/-0)
aclocal/libsqlite3.m4 (+0/-1)
aclocal/libtirpc.m4 (+11/-0)
aclocal/libtool.m4 (+208/-57)
aclocal/ltoptions.m4 (+17/-2)
aclocal/ltversion.m4 (+5/-5)
aclocal/rpcsec_vers.m4 (+6/-1)
compile (+215/-16)
config.guess (+148/-119)
config.log (+1404/-0)
config.status (+2494/-0)
config.sub (+145/-68)
configure (+985/-723)
configure.ac (+42/-25)
debian/changelog (+66/-0)
debian/control (+2/-2)
debian/id_resolver.conf (+1/-0)
debian/nfs-common.bugscript (+1/-1)
debian/nfs-common.init (+2/-3)
debian/nfs-common.install (+1/-0)
debian/nfs-common.manpages (+1/-0)
debian/nfs-kernel-server.init (+2/-2)
debian/nfs-kernel-server.install (+1/-0)
debian/nfs-kernel-server.manpages (+1/-1)
debian/patches/11-532048-reduce-verbosity.patch (+16/-12)
debian/patches/18-osd_login-sbindir.patch (+0/-39)
debian/patches/20-remove-autogenerated-man.patch (+140/-0)
debian/patches/20-ticket-expired-error.patch (+27/-19)
debian/patches/series (+1/-1)
debian/rules (+1/-1)
debian/source/options (+1/-1)
depcomp (+133/-56)
install-sh (+21/-14)
libtool (+10240/-0)
linux-nfs/Makefile.in (+45/-8)
ltmain.sh (+56/-37)
missing (+51/-97)
support/Makefile.in (+90/-66)
support/export/.deps/client.Po (+298/-0)
support/export/.deps/export.Po (+303/-0)
support/export/.deps/hostname.Po (+291/-0)
support/export/.deps/mount_clnt.Po (+218/-0)
support/export/.deps/mount_xdr.Po (+219/-0)
support/export/.deps/nfsctl.Po (+298/-0)
support/export/.deps/rmtab.Po (+296/-0)
support/export/.deps/xtab.Po (+303/-0)
support/export/Makefile.in (+71/-21)
support/export/export.c (+13/-8)
support/export/mount.h (+326/-0)
support/export/mount_clnt.c (+357/-0)
support/export/mount_xdr.c (+326/-0)
support/export/rmtab.c (+3/-3)
support/export/xtab.c (+1/-1)
support/include/Makefile.in (+91/-69)
support/include/config.h (+497/-0)
support/include/config.h.in (+21/-0)
support/include/exportfs.h (+2/-0)
support/include/nfs/Makefile.in (+58/-9)
support/include/nfs/debug.h (+1/-0)
support/include/nfs/nfs.h (+1/-0)
support/include/nfslib.h (+1/-0)
support/include/rpcsvc/Makefile.in (+58/-9)
support/include/sockaddr.h (+10/-6)
support/include/stamp-h1 (+1/-0)
support/include/sys/Makefile.in (+90/-66)
support/include/sys/fs/Makefile.in (+58/-9)
support/misc/.deps/from_local.Po (+199/-0)
support/misc/.deps/mountpoint.Po (+135/-0)
support/misc/.deps/tcpwrapper.Po (+284/-0)
support/misc/Makefile.in (+61/-11)
support/nfs/.deps/atomicio.Po (+80/-0)
support/nfs/.deps/cacheio.Po (+297/-0)
support/nfs/.deps/closeall.Po (+105/-0)
support/nfs/.deps/conffile.Po (+225/-0)
support/nfs/.deps/exports.Po (+340/-0)
support/nfs/.deps/getfh.Po (+267/-0)
support/nfs/.deps/getport.Po (+272/-0)
support/nfs/.deps/nfs_mntent.Po (+173/-0)
support/nfs/.deps/nfsclient.Po (+252/-0)
support/nfs/.deps/nfsctl.Po (+285/-0)
support/nfs/.deps/nfsexport.Po (+282/-0)
support/nfs/.deps/rmtab.Po (+309/-0)
support/nfs/.deps/rpc_socket.Po (+273/-0)
support/nfs/.deps/rpcdispatch.Po (+250/-0)
support/nfs/.deps/rpcmisc.Po (+338/-0)
support/nfs/.deps/strlcat.Po (+68/-0)
support/nfs/.deps/strlcpy.Po (+68/-0)
support/nfs/.deps/svc_create.Po (+293/-0)
support/nfs/.deps/svc_socket.Po (+261/-0)
support/nfs/.deps/wildmat.Po (+38/-0)
support/nfs/.deps/xcommon.Po (+164/-0)
support/nfs/.deps/xio.Po (+188/-0)
support/nfs/.deps/xlog.Po (+294/-0)
support/nfs/Makefile.in (+61/-11)
support/nfs/cacheio.c (+14/-4)
support/nfs/exports.c (+3/-1)
support/nsm/.deps/file.Po (+327/-0)
support/nsm/.deps/rpc.Po (+271/-0)
support/nsm/.deps/sm_inter_clnt.Po (+219/-0)
support/nsm/.deps/sm_inter_svc.Po (+219/-0)
support/nsm/.deps/sm_inter_xdr.Po (+217/-0)
support/nsm/Makefile.in (+61/-11)
support/nsm/file.c (+57/-4)
support/nsm/sm_inter.h (+151/-0)
support/nsm/sm_inter_clnt.c (+102/-0)
support/nsm/sm_inter_svc.c (+93/-0)
support/nsm/sm_inter_xdr.c (+117/-0)
tests/.deps/statdb_dump.Po (+1/-0)
tests/Makefile.in (+106/-77)
tests/nsm_client/.deps/nlm_sm_inter_clnt.Po (+1/-0)
tests/nsm_client/.deps/nlm_sm_inter_svc.Po (+1/-0)
tests/nsm_client/.deps/nlm_sm_inter_xdr.Po (+1/-0)
tests/nsm_client/.deps/nsm_client.Po (+1/-0)
tests/nsm_client/Makefile.am (+1/-1)
tests/nsm_client/Makefile.in (+65/-14)
tests/nsm_client/nlm_sm_inter.h (+68/-0)
tests/nsm_client/nlm_sm_inter_clnt.c (+41/-0)
tests/nsm_client/nlm_sm_inter_svc.c (+99/-0)
tests/nsm_client/nlm_sm_inter_xdr.c (+21/-0)
tools/Makefile.in (+90/-66)
tools/locktest/.deps/testlk-testlk.Po (+110/-0)
tools/locktest/Makefile.in (+61/-11)
tools/mountstats/Makefile.in (+66/-16)
tools/nfs-iostat/Makefile.in (+66/-16)
tools/nfs-iostat/nfs-iostat.py (+65/-63)
tools/nlmtest/Makefile.in (+45/-8)
tools/rpcdebug/.deps/rpcdebug.Po (+123/-0)
tools/rpcdebug/Makefile.am (+0/-6)
tools/rpcdebug/Makefile.in (+91/-45)
tools/rpcdebug/rpcdebug.c (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_clntout.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_cout.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_hout.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_main.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_parse.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_sample.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_scan.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_svcout.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_tblout.Po (+1/-0)
tools/rpcgen/.deps/rpcgen-rpc_util.Po (+1/-0)
tools/rpcgen/Makefile.in (+61/-11)
utils/Makefile.am (+2/-2)
utils/Makefile.in (+92/-68)
utils/blkmapd/.deps/device-discovery.Po (+275/-0)
utils/blkmapd/.deps/device-inq.Po (+200/-0)
utils/blkmapd/.deps/device-process.Po (+185/-0)
utils/blkmapd/.deps/dm-device.Po (+207/-0)
utils/blkmapd/Makefile.in (+86/-20)
utils/blkmapd/device-discovery.c (+102/-22)
utils/blkmapd/device-process.c (+0/-29)
utils/exportfs/.deps/exportfs.Po (+332/-0)
utils/exportfs/Makefile.in (+112/-32)
utils/exportfs/exportfs.c (+12/-9)
utils/gssd/.deps/gss_clnt_send_err-gss_clnt_send_err.Po (+256/-0)
utils/gssd/.deps/gssd-context.Po (+255/-0)
utils/gssd/.deps/gssd-context_heimdal.Po (+3/-0)
utils/gssd/.deps/gssd-context_lucid.Po (+268/-0)
utils/gssd/.deps/gssd-context_mit.Po (+3/-0)
utils/gssd/.deps/gssd-err_util.Po (+70/-0)
utils/gssd/.deps/gssd-gss_oids.Po (+69/-0)
utils/gssd/.deps/gssd-gss_util.Po (+319/-0)
utils/gssd/.deps/gssd-gssd.Po (+285/-0)
utils/gssd/.deps/gssd-gssd_main_loop.Po (+242/-0)
utils/gssd/.deps/gssd-gssd_proc.Po (+383/-0)
utils/gssd/.deps/gssd-krb5_util.Po (+304/-0)
utils/gssd/.deps/svcgssd-context.Po (+255/-0)
utils/gssd/.deps/svcgssd-context_heimdal.Po (+4/-0)
utils/gssd/.deps/svcgssd-context_lucid.Po (+268/-0)
utils/gssd/.deps/svcgssd-context_mit.Po (+3/-0)
utils/gssd/.deps/svcgssd-err_util.Po (+70/-0)
utils/gssd/.deps/svcgssd-gss_oids.Po (+69/-0)
utils/gssd/.deps/svcgssd-gss_util.Po (+319/-0)
utils/gssd/.deps/svcgssd-svcgssd.Po (+343/-0)
utils/gssd/.deps/svcgssd-svcgssd_krb5.Po (+269/-0)
utils/gssd/.deps/svcgssd-svcgssd_main_loop.Po (+220/-0)
utils/gssd/.deps/svcgssd-svcgssd_mech2file.Po (+81/-0)
utils/gssd/.deps/svcgssd-svcgssd_proc.Po (+337/-0)
utils/gssd/Makefile.am (+6/-6)
utils/gssd/Makefile.in (+99/-32)
utils/gssd/context.c (+1/-1)
utils/gssd/context.h (+2/-2)
utils/gssd/context_heimdal.c (+2/-2)
utils/gssd/context_lucid.c (+2/-2)
utils/gssd/context_mit.c (+2/-2)
utils/gssd/gss_util.c (+1/-1)
utils/gssd/gss_util.h (+12/-0)
utils/gssd/gssd.c (+7/-4)
utils/gssd/gssd.h (+4/-2)
utils/gssd/gssd.man (+233/-88)
utils/gssd/gssd_main_loop.c (+56/-29)
utils/gssd/gssd_proc.c (+107/-87)
utils/gssd/krb5_util.c (+155/-66)
utils/gssd/krb5_util.h (+4/-1)
utils/gssd/svcgssd.c (+1/-1)
utils/gssd/svcgssd_krb5.c (+7/-0)
utils/gssd/svcgssd_proc.c (+1/-1)
utils/idmapd/.deps/idmapd.Po (+389/-0)
utils/idmapd/Makefile.in (+86/-20)
utils/idmapd/idmapd.c (+7/-24)
utils/mount/.deps/configfile.Po (+1/-0)
utils/mount/.deps/error.Po (+292/-0)
utils/mount/.deps/fstab.Po (+191/-0)
utils/mount/.deps/mount.Po (+342/-0)
utils/mount/.deps/mount_libmount.Po (+1/-0)
utils/mount/.deps/network.Po (+358/-0)
utils/mount/.deps/nfs4mount.Po (+336/-0)
utils/mount/.deps/nfsmount.Po (+352/-0)
utils/mount/.deps/nfsumount.Po (+336/-0)
utils/mount/.deps/parse_dev.Po (+140/-0)
utils/mount/.deps/parse_opt.Po (+129/-0)
utils/mount/.deps/stropts.Po (+354/-0)
utils/mount/.deps/token.Po (+125/-0)
utils/mount/.deps/utils.Po (+311/-0)
utils/mount/Makefile.am (+1/-1)
utils/mount/Makefile.in (+100/-27)
utils/mount/error.c (+1/-1)
utils/mount/mount_libmount.c (+15/-9)
utils/mount/network.c (+5/-8)
utils/mount/nfs.man (+64/-70)
utils/mount/nfsmount.conf.man (+11/-4)
utils/mount/stropts.c (+18/-5)
utils/mountd/.deps/mountd-auth.Po (+328/-0)
utils/mountd/.deps/mountd-cache.Po (+365/-0)
utils/mountd/.deps/mountd-fsloc.Po (+281/-0)
utils/mountd/.deps/mountd-mount_dispatch.Po (+289/-0)
utils/mountd/.deps/mountd-mountd.Po (+358/-0)
utils/mountd/.deps/mountd-rmtab.Po (+343/-0)
utils/mountd/.deps/mountd-svc_run.Po (+239/-0)
utils/mountd/.deps/mountd-v4root.Po (+317/-0)
utils/mountd/Makefile.in (+86/-20)
utils/mountd/auth.c (+2/-1)
utils/mountd/cache.c (+215/-123)
utils/mountd/mountd.c (+2/-1)
utils/mountd/v4root.c (+8/-3)
utils/nfsd/.deps/nfsd.Po (+304/-0)
utils/nfsd/.deps/nfssvc.Po (+304/-0)
utils/nfsd/Makefile.in (+86/-20)
utils/nfsd/nfsd.c (+24/-2)
utils/nfsd/nfsd.man (+8/-1)
utils/nfsdcld/Makefile.am (+0/-14)
utils/nfsdcld/Makefile.in (+0/-661)
utils/nfsdcld/nfsdcld.c (+0/-607)
utils/nfsdcld/nfsdcld.man (+0/-185)
utils/nfsdcld/sqlite.c (+0/-386)
utils/nfsdcld/sqlite.h (+0/-29)
utils/nfsdcltrack/.deps/nfsdcltrack.Po (+210/-0)
utils/nfsdcltrack/.deps/sqlite.Po (+233/-0)
utils/nfsdcltrack/Makefile.am (+13/-0)
utils/nfsdcltrack/Makefile.in (+726/-0)
utils/nfsdcltrack/nfsdcltrack.c (+532/-0)
utils/nfsdcltrack/nfsdcltrack.man (+97/-0)
utils/nfsdcltrack/sqlite.c (+400/-0)
utils/nfsdcltrack/sqlite.h (+30/-0)
utils/nfsidmap/.deps/nfsidmap.Po (+148/-0)
utils/nfsidmap/Makefile.in (+86/-20)
utils/nfsidmap/nfsidmap.c (+12/-0)
utils/nfsstat/.deps/nfsstat.Po (+154/-0)
utils/nfsstat/Makefile.in (+86/-20)
utils/osd_login/Makefile.in (+137/-36)
utils/showmount/.deps/showmount-showmount.Po (+269/-0)
utils/showmount/Makefile.in (+86/-20)
utils/statd/.deps/callback.Po (+242/-0)
utils/statd/.deps/hostname.Po (+247/-0)
utils/statd/.deps/misc.Po (+255/-0)
utils/statd/.deps/monitor.Po (+322/-0)
utils/statd/.deps/notlist.Po (+227/-0)
utils/statd/.deps/rmtcall.Po (+294/-0)
utils/statd/.deps/simu.Po (+250/-0)
utils/statd/.deps/sm-notify.Po (+303/-0)
utils/statd/.deps/stat.Po (+237/-0)
utils/statd/.deps/statd.Po (+353/-0)
utils/statd/.deps/svc_run.Po (+246/-0)
utils/statd/Makefile.in (+91/-25)
utils/statd/rmtcall.c (+13/-6)
utils/statd/sm-notify.c (+1/-1)
utils/statd/statd.c (+2/-1)
To merge this branch: bzr merge lp:~stgraber/ubuntu/saucy/nfs-utils/debian-merge
Reviewer Review Type Date Requested Status
Steve Langasek Pending
Review via email: mp+165703@code.launchpad.net

This proposal supersedes a proposal from 2013-05-24.

Description of the change

Merge for nfs-utils, confirmed to build properly on amd64.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.gitignore'
2--- .gitignore 2012-06-22 15:04:56 +0000
3+++ .gitignore 2013-05-24 21:28:27 +0000
4@@ -3,7 +3,6 @@
5 autom4te.cache
6 compile
7 config.guess
8-config.log
9 config.sub
10 configure
11 depcomp
12@@ -20,6 +19,8 @@
13 aclocal/lt~obsolete.m4
14 # files generated by configure
15 confdefs.h
16+config.cache
17+config.log
18 config.status
19 conftest
20 conftest.c
21@@ -34,6 +35,7 @@
22 *.o
23 .libs
24 lib*.a
25+test-driver
26 tools/rpcgen/rpcgen
27 tools/rpcdebug/rpcdebug
28 utils/blkmapd/blkmapd
29@@ -49,7 +51,7 @@
30 utils/rquotad/rquota.h
31 utils/rquotad/rquota_xdr.c
32 utils/showmount/showmount
33-utils/nfsdcld/nfsdcld
34+utils/nfsdcltrack/nfsdcltrack
35 utils/statd/statd
36 tools/locktest/testlk
37 tools/getiversion/getiversion
38
39=== modified file '.pc/01-sm-notify-in-sbin.patch/utils/statd/statd.c'
40--- .pc/01-sm-notify-in-sbin.patch/utils/statd/statd.c 2010-04-06 16:11:22 +0000
41+++ .pc/01-sm-notify-in-sbin.patch/utils/statd/statd.c 2013-05-24 21:28:27 +0000
42@@ -99,7 +99,8 @@
43 killer (int sig)
44 {
45 statd_unregister ();
46- xlog_err ("Caught signal %d, un-registering and exiting", sig);
47+ xlog(D_GENERAL, "Caught signal %d, un-registering and exiting", sig);
48+ exit(0);
49 }
50
51 static void
52
53=== modified file '.pc/02-524255-manpages.patch/utils/nfsd/nfsd.man'
54--- .pc/02-524255-manpages.patch/utils/nfsd/nfsd.man 2012-05-25 20:41:58 +0000
55+++ .pc/02-524255-manpages.patch/utils/nfsd/nfsd.man 2013-05-24 21:28:27 +0000
56@@ -47,7 +47,7 @@
57 .B rpc.nfsd
58 does not offer certain versions of NFS. The current version of
59 .B rpc.nfsd
60-can support both NFS version 2,3 and the newer version 4.
61+can support NFS versions 2,3,4 and the newer version 4.1.
62 .TP
63 .B \-s " or " \-\-syslog
64 By default,
65@@ -67,6 +67,13 @@
66 .B rpc.nfsd
67 from accepting UDP connections from clients.
68 .TP
69+.B \-V " or " \-\-nfs-version vers
70+This option can be used to request that
71+.B rpc.nfsd
72+offer certain versions of NFS. The current version of
73+.B rpc.nfsd
74+can support NFS versions 2,3,4 and the newer version 4.1.
75+.TP
76 .I nproc
77 specify the number of NFS server threads. By default, just one
78 thread is started. However, for optimum performance several threads
79
80=== modified file '.pc/11-532048-reduce-verbosity.patch/utils/gssd/gss_util.c'
81--- .pc/11-532048-reduce-verbosity.patch/utils/gssd/gss_util.c 2011-07-09 16:28:32 +0000
82+++ .pc/11-532048-reduce-verbosity.patch/utils/gssd/gss_util.c 2013-05-24 21:28:27 +0000
83@@ -95,7 +95,7 @@
84 /* Global gssd_credentials handle */
85 gss_cred_id_t gssd_creds;
86
87-gss_OID g_mechOid = GSS_C_NULL_OID;;
88+gss_OID g_mechOid = GSS_C_NULL_OID;
89
90 #if 0
91 static void
92
93=== modified file '.pc/11-532048-reduce-verbosity.patch/utils/gssd/gssd_proc.c'
94--- .pc/11-532048-reduce-verbosity.patch/utils/gssd/gssd_proc.c 2012-05-25 20:41:58 +0000
95+++ .pc/11-532048-reduce-verbosity.patch/utils/gssd/gssd_proc.c 2013-05-24 21:28:27 +0000
96@@ -52,6 +52,7 @@
97 #include <sys/socket.h>
98 #include <arpa/inet.h>
99 #include <sys/fsuid.h>
100+#include <sys/resource.h>
101
102 #include <stdio.h>
103 #include <stdlib.h>
104@@ -66,6 +67,7 @@
105 #include <errno.h>
106 #include <gssapi/gssapi.h>
107 #include <netdb.h>
108+#include <ctype.h>
109
110 #include "gssd.h"
111 #include "err_util.h"
112@@ -104,7 +106,10 @@
113
114 struct pollfd * pollarray;
115
116-int pollsize; /* the size of pollaray (in pollfd's) */
117+unsigned long pollsize; /* the size of pollaray (in pollfd's) */
118+
119+/* Avoid DNS reverse lookups on server names */
120+int avoid_dns = 1;
121
122 /*
123 * convert a presentation address string to a sockaddr_storage struct. Returns
124@@ -164,12 +169,31 @@
125 * convert a sockaddr to a hostname
126 */
127 static char *
128-sockaddr_to_hostname(const struct sockaddr *sa, const char *addr)
129+get_servername(const char *name, const struct sockaddr *sa, const char *addr)
130 {
131 socklen_t addrlen;
132 int err;
133- char *hostname;
134+ char *hostname;
135 char hbuf[NI_MAXHOST];
136+ unsigned char buf[sizeof(struct in6_addr)];
137+ int servername = 0;
138+
139+ if (avoid_dns) {
140+ /*
141+ * Determine if this is a server name, or an IP address.
142+ * If it is an IP address, do the DNS lookup otherwise
143+ * skip the DNS lookup.
144+ */
145+ servername = 0;
146+ if (strchr(name, '.') && inet_pton(AF_INET, name, buf) == 1)
147+ servername = 1; /* IPv4 */
148+ else if (strchr(name, ':') && inet_pton(AF_INET6, name, buf) == 1)
149+ servername = 1; /* or IPv6 */
150+
151+ if (servername) {
152+ return strdup(name);
153+ }
154+ }
155
156 switch (sa->sa_family) {
157 case AF_INET:
158@@ -207,7 +231,7 @@
159 struct sockaddr *addr) {
160 #define INFOBUFLEN 256
161 char buf[INFOBUFLEN + 1];
162- static char dummy[128];
163+ static char server[128];
164 int nbytes;
165 static char service[128];
166 static char address[128];
167@@ -235,7 +259,7 @@
168 "service: %127s %15s version %15s\n"
169 "address: %127s\n"
170 "protocol: %15s\n",
171- dummy,
172+ server,
173 service, program, version,
174 address,
175 protoname);
176@@ -250,25 +274,14 @@
177 if ((p = strstr(buf, "port")) != NULL)
178 sscanf(p, "port: %127s\n", port);
179
180- /* check service, program, and version */
181- if (memcmp(service, "nfs", 3) != 0)
182- return -1;
183+ /* get program, and version numbers */
184 *prog = atoi(program + 1); /* skip open paren */
185 *vers = atoi(version);
186
187- if (strlen(service) == 3 ) {
188- if ((*prog != 100003) || ((*vers != 2) && (*vers != 3) &&
189- (*vers != 4)))
190- goto fail;
191- } else if (memcmp(service, "nfs4_cb", 7) == 0) {
192- if (*vers != 1)
193- goto fail;
194- }
195-
196 if (!addrstr_to_sockaddr(addr, address, port))
197 goto fail;
198
199- *servername = sockaddr_to_hostname(addr, address);
200+ *servername = get_servername(server, addr, address);
201 if (*servername == NULL)
202 goto fail;
203
204@@ -340,6 +353,25 @@
205 char gname[PATH_MAX];
206 char info_file_name[PATH_MAX];
207
208+ if (clp->gssd_close_me) {
209+ printerr(2, "Closing 'gssd' pipe for %s\n", clp->dirname);
210+ close(clp->gssd_fd);
211+ memset(&pollarray[clp->gssd_poll_index], 0,
212+ sizeof(struct pollfd));
213+ clp->gssd_fd = -1;
214+ clp->gssd_poll_index = -1;
215+ clp->gssd_close_me = 0;
216+ }
217+ if (clp->krb5_close_me) {
218+ printerr(2, "Closing 'krb5' pipe for %s\n", clp->dirname);
219+ close(clp->krb5_fd);
220+ memset(&pollarray[clp->krb5_poll_index], 0,
221+ sizeof(struct pollfd));
222+ clp->krb5_fd = -1;
223+ clp->krb5_poll_index = -1;
224+ clp->krb5_close_me = 0;
225+ }
226+
227 if (clp->gssd_fd == -1) {
228 snprintf(gname, sizeof(gname), "%s/gssd", clp->dirname);
229 clp->gssd_fd = open(gname, O_RDWR);
230@@ -379,10 +411,10 @@
231 static int
232 get_poll_index(int *ind)
233 {
234- int i;
235+ unsigned int i;
236
237 *ind = -1;
238- for (i=0; i<FD_ALLOC_BLOCK; i++) {
239+ for (i=0; i<pollsize; i++) {
240 if (pollarray[i].events == 0) {
241 *ind = i;
242 break;
243@@ -464,9 +496,13 @@
244 void
245 init_client_list(void)
246 {
247+ struct rlimit rlim;
248 TAILQ_INIT(&clnt_list);
249 /* Eventually plan to grow/shrink poll array: */
250 pollsize = FD_ALLOC_BLOCK;
251+ if (getrlimit(RLIMIT_NOFILE, &rlim) == 0 &&
252+ rlim.rlim_cur != RLIM_INFINITY)
253+ pollsize = rlim.rlim_cur;
254 pollarray = calloc(pollsize, sizeof(struct pollfd));
255 }
256
257@@ -548,9 +584,8 @@
258
259 update_old_clients(namelist, j, pipe_name);
260 for (i=0; i < j; i++) {
261- if (i < FD_ALLOC_BLOCK
262- && !strncmp(namelist[i]->d_name, "clnt", 4)
263- && !find_client(namelist[i]->d_name, pipe_name))
264+ if (!strncmp(namelist[i]->d_name, "clnt", 4)
265+ && !find_client(namelist[i]->d_name, pipe_name))
266 process_clnt_dir(namelist[i]->d_name, pipe_name);
267 free(namelist[i]);
268 }
269@@ -640,19 +675,22 @@
270
271 static int
272 do_downcall(int k5_fd, uid_t uid, struct authgss_private_data *pd,
273- gss_buffer_desc *context_token)
274+ gss_buffer_desc *context_token, OM_uint32 lifetime_rec)
275 {
276 char *buf = NULL, *p = NULL, *end = NULL;
277 unsigned int timeout = context_timeout;
278 unsigned int buf_size = 0;
279
280- printerr(1, "doing downcall\n");
281+ printerr(1, "doing downcall lifetime_rec %u\n", lifetime_rec);
282 buf_size = sizeof(uid) + sizeof(timeout) + sizeof(pd->pd_seq_win) +
283 sizeof(pd->pd_ctx_hndl.length) + pd->pd_ctx_hndl.length +
284 sizeof(context_token->length) + context_token->length;
285 p = buf = malloc(buf_size);
286 end = buf + buf_size;
287
288+ /* context_timeout set by -t option overrides context lifetime */
289+ if (timeout == 0)
290+ timeout = lifetime_rec;
291 if (WRITE_BYTES(&p, end, uid)) goto out_err;
292 if (WRITE_BYTES(&p, end, timeout)) goto out_err;
293 if (WRITE_BYTES(&p, end, pd->pd_seq_win)) goto out_err;
294@@ -693,7 +731,7 @@
295
296 /*
297 * If the port isn't already set, do an rpcbind query to the remote server
298- * using the program and version and get the port.
299+ * using the program and version and get the port.
300 *
301 * Newer kernels send the value of the port= mount option in the "info"
302 * file for the upcall or '0' for NFSv2/3. For NFSv4 it sends the value
303@@ -780,11 +818,13 @@
304 * Create an RPC connection and establish an authenticated
305 * gss context with a server.
306 */
307-int create_auth_rpc_client(struct clnt_info *clp,
308- CLIENT **clnt_return,
309- AUTH **auth_return,
310- uid_t uid,
311- int authtype)
312+static int
313+create_auth_rpc_client(struct clnt_info *clp,
314+ CLIENT **clnt_return,
315+ AUTH **auth_return,
316+ uid_t uid,
317+ int authtype,
318+ gss_cred_id_t cred)
319 {
320 CLIENT *rpc_clnt = NULL;
321 struct rpc_gss_sec sec;
322@@ -810,7 +850,7 @@
323
324 sec.qop = GSS_C_QOP_DEFAULT;
325 sec.svc = RPCSEC_GSS_SVC_NONE;
326- sec.cred = GSS_C_NO_CREDENTIAL;
327+ sec.cred = cred;
328 sec.req_flags = 0;
329 if (authtype == AUTHTYPE_KRB5) {
330 sec.mech = (gss_OID)&krb5oid;
331@@ -918,23 +958,6 @@
332 goto out;
333 }
334
335-static char *
336-user_cachedir(char *dirname, uid_t uid)
337-{
338- struct passwd *pw;
339- char *ptr;
340-
341- if ((pw = getpwuid(uid)) == NULL) {
342- printerr(0, "user_cachedir: Failed to find '%d' uid"
343- " for cache directory\n");
344- return NULL;
345- }
346- ptr = malloc(strlen(dirname)+strlen(pw->pw_name)+2);
347- if (ptr)
348- sprintf(ptr, "%s/%s", dirname, pw->pw_name);
349-
350- return ptr;
351-}
352 /*
353 * this code uses the userland rpcsec gss library to create a krb5
354 * context on behalf of the kernel
355@@ -949,18 +972,14 @@
356 gss_buffer_desc token;
357 char **credlist = NULL;
358 char **ccname;
359- char **dirname, *dir, *userdir;
360+ char **dirname;
361 int create_resp = -1;
362 int err, downcall_err = -EACCES;
363+ gss_cred_id_t gss_cred;
364+ OM_uint32 maj_stat, min_stat, lifetime_rec;
365
366 printerr(1, "handling krb5 upcall (%s)\n", clp->dirname);
367
368- if (tgtname) {
369- if (clp->servicename) {
370- free(clp->servicename);
371- clp->servicename = strdup(tgtname);
372- }
373- }
374 token.length = 0;
375 token.value = NULL;
376 memset(&pd, 0, sizeof(struct authgss_private_data));
377@@ -991,30 +1010,20 @@
378 if (uid != 0 || (uid == 0 && root_uses_machine_creds == 0 &&
379 service == NULL)) {
380 /* Tell krb5 gss which credentials cache to use */
381- for (dirname = ccachesearch; *dirname != NULL; dirname++) {
382- /* See if the user name is needed */
383- if (strncmp(*dirname, GSSD_USER_CRED_DIR,
384- strlen(GSSD_USER_CRED_DIR)) == 0) {
385- userdir = user_cachedir(*dirname, uid);
386- if (userdir == NULL)
387- continue;
388- dir = userdir;
389- } else
390- dir = *dirname;
391-
392- err = gssd_setup_krb5_user_gss_ccache(uid, clp->servername, dir);
393-
394- if (userdir) {
395- free(userdir);
396- userdir = NULL;
397- }
398+ /* Try first to acquire credentials directly via GSSAPI */
399+ err = gssd_acquire_user_cred(uid, &gss_cred);
400+ if (!err)
401+ create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid,
402+ AUTHTYPE_KRB5, gss_cred);
403+ /* if create_auth_rplc_client fails try the traditional method of
404+ * trolling for credentials */
405+ for (dirname = ccachesearch; create_resp != 0 && *dirname != NULL; dirname++) {
406+ err = gssd_setup_krb5_user_gss_ccache(uid, clp->servername, *dirname);
407 if (err == -EKEYEXPIRED)
408 downcall_err = -EKEYEXPIRED;
409 else if (!err)
410 create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid,
411- AUTHTYPE_KRB5);
412- if (create_resp == 0)
413- break;
414+ AUTHTYPE_KRB5, GSS_C_NO_CREDENTIAL);
415 }
416 }
417 if (create_resp != 0) {
418@@ -1024,7 +1033,8 @@
419 int success = 0;
420 do {
421 gssd_refresh_krb5_machine_credential(clp->servername,
422- NULL, service);
423+ NULL, service,
424+ tgtname);
425 /*
426 * Get a list of credential cache names and try each
427 * of them until one works or we've tried them all
428@@ -1033,22 +1043,23 @@
429 printerr(0, "ERROR: No credentials found "
430 "for connection to server %s\n",
431 clp->servername);
432- goto out_return_error;
433+ goto out_return_error;
434 }
435 for (ccname = credlist; ccname && *ccname; ccname++) {
436 gssd_setup_krb5_machine_gss_ccache(*ccname);
437 if ((create_auth_rpc_client(clp, &rpc_clnt,
438 &auth, uid,
439- AUTHTYPE_KRB5)) == 0) {
440+ AUTHTYPE_KRB5,
441+ GSS_C_NO_CREDENTIAL)) == 0) {
442 /* Success! */
443 success++;
444 break;
445- }
446+ }
447 printerr(2, "WARNING: Failed to create machine krb5 context "
448 "with credentials cache %s for server %s\n",
449 *ccname, clp->servername);
450 }
451- gssd_free_krb5_machine_cred_list(credlist);
452+ gssd_free_krb5_machine_cred_list(credlist);
453 if (!success) {
454 if(nocache == 0) {
455 nocache++;
456@@ -1077,20 +1088,29 @@
457 goto out_return_error;
458 }
459
460- if (serialize_context_for_kernel(pd.pd_ctx, &token, &krb5oid, NULL)) {
461+ /* Grab the context lifetime to pass to the kernel. lifetime_rec
462+ * is set to zero on error */
463+ maj_stat = gss_inquire_context(&min_stat, pd.pd_ctx, NULL, NULL,
464+ &lifetime_rec, NULL, NULL, NULL, NULL);
465+
466+ if (maj_stat)
467+ printerr(1, "WARNING: Failed to inquire context for lifetme "
468+ "maj_stat %u\n", maj_stat);
469+
470+ if (serialize_context_for_kernel(&pd.pd_ctx, &token, &krb5oid, NULL)) {
471 printerr(0, "WARNING: Failed to serialize krb5 context for "
472 "user with uid %d for server %s\n",
473 uid, clp->servername);
474 goto out_return_error;
475 }
476
477- do_downcall(fd, uid, &pd, &token);
478+ do_downcall(fd, uid, &pd, &token, lifetime_rec);
479
480 out:
481 if (token.value)
482 free(token.value);
483-#ifndef HAVE_LIBTIRPC
484- if (pd.pd_ctx_hndl.length != 0)
485+#ifdef HAVE_AUTHGSS_FREE_PRIVATE_DATA
486+ if (pd.pd_ctx_hndl.length != 0 || pd.pd_ctx != 0)
487 authgss_free_private_data(&pd);
488 #endif
489 if (auth)
490@@ -1115,7 +1135,7 @@
491 return;
492 }
493
494- return process_krb5_upcall(clp, uid, clp->krb5_fd, NULL, NULL);
495+ process_krb5_upcall(clp, uid, clp->krb5_fd, NULL, NULL);
496 }
497
498 void
499@@ -1236,6 +1256,6 @@
500 free(enctypes);
501 free(target);
502 free(service);
503- return;
504+ return;
505 }
506
507
508=== modified file '.pc/17-multiarch-kerberos-paths.patch/aclocal/kerberos5.m4'
509--- .pc/17-multiarch-kerberos-paths.patch/aclocal/kerberos5.m4 2012-05-25 20:41:58 +0000
510+++ .pc/17-multiarch-kerberos-paths.patch/aclocal/kerberos5.m4 2013-05-24 21:28:27 +0000
511@@ -32,6 +32,8 @@
512 if test "$K5CONFIG" != ""; then
513 KRBCFLAGS=`$K5CONFIG --cflags`
514 KRBLIBS=`$K5CONFIG --libs`
515+ GSSKRB_CFLAGS=`$K5CONFIG --cflags gssapi`
516+ GSSKRB_LIBS=`$K5CONFIG --libs gssapi`
517 K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
518 AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
519 if test -f $dir/include/gssapi/gssapi_krb5.h -a \
520@@ -92,6 +94,8 @@
521 AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS)
522 AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name,
523 AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS)
524+ AC_CHECK_LIB($gssapi_lib, gss_krb5_free_lucid_sec_context,
525+ AC_DEFINE(HAVE_GSS_KRB5_FREE_LUCID_SEC_CONTEXT, 1, [Define this if the Kerberos GSS library supports gss_krb5_free_lucid_sec_context]), ,$KRBLIBS)
526
527 dnl Check for newer error message facility
528 AC_CHECK_LIB($gssapi_lib, krb5_get_error_message,
529@@ -111,5 +115,7 @@
530 AC_SUBST([KRBCFLAGS])
531 AC_SUBST([KRBLDFLAGS])
532 AC_SUBST([K5VERS])
533+ AC_SUBST([GSSKRB_CFLAGS])
534+ AC_SUBST([GSSKRB_LIBS])
535
536 ])
537
538=== removed directory '.pc/18-osd_login-sbindir.patch'
539=== removed directory '.pc/18-osd_login-sbindir.patch/utils'
540=== removed directory '.pc/18-osd_login-sbindir.patch/utils/osd_login'
541=== removed file '.pc/18-osd_login-sbindir.patch/utils/osd_login/Makefile.am'
542--- .pc/18-osd_login-sbindir.patch/utils/osd_login/Makefile.am 2012-06-22 15:04:56 +0000
543+++ .pc/18-osd_login-sbindir.patch/utils/osd_login/Makefile.am 1970-01-01 00:00:00 +0000
544@@ -1,12 +0,0 @@
545-## Process this file with automake to produce Makefile.in
546-
547-OSD_LOGIN_FILES= osd_login
548-
549-EXTRA_DIST= $(OSD_LOGIN_FILES)
550-
551-all-local: $(OSD_LOGIN_FILES)
552-
553-install-data-hook:
554- $(INSTALL) --mode 755 osd_login $(DESTDIR)/sbin/osd_login
555-
556-MAINTAINERCLEANFILES = Makefile.in
557
558=== added directory '.pc/20-remove-autogenerated-man.patch'
559=== added directory '.pc/20-remove-autogenerated-man.patch/utils'
560=== added directory '.pc/20-remove-autogenerated-man.patch/utils/nfsdcltrack'
561=== added file '.pc/20-remove-autogenerated-man.patch/utils/nfsdcltrack/nfsdcltrack.man'
562--- .pc/20-remove-autogenerated-man.patch/utils/nfsdcltrack/nfsdcltrack.man 1970-01-01 00:00:00 +0000
563+++ .pc/20-remove-autogenerated-man.patch/utils/nfsdcltrack/nfsdcltrack.man 2013-05-24 21:28:27 +0000
564@@ -0,0 +1,211 @@
565+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
566+.\"
567+.\" Standard preamble:
568+.\" ========================================================================
569+.de Sp \" Vertical space (when we can't use .PP)
570+.if t .sp .5v
571+.if n .sp
572+..
573+.de Vb \" Begin verbatim text
574+.ft CW
575+.nf
576+.ne \\$1
577+..
578+.de Ve \" End verbatim text
579+.ft R
580+.fi
581+..
582+.\" Set up some character translations and predefined strings. \*(-- will
583+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
584+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
585+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
586+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
587+.\" nothing in troff, for use with C<>.
588+.tr \(*W-
589+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
590+.ie n \{\
591+. ds -- \(*W-
592+. ds PI pi
593+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
594+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
595+. ds L" ""
596+. ds R" ""
597+. ds C` ""
598+. ds C' ""
599+'br\}
600+.el\{\
601+. ds -- \|\(em\|
602+. ds PI \(*p
603+. ds L" ``
604+. ds R" ''
605+'br\}
606+.\"
607+.\" Escape single quotes in literal strings from groff's Unicode transform.
608+.ie \n(.g .ds Aq \(aq
609+.el .ds Aq '
610+.\"
611+.\" If the F register is turned on, we'll generate index entries on stderr for
612+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
613+.\" entries marked with X<> in POD. Of course, you'll have to process the
614+.\" output yourself in some meaningful fashion.
615+.ie \nF \{\
616+. de IX
617+. tm Index:\\$1\t\\n%\t"\\$2"
618+..
619+. nr % 0
620+. rr F
621+.\}
622+.el \{\
623+. de IX
624+..
625+.\}
626+.\"
627+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
628+.\" Fear. Run. Save yourself. No user-serviceable parts.
629+. \" fudge factors for nroff and troff
630+.if n \{\
631+. ds #H 0
632+. ds #V .8m
633+. ds #F .3m
634+. ds #[ \f1
635+. ds #] \fP
636+.\}
637+.if t \{\
638+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
639+. ds #V .6m
640+. ds #F 0
641+. ds #[ \&
642+. ds #] \&
643+.\}
644+. \" simple accents for nroff and troff
645+.if n \{\
646+. ds ' \&
647+. ds ` \&
648+. ds ^ \&
649+. ds , \&
650+. ds ~ ~
651+. ds /
652+.\}
653+.if t \{\
654+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
655+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
656+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
657+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
658+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
659+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
660+.\}
661+. \" troff and (daisy-wheel) nroff accents
662+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
663+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
664+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
665+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
666+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
667+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
668+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
669+.ds ae a\h'-(\w'a'u*4/10)'e
670+.ds Ae A\h'-(\w'A'u*4/10)'E
671+. \" corrections for vroff
672+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
673+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
674+. \" for low resolution devices (crt and lpr)
675+.if \n(.H>23 .if \n(.V>19 \
676+\{\
677+. ds : e
678+. ds 8 ss
679+. ds o a
680+. ds d- d\h'-1'\(ga
681+. ds D- D\h'-1'\(hy
682+. ds th \o'bp'
683+. ds Th \o'LP'
684+. ds ae ae
685+. ds Ae AE
686+.\}
687+.rm #[ #] #H #V #F C
688+.\" ========================================================================
689+.\"
690+.IX Title "NFSDCLTRACK 8"
691+.TH NFSDCLTRACK 8 "2012-10-24" "" ""
692+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
693+.\" way too many mistakes in technical documents.
694+.if n .ad l
695+.nh
696+.SH "NAME"
697+nfsdcltrack \- NFSv4 Client Tracking Callout Program
698+.SH "SYNOPSIS"
699+.IX Header "SYNOPSIS"
700+nfsdcltrack [\-d] [\-f] [\-s stable storage dir] <command> <args...>
701+.SH "DESCRIPTION"
702+.IX Header "DESCRIPTION"
703+nfsdcltack is the NFSv4 client tracking callout program. It is not necessary
704+to install this daemon on machines that are not acting as NFSv4 servers.
705+.PP
706+When a network partition is combined with a server reboot, there are
707+edge conditions that can cause the server to grant lock reclaims when
708+other clients have taken conflicting locks in the interim. A more detailed
709+explanation of this issue is described in \s-1RFC\s0 3530, section 8.6.3.
710+.PP
711+In order to prevent these problems, the server must track a small amount
712+of per-client information on stable storage. This program provides the
713+userspace piece of that functionality. When the kernel needs to manipulate
714+the database that stores this info, it will execute this program to handle
715+it.
716+.SH "OPTIONS"
717+.IX Header "OPTIONS"
718+.IP "\fB\-d\fR, \fB\-\-debug\fR" 4
719+.IX Item "-d, --debug"
720+Enable debug level logging.
721+.IP "\fB\-f\fR, \fB\-\-foreground\fR" 4
722+.IX Item "-f, --foreground"
723+Log to stderr instead of syslog.
724+.IP "\fB\-s\fR \fIstoragedir\fR, \fB\-\-storagedir\fR=\fIstorage_dir\fR" 4
725+.IX Item "-s storagedir, --storagedir=storage_dir"
726+Directory where stable storage information should be kept. The default
727+value is \fI/var/lib/nfs/nfsdcltrack\fR.
728+.SH "COMMANDS"
729+.IX Header "COMMANDS"
730+nfsdcltrack requires a command for each invocation. Supported commands
731+are:
732+.IP "\fBinit\fR" 4
733+.IX Item "init"
734+Initialize the database. This command requires no argument.
735+.IP "\fBcreate\fR" 4
736+.IX Item "create"
737+Create a new client record (or update the timestamp on an existing one). This command requires a hex-encoded nfs_client_id4 as an argument.
738+.IP "\fBremove\fR" 4
739+.IX Item "remove"
740+Remove a client record from the database. This command requires a hex-encoded nfs_client_id4 as an argument.
741+.IP "\fBcheck\fR" 4
742+.IX Item "check"
743+Check to see if a nfs_client_id4 is allowed to reclaim. This command requires a hex-encoded nfs_client_id4 as an argument.
744+.IP "\fBgracedone\fR" 4
745+.IX Item "gracedone"
746+Remove any unreclaimed client records from the database. This command requires a epoch boot time as an argument.
747+.SH "LEGACY TRANSITION MECHANISM"
748+.IX Header "LEGACY TRANSITION MECHANISM"
749+The Linux kernel NFSv4 server has historically tracked this information
750+on stable storage by manipulating information on the filesystem
751+directly, in the directory to which \fI/proc/fs/nfsd/nfsv4recoverydir\fR
752+points. If the kernel passes the correct information, then nfsdcltrack
753+can use it to allow a seamless transition from the old client tracking
754+scheme to the new one.
755+.PP
756+On a \fBcheck\fR operation, if there is no record of the client in the
757+database, nfsdcltrack will look to see if the \fB\s-1NFSDCLTRACK_LEGACY_RECDIR\s0\fR
758+environment variable is set. If it is, then it will fetch that value and
759+see if a directory exists by that name. If it does, then the check
760+operation will succeed and the directory will be removed.
761+.PP
762+On a \fBgracedone\fR operation, nfsdcltrack will look to see if the
763+\&\fB\s-1NFSDCLTRACK_LEGACY_TOPDIR\s0\fR environment variable is set. If it is, then
764+it will attempt to clean out that directory prior to exiting.
765+.PP
766+Note that this transition is one-way. If the machine subsequently reboots
767+back into an older kernel that does not support the nfsdcltrack upcall
768+then the clients will not be able to recover their state.
769+.SH "NOTES"
770+.IX Header "NOTES"
771+This program requires a kernel that supports the nfsdcltrack usermodehelper
772+upcall. This support was first added to mainline kernels in 3.8.
773+.SH "AUTHORS"
774+.IX Header "AUTHORS"
775+nfsdcltrack was developed by Jeff Layton <jlayton@redhat.com>.
776
777=== modified file '.pc/20-ticket-expired-error.patch/utils/gssd/gssd.c'
778--- .pc/20-ticket-expired-error.patch/utils/gssd/gssd.c 2012-09-28 21:58:43 +0000
779+++ .pc/20-ticket-expired-error.patch/utils/gssd/gssd.c 2013-05-24 21:28:27 +0000
780@@ -71,7 +71,7 @@
781 if (root_uses_machine_creds)
782 gssd_destroy_krb5_machine_creds();
783 printerr(1, "exiting on signal %d\n", signal);
784- exit(1);
785+ exit(0);
786 }
787
788 void
789@@ -85,7 +85,7 @@
790 static void
791 usage(char *progname)
792 {
793- fprintf(stderr, "usage: %s [-f] [-l] [-M] [-n] [-v] [-r] [-p pipefsdir] [-k keytab] [-d ccachedir] [-t timeout] [-R preferred realm]\n",
794+ fprintf(stderr, "usage: %s [-f] [-l] [-M] [-n] [-v] [-r] [-p pipefsdir] [-k keytab] [-d ccachedir] [-t timeout] [-R preferred realm] [-D]\n",
795 progname);
796 exit(1);
797 }
798@@ -102,7 +102,7 @@
799 char *progname;
800
801 memset(ccachesearch, 0, sizeof(ccachesearch));
802- while ((opt = getopt(argc, argv, "fvrlmnMp:k:d:t:R")) != -1) {
803+ while ((opt = getopt(argc, argv, "DfvrlmnMp:k:d:t:R:")) != -1) {
804 switch (opt) {
805 case 'f':
806 fg = 1;
807@@ -147,9 +147,12 @@
808 #ifdef HAVE_SET_ALLOWABLE_ENCTYPES
809 limit_to_legacy_enctypes = 1;
810 #else
811- errx(1, "Setting encryption type not support by Kerberos libraries.");
812+ errx(1, "Encryption type limits not supported by Kerberos libraries.");
813 #endif
814 break;
815+ case 'D':
816+ avoid_dns = 0;
817+ break;
818 default:
819 usage(argv[0]);
820 break;
821
822=== modified file '.pc/20-ticket-expired-error.patch/utils/gssd/gssd.h'
823--- .pc/20-ticket-expired-error.patch/utils/gssd/gssd.h 2012-09-28 21:58:43 +0000
824+++ .pc/20-ticket-expired-error.patch/utils/gssd/gssd.h 2013-05-24 21:28:27 +0000
825@@ -45,8 +45,8 @@
826 #define DNOTIFY_SIGNAL (SIGRTMIN + 3)
827
828 #define GSSD_DEFAULT_CRED_DIR "/tmp"
829-#define GSSD_USER_CRED_DIR "/run/user"
830-#define GSSD_DEFAULT_CRED_PREFIX "krb5cc_"
831+#define GSSD_USER_CRED_DIR "/run/user/%U"
832+#define GSSD_DEFAULT_CRED_PREFIX "krb5cc"
833 #define GSSD_DEFAULT_MACHINE_CRED_SUFFIX "machine"
834 #define GSSD_DEFAULT_KEYTAB_FILE "/etc/krb5.keytab"
835 #define GSSD_SERVICE_NAME "nfs"
836@@ -81,8 +81,10 @@
837 char *protocol;
838 int krb5_fd;
839 int krb5_poll_index;
840+ int krb5_close_me;
841 int gssd_fd;
842 int gssd_poll_index;
843+ int gssd_close_me;
844 struct sockaddr_storage addr;
845 };
846
847
848=== modified file '.pc/20-ticket-expired-error.patch/utils/gssd/gssd.man'
849--- .pc/20-ticket-expired-error.patch/utils/gssd/gssd.man 2012-09-28 21:58:43 +0000
850+++ .pc/20-ticket-expired-error.patch/utils/gssd/gssd.man 2013-05-24 21:28:27 +0000
851@@ -2,136 +2,281 @@
852 .\" rpc.gssd(8)
853 .\"
854 .\" Copyright (C) 2003 J. Bruce Fields <bfields@umich.edu>
855-.TH rpc.gssd 8 "14 Mar 2007"
856+.\"
857+.TH rpc.gssd 8 "20 Feb 2013"
858 .SH NAME
859-rpc.gssd \- rpcsec_gss daemon
860+rpc.gssd \- RPCSEC_GSS daemon
861 .SH SYNOPSIS
862-.B "rpc.gssd [-f] [-n] [-k keytab] [-l] [-p pipefsdir] [-v] [-r] [-d ccachedir]"
863+.B rpc.gssd
864+.RB [ \-DfMnlvr ]
865+.RB [ \-k
866+.IR keytab ]
867+.RB [ \-p
868+.IR pipefsdir ]
869+.RB [ \-d
870+.IR ccachedir ]
871+.RB [ \-t
872+.IR timeout ]
873+.RB [ \-R
874+.IR realm ]
875+.SH INTRODUCTION
876+The RPCSEC_GSS protocol, defined in RFC 5403, is used to provide
877+strong security for RPC-based protocols such as NFS.
878+.P
879+Before exchanging RPC requests using RPCSEC_GSS, an RPC client must
880+establish a GSS
881+.IR "security context" .
882+A security context is shared state on each
883+end of a network transport that enables GSS-API security services.
884+.P
885+Security contexts are established using
886+.IR "security credentials" .
887+A credential grants temporary access to a secure network service,
888+much as a railway ticket grants temporary access to use a rail service.
889+.P
890+A user typically obtains a credential by providing a password to the
891+.BR kinit (1)
892+command, or via a PAM library at login time.
893+A credential acquired with a
894+.I user principal
895+is known as a
896+.I user credential
897+(see
898+.BR kerberos (1)
899+for more on principals).
900+.P
901+For certain operations, a credential is required
902+which represents no user,
903+is otherwise unprivileged,
904+and is always available.
905+This is referred to as a
906+.IR "machine credential" .
907+.P
908+Machine credentials are typically established using a
909+.IR "service principal" ,
910+whose encrypted password, called its
911+.IR key ,
912+is stored in a file, called a
913+.IR keytab ,
914+to avoid requiring a user prompt.
915+A machine credential effectively does not expire because the system
916+can renew it as needed without user intervention.
917+.P
918+Once obtained, credentials are typically stored in local temporary files
919+with well-known pathnames.
920 .SH DESCRIPTION
921-The rpcsec_gss protocol gives a means of using the gss-api generic security
922-api to provide security for protocols using rpc (in particular, nfs). Before
923-exchanging any rpc requests using rpcsec_gss, the rpc client must first
924-establish a security context. The linux kernel's implementation of rpcsec_gss
925-depends on the userspace daemon
926-.B rpc.gssd
927-to establish security contexts. The
928-.B rpc.gssd
929-daemon uses files in the rpc_pipefs filesystem to communicate with the kernel.
930-
931+To establish GSS security contexts using these credential files,
932+the Linux kernel RPC client depends on a userspace daemon called
933+.BR rpc.gssd .
934+The
935+.B rpc.gssd
936+daemon uses the rpc_pipefs filesystem to communicate with the kernel.
937+.SS User Credentials
938+When a user authenticates using a command such as
939+.BR kinit (1),
940+the resulting credential is stored in a file with a well-known name
941+constructed using the user's UID.
942+.P
943+To interact with an NFS server
944+on behalf of a particular Kerberos-authenticated user,
945+the Linux kernel RPC client requests that
946+.B rpc.gssd
947+initialize a security context with the credential
948+in that user's credential file.
949+.P
950+Typically, credential files are placed in
951+.IR /tmp .
952+However,
953+.B rpc.gssd
954+can search for credential files in more than one directory.
955+See the description of the
956+.B -d
957+option for details.
958+.SS Machine Credentials
959+A user credential is established by a user and
960+is then shared with the kernel and
961+.BR rpc.gssd .
962+A machine credential is established by
963+.B rpc.gssd
964+for the kernel when there is no user.
965+Therefore
966+.B rpc.gssd
967+must already have the materials on hand to establish this credential
968+without requiring user intervention.
969+.P
970+.B rpc.gssd
971+searches the local system's keytab for a principal and key to use
972+to establish the machine credential.
973+By default,
974+.B rpc.gssd
975+assumes the file
976+.I /etc/krb5.keytab
977+contains principals and keys that can be used to obtain machine credentials.
978+.P
979+.B rpc.gssd
980+searches in the following order for a principal to use.
981+The first matching credential is used.
982+For the search, <hostname> and <REALM> are replaced with the local
983+system's hostname and Kerberos realm.
984+.sp
985+ <HOSTNAME>$@<REALM>
986+.br
987+ root/<hostname>@<REALM>
988+.br
989+ nfs/<hostname>@<REALM>
990+.br
991+ host/<hostname>@<REALM>
992+.br
993+ root/<anyname>@<REALM>
994+.br
995+ nfs/<anyname>@<REALM>
996+.br
997+ host/<anyname>@<REALM>
998+.sp
999+The <anyname> entries match on the service name and realm, but ignore the hostname.
1000+These can be used if a principal matching the local host's name is not found.
1001+.P
1002+Note that the first principal in the search order is a user principal
1003+that enables Kerberized NFS when the local system is joined
1004+to an Active Directory domain using Samba.
1005+A password for this principal must be provided in the local system's keytab.
1006+.P
1007+You can specify another keytab by using the
1008+.B -k
1009+option if
1010+.I /etc/krb5.keytab
1011+does not exist or does not provide one of these principals.
1012+.SS Credentials for UID 0
1013+UID 0 is a special case.
1014+By default
1015+.B rpc.gssd
1016+uses the system's machine credentials for UID 0 accesses
1017+that require GSS authentication.
1018+This limits the privileges of the root user
1019+when accessing network resources that require authentication.
1020+.P
1021+Specify the
1022+.B -n
1023+option when starting
1024+.B rpc.gssd
1025+if you'd like to force the root user to obtain a user credential
1026+rather than use the local system's machine credential.
1027+.P
1028+When
1029+.B -n
1030+is specified,
1031+the kernel continues to request a GSS context established
1032+with a machine credential for NFSv4 operations,
1033+such as SETCLIENTID or RENEW, that manage state.
1034+If
1035+.B rpc.gssd
1036+cannot obtain a machine credential (say, the local system has
1037+no keytab), NFSv4 operations that require machine credentials will fail.
1038+.SS Encryption types
1039+A realm administrator can choose to add keys encoded in a number of different
1040+encryption types to the local system's keytab.
1041+For instance, a host/ principal might have keys for the
1042+.BR aes256-cts-hmac-sha1-96 ,
1043+.BR aes128-cts-hmac-sha1-96 ,
1044+.BR des3-cbc-sha1 ", and"
1045+.BR arcfour-hmac " encryption types."
1046+This permits
1047+.B rpc.gssd
1048+to choose an appropriate encryption type that the target NFS server
1049+supports.
1050+.P
1051+These encryption types are stronger than legacy single-DES encryption types.
1052+To interoperate in environments where servers support
1053+only weak encryption types,
1054+you can restrict your client to use only single-DES encryption types
1055+by specifying the
1056+.B -l
1057+option when starting
1058+.BR rpc.gssd .
1059 .SH OPTIONS
1060 .TP
1061+.B -D
1062+DNS Reverse lookups are not used for determining the
1063+server names pass to GSSAPI. This option will reverses that and forces
1064+the use of DNS Reverse resolution of the server's IP address to
1065+retrieve the server name to use in GSAPI authentication.
1066+.TP
1067 .B -f
1068 Runs
1069 .B rpc.gssd
1070 in the foreground and sends output to stderr (as opposed to syslogd)
1071 .TP
1072 .B -n
1073-By default,
1074-.B rpc.gssd
1075-treats accesses by the user with UID 0 specially, and uses
1076-"machine credentials" for all accesses by that user which
1077-require Kerberos authentication.
1078-With the \-n option, "machine credentials" will not be used
1079-for accesses by UID 0. Instead, credentials must be obtained
1080-manually like all other users. Use of this option means that
1081-"root" must manually obtain Kerberos credentials before
1082-attempting to mount an nfs filesystem requiring Kerberos
1083-authentication.
1084+When specified, UID 0 is forced to obtain user credentials
1085+which are used instead of the local system's machine credentials.
1086 .TP
1087-.B -k keytab
1088+.BI "-k " keytab
1089 Tells
1090 .B rpc.gssd
1091 to use the keys found in
1092 .I keytab
1093-to obtain "machine credentials".
1094-The default value is "/etc/krb5.keytab".
1095-.IP
1096-Previous versions of
1097-.B rpc.gssd
1098-used only "nfs/*" keys found within the keytab.
1099-To be more consistent with other implementations, we now look for
1100-specific keytab entries. The search order for keytabs to be used
1101-for "machine credentials" is now:
1102-.br
1103- <HOSTNAME>$@<REALM>
1104-.br
1105- root/<hostname>@<REALM>
1106-.br
1107- nfs/<hostname>@<REALM>
1108-.br
1109- host/<hostname>@<REALM>
1110-.br
1111- root/<anyname>@<REALM>
1112-.br
1113- nfs/<anyname>@<REALM>
1114-.br
1115- host/<anyname>@<REALM>
1116-.IP
1117-If this search order does not use the correct key then provide a
1118-keytab file that contains only correct keys.
1119+to obtain machine credentials.
1120+The default value is
1121+.IR /etc/krb5.keytab .
1122 .TP
1123 .B -l
1124-Tells
1125+When specified, restricts
1126 .B rpc.gssd
1127-to limit session keys to Single DES even if the kernel supports stronger
1128-encryption types. Service ticket encryption is still governed by what
1129-the KDC believes the target server supports. This way the client can
1130-access a server that has strong keys in its keytab for ticket decryption
1131-but whose kernel only supports Single DES.
1132-.IP
1133-The alternative is to put only Single DES keys in the server's keytab
1134-and limit encryption types for its principal to Single DES on the KDC
1135-which will cause service tickets for this server to be encrypted using
1136-only Single DES and (as a side-effect) contain only Single DES session
1137-keys.
1138-.IP
1139-This legacy behaviour is only required for older servers
1140-(pre nfs-utils-1.2.4). If the server has a recent kernel, Kerberos
1141-implementation and nfs-utils it will work just fine with stronger
1142-encryption.
1143-.IP
1144-.B Note:
1145-This option is only available with Kerberos libraries that
1146-support setable encryption types.
1147+to sessions to weak encryption types such as
1148+.BR des-cbc-crc .
1149+This option is available only when the local system's Kerberos library
1150+supports settable encryption types.
1151 .TP
1152-.B -p path
1153+.BI "-p " path
1154 Tells
1155 .B rpc.gssd
1156 where to look for the rpc_pipefs filesystem. The default value is
1157-"/var/lib/nfs/rpc_pipefs".
1158-.TP
1159-.B -d directory
1160-Tells
1161-.B rpc.gssd
1162-where to look for Kerberos credential files. The default value is "/tmp".
1163-This can also be a colon separated list of directories to be searched
1164-for Kerberos credential files. Note that if machine credentials are being
1165-stored in files, then the first directory on this list is where the
1166-machine credentials are stored.
1167+.IR /var/lib/nfs/rpc_pipefs .
1168+.TP
1169+.BI "-d " search-path
1170+This option specifies a colon separated list of directories that
1171+.B rpc.gssd
1172+searches for credential files. The default value is
1173+.IR /tmp:/run/user/%U .
1174+The literal sequence "%U" can be specified to substitue the UID
1175+of the user for whom credentials are being searched.
1176+.TP
1177+.B -M
1178+By default, machine credentials are stored in files in the first
1179+directory in the credential directory search path (see the
1180+.B -d
1181+option). When
1182+.B -M
1183+is set,
1184+.B rpc.gssd
1185+stores machine credentials in memory instead.
1186 .TP
1187 .B -v
1188 Increases the verbosity of the output (can be specified multiple times).
1189 .TP
1190 .B -r
1191-If the rpcsec_gss library supports setting debug level,
1192+If the RPCSEC_GSS library supports setting debug level,
1193 increases the verbosity of the output (can be specified multiple times).
1194 .TP
1195-.B -R realm
1196+.BI "-R " realm
1197 Kerberos tickets from this
1198 .I realm
1199 will be preferred when scanning available credentials cache files to be
1200 used to create a context. By default, the default realm, as configured
1201 in the Kerberos configuration file, is preferred.
1202 .TP
1203-.B -t timeout
1204-Timeout, in seconds, for kernel gss contexts. This option allows you to force
1205+.BI "-t " timeout
1206+Timeout, in seconds, for kernel GSS contexts. This option allows you to force
1207 new kernel contexts to be negotiated after
1208 .I timeout
1209 seconds, which allows changing Kerberos tickets and identities frequently.
1210 The default is no explicit timeout, which means the kernel context will live
1211 the lifetime of the Kerberos service ticket used in its creation.
1212 .SH SEE ALSO
1213-.BR rpc.svcgssd(8)
1214+.BR rpc.svcgssd (8),
1215+.BR kerberos (1),
1216+.BR kinit (1),
1217+.BR krb5.conf (5)
1218 .SH AUTHORS
1219 .br
1220 Dug Song <dugsong@umich.edu>
1221
1222=== modified file '.pc/20-ticket-expired-error.patch/utils/gssd/gssd_proc.c'
1223--- .pc/20-ticket-expired-error.patch/utils/gssd/gssd_proc.c 2012-09-28 21:58:43 +0000
1224+++ .pc/20-ticket-expired-error.patch/utils/gssd/gssd_proc.c 2013-05-24 21:28:27 +0000
1225@@ -52,6 +52,7 @@
1226 #include <sys/socket.h>
1227 #include <arpa/inet.h>
1228 #include <sys/fsuid.h>
1229+#include <sys/resource.h>
1230
1231 #include <stdio.h>
1232 #include <stdlib.h>
1233@@ -66,6 +67,7 @@
1234 #include <errno.h>
1235 #include <gssapi/gssapi.h>
1236 #include <netdb.h>
1237+#include <ctype.h>
1238
1239 #include "gssd.h"
1240 #include "err_util.h"
1241@@ -104,7 +106,10 @@
1242
1243 struct pollfd * pollarray;
1244
1245-int pollsize; /* the size of pollaray (in pollfd's) */
1246+unsigned long pollsize; /* the size of pollaray (in pollfd's) */
1247+
1248+/* Avoid DNS reverse lookups on server names */
1249+int avoid_dns = 1;
1250
1251 /*
1252 * convert a presentation address string to a sockaddr_storage struct. Returns
1253@@ -164,12 +169,31 @@
1254 * convert a sockaddr to a hostname
1255 */
1256 static char *
1257-sockaddr_to_hostname(const struct sockaddr *sa, const char *addr)
1258+get_servername(const char *name, const struct sockaddr *sa, const char *addr)
1259 {
1260 socklen_t addrlen;
1261 int err;
1262- char *hostname;
1263+ char *hostname;
1264 char hbuf[NI_MAXHOST];
1265+ unsigned char buf[sizeof(struct in6_addr)];
1266+ int servername = 0;
1267+
1268+ if (avoid_dns) {
1269+ /*
1270+ * Determine if this is a server name, or an IP address.
1271+ * If it is an IP address, do the DNS lookup otherwise
1272+ * skip the DNS lookup.
1273+ */
1274+ servername = 0;
1275+ if (strchr(name, '.') && inet_pton(AF_INET, name, buf) == 1)
1276+ servername = 1; /* IPv4 */
1277+ else if (strchr(name, ':') && inet_pton(AF_INET6, name, buf) == 1)
1278+ servername = 1; /* or IPv6 */
1279+
1280+ if (servername) {
1281+ return strdup(name);
1282+ }
1283+ }
1284
1285 switch (sa->sa_family) {
1286 case AF_INET:
1287@@ -207,7 +231,7 @@
1288 struct sockaddr *addr) {
1289 #define INFOBUFLEN 256
1290 char buf[INFOBUFLEN + 1];
1291- static char dummy[128];
1292+ static char server[128];
1293 int nbytes;
1294 static char service[128];
1295 static char address[128];
1296@@ -235,7 +259,7 @@
1297 "service: %127s %15s version %15s\n"
1298 "address: %127s\n"
1299 "protocol: %15s\n",
1300- dummy,
1301+ server,
1302 service, program, version,
1303 address,
1304 protoname);
1305@@ -250,25 +274,14 @@
1306 if ((p = strstr(buf, "port")) != NULL)
1307 sscanf(p, "port: %127s\n", port);
1308
1309- /* check service, program, and version */
1310- if (memcmp(service, "nfs", 3) != 0)
1311- return -1;
1312+ /* get program, and version numbers */
1313 *prog = atoi(program + 1); /* skip open paren */
1314 *vers = atoi(version);
1315
1316- if (strlen(service) == 3 ) {
1317- if ((*prog != 100003) || ((*vers != 2) && (*vers != 3) &&
1318- (*vers != 4)))
1319- goto fail;
1320- } else if (memcmp(service, "nfs4_cb", 7) == 0) {
1321- if (*vers != 1)
1322- goto fail;
1323- }
1324-
1325 if (!addrstr_to_sockaddr(addr, address, port))
1326 goto fail;
1327
1328- *servername = sockaddr_to_hostname(addr, address);
1329+ *servername = get_servername(server, addr, address);
1330 if (*servername == NULL)
1331 goto fail;
1332
1333@@ -340,6 +353,25 @@
1334 char gname[PATH_MAX];
1335 char info_file_name[PATH_MAX];
1336
1337+ if (clp->gssd_close_me) {
1338+ printerr(2, "Closing 'gssd' pipe for %s\n", clp->dirname);
1339+ close(clp->gssd_fd);
1340+ memset(&pollarray[clp->gssd_poll_index], 0,
1341+ sizeof(struct pollfd));
1342+ clp->gssd_fd = -1;
1343+ clp->gssd_poll_index = -1;
1344+ clp->gssd_close_me = 0;
1345+ }
1346+ if (clp->krb5_close_me) {
1347+ printerr(2, "Closing 'krb5' pipe for %s\n", clp->dirname);
1348+ close(clp->krb5_fd);
1349+ memset(&pollarray[clp->krb5_poll_index], 0,
1350+ sizeof(struct pollfd));
1351+ clp->krb5_fd = -1;
1352+ clp->krb5_poll_index = -1;
1353+ clp->krb5_close_me = 0;
1354+ }
1355+
1356 if (clp->gssd_fd == -1) {
1357 snprintf(gname, sizeof(gname), "%s/gssd", clp->dirname);
1358 clp->gssd_fd = open(gname, O_RDWR);
1359@@ -379,10 +411,10 @@
1360 static int
1361 get_poll_index(int *ind)
1362 {
1363- int i;
1364+ unsigned int i;
1365
1366 *ind = -1;
1367- for (i=0; i<FD_ALLOC_BLOCK; i++) {
1368+ for (i=0; i<pollsize; i++) {
1369 if (pollarray[i].events == 0) {
1370 *ind = i;
1371 break;
1372@@ -464,9 +496,13 @@
1373 void
1374 init_client_list(void)
1375 {
1376+ struct rlimit rlim;
1377 TAILQ_INIT(&clnt_list);
1378 /* Eventually plan to grow/shrink poll array: */
1379 pollsize = FD_ALLOC_BLOCK;
1380+ if (getrlimit(RLIMIT_NOFILE, &rlim) == 0 &&
1381+ rlim.rlim_cur != RLIM_INFINITY)
1382+ pollsize = rlim.rlim_cur;
1383 pollarray = calloc(pollsize, sizeof(struct pollfd));
1384 }
1385
1386@@ -548,9 +584,8 @@
1387
1388 update_old_clients(namelist, j, pipe_name);
1389 for (i=0; i < j; i++) {
1390- if (i < FD_ALLOC_BLOCK
1391- && !strncmp(namelist[i]->d_name, "clnt", 4)
1392- && !find_client(namelist[i]->d_name, pipe_name))
1393+ if (!strncmp(namelist[i]->d_name, "clnt", 4)
1394+ && !find_client(namelist[i]->d_name, pipe_name))
1395 process_clnt_dir(namelist[i]->d_name, pipe_name);
1396 free(namelist[i]);
1397 }
1398@@ -640,19 +675,22 @@
1399
1400 static int
1401 do_downcall(int k5_fd, uid_t uid, struct authgss_private_data *pd,
1402- gss_buffer_desc *context_token)
1403+ gss_buffer_desc *context_token, OM_uint32 lifetime_rec)
1404 {
1405 char *buf = NULL, *p = NULL, *end = NULL;
1406 unsigned int timeout = context_timeout;
1407 unsigned int buf_size = 0;
1408
1409- printerr(1, "doing downcall\n");
1410+ printerr(1, "doing downcall lifetime_rec %u\n", lifetime_rec);
1411 buf_size = sizeof(uid) + sizeof(timeout) + sizeof(pd->pd_seq_win) +
1412 sizeof(pd->pd_ctx_hndl.length) + pd->pd_ctx_hndl.length +
1413 sizeof(context_token->length) + context_token->length;
1414 p = buf = malloc(buf_size);
1415 end = buf + buf_size;
1416
1417+ /* context_timeout set by -t option overrides context lifetime */
1418+ if (timeout == 0)
1419+ timeout = lifetime_rec;
1420 if (WRITE_BYTES(&p, end, uid)) goto out_err;
1421 if (WRITE_BYTES(&p, end, timeout)) goto out_err;
1422 if (WRITE_BYTES(&p, end, pd->pd_seq_win)) goto out_err;
1423@@ -693,7 +731,7 @@
1424
1425 /*
1426 * If the port isn't already set, do an rpcbind query to the remote server
1427- * using the program and version and get the port.
1428+ * using the program and version and get the port.
1429 *
1430 * Newer kernels send the value of the port= mount option in the "info"
1431 * file for the upcall or '0' for NFSv2/3. For NFSv4 it sends the value
1432@@ -780,11 +818,13 @@
1433 * Create an RPC connection and establish an authenticated
1434 * gss context with a server.
1435 */
1436-int create_auth_rpc_client(struct clnt_info *clp,
1437- CLIENT **clnt_return,
1438- AUTH **auth_return,
1439- uid_t uid,
1440- int authtype)
1441+static int
1442+create_auth_rpc_client(struct clnt_info *clp,
1443+ CLIENT **clnt_return,
1444+ AUTH **auth_return,
1445+ uid_t uid,
1446+ int authtype,
1447+ gss_cred_id_t cred)
1448 {
1449 CLIENT *rpc_clnt = NULL;
1450 struct rpc_gss_sec sec;
1451@@ -810,7 +850,7 @@
1452
1453 sec.qop = GSS_C_QOP_DEFAULT;
1454 sec.svc = RPCSEC_GSS_SVC_NONE;
1455- sec.cred = GSS_C_NO_CREDENTIAL;
1456+ sec.cred = cred;
1457 sec.req_flags = 0;
1458 if (authtype == AUTHTYPE_KRB5) {
1459 sec.mech = (gss_OID)&krb5oid;
1460@@ -918,23 +958,6 @@
1461 goto out;
1462 }
1463
1464-static char *
1465-user_cachedir(char *dirname, uid_t uid)
1466-{
1467- struct passwd *pw;
1468- char *ptr;
1469-
1470- if ((pw = getpwuid(uid)) == NULL) {
1471- printerr(0, "user_cachedir: Failed to find '%d' uid"
1472- " for cache directory\n");
1473- return NULL;
1474- }
1475- ptr = malloc(strlen(dirname)+strlen(pw->pw_name)+2);
1476- if (ptr)
1477- sprintf(ptr, "%s/%s", dirname, pw->pw_name);
1478-
1479- return ptr;
1480-}
1481 /*
1482 * this code uses the userland rpcsec gss library to create a krb5
1483 * context on behalf of the kernel
1484@@ -949,18 +972,14 @@
1485 gss_buffer_desc token;
1486 char **credlist = NULL;
1487 char **ccname;
1488- char **dirname, *dir, *userdir;
1489+ char **dirname;
1490 int create_resp = -1;
1491 int err, downcall_err = -EACCES;
1492+ gss_cred_id_t gss_cred;
1493+ OM_uint32 maj_stat, min_stat, lifetime_rec;
1494
1495 printerr(2, "handling krb5 upcall (%s)\n", clp->dirname);
1496
1497- if (tgtname) {
1498- if (clp->servicename) {
1499- free(clp->servicename);
1500- clp->servicename = strdup(tgtname);
1501- }
1502- }
1503 token.length = 0;
1504 token.value = NULL;
1505 memset(&pd, 0, sizeof(struct authgss_private_data));
1506@@ -991,30 +1010,20 @@
1507 if (uid != 0 || (uid == 0 && root_uses_machine_creds == 0 &&
1508 service == NULL)) {
1509 /* Tell krb5 gss which credentials cache to use */
1510- for (dirname = ccachesearch; *dirname != NULL; dirname++) {
1511- /* See if the user name is needed */
1512- if (strncmp(*dirname, GSSD_USER_CRED_DIR,
1513- strlen(GSSD_USER_CRED_DIR)) == 0) {
1514- userdir = user_cachedir(*dirname, uid);
1515- if (userdir == NULL)
1516- continue;
1517- dir = userdir;
1518- } else
1519- dir = *dirname;
1520-
1521- err = gssd_setup_krb5_user_gss_ccache(uid, clp->servername, dir);
1522-
1523- if (userdir) {
1524- free(userdir);
1525- userdir = NULL;
1526- }
1527+ /* Try first to acquire credentials directly via GSSAPI */
1528+ err = gssd_acquire_user_cred(uid, &gss_cred);
1529+ if (!err)
1530+ create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid,
1531+ AUTHTYPE_KRB5, gss_cred);
1532+ /* if create_auth_rplc_client fails try the traditional method of
1533+ * trolling for credentials */
1534+ for (dirname = ccachesearch; create_resp != 0 && *dirname != NULL; dirname++) {
1535+ err = gssd_setup_krb5_user_gss_ccache(uid, clp->servername, *dirname);
1536 if (err == -EKEYEXPIRED)
1537 downcall_err = -EKEYEXPIRED;
1538 else if (!err)
1539 create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid,
1540- AUTHTYPE_KRB5);
1541- if (create_resp == 0)
1542- break;
1543+ AUTHTYPE_KRB5, GSS_C_NO_CREDENTIAL);
1544 }
1545 }
1546 if (create_resp != 0) {
1547@@ -1024,7 +1033,8 @@
1548 int success = 0;
1549 do {
1550 gssd_refresh_krb5_machine_credential(clp->servername,
1551- NULL, service);
1552+ NULL, service,
1553+ tgtname);
1554 /*
1555 * Get a list of credential cache names and try each
1556 * of them until one works or we've tried them all
1557@@ -1033,22 +1043,23 @@
1558 printerr(0, "ERROR: No credentials found "
1559 "for connection to server %s\n",
1560 clp->servername);
1561- goto out_return_error;
1562+ goto out_return_error;
1563 }
1564 for (ccname = credlist; ccname && *ccname; ccname++) {
1565 gssd_setup_krb5_machine_gss_ccache(*ccname);
1566 if ((create_auth_rpc_client(clp, &rpc_clnt,
1567 &auth, uid,
1568- AUTHTYPE_KRB5)) == 0) {
1569+ AUTHTYPE_KRB5,
1570+ GSS_C_NO_CREDENTIAL)) == 0) {
1571 /* Success! */
1572 success++;
1573 break;
1574- }
1575+ }
1576 printerr(2, "WARNING: Failed to create machine krb5 context "
1577 "with credentials cache %s for server %s\n",
1578 *ccname, clp->servername);
1579 }
1580- gssd_free_krb5_machine_cred_list(credlist);
1581+ gssd_free_krb5_machine_cred_list(credlist);
1582 if (!success) {
1583 if(nocache == 0) {
1584 nocache++;
1585@@ -1077,20 +1088,29 @@
1586 goto out_return_error;
1587 }
1588
1589- if (serialize_context_for_kernel(pd.pd_ctx, &token, &krb5oid, NULL)) {
1590+ /* Grab the context lifetime to pass to the kernel. lifetime_rec
1591+ * is set to zero on error */
1592+ maj_stat = gss_inquire_context(&min_stat, pd.pd_ctx, NULL, NULL,
1593+ &lifetime_rec, NULL, NULL, NULL, NULL);
1594+
1595+ if (maj_stat)
1596+ printerr(1, "WARNING: Failed to inquire context for lifetme "
1597+ "maj_stat %u\n", maj_stat);
1598+
1599+ if (serialize_context_for_kernel(&pd.pd_ctx, &token, &krb5oid, NULL)) {
1600 printerr(0, "WARNING: Failed to serialize krb5 context for "
1601 "user with uid %d for server %s\n",
1602 uid, clp->servername);
1603 goto out_return_error;
1604 }
1605
1606- do_downcall(fd, uid, &pd, &token);
1607+ do_downcall(fd, uid, &pd, &token, lifetime_rec);
1608
1609 out:
1610 if (token.value)
1611 free(token.value);
1612-#ifndef HAVE_LIBTIRPC
1613- if (pd.pd_ctx_hndl.length != 0)
1614+#ifdef HAVE_AUTHGSS_FREE_PRIVATE_DATA
1615+ if (pd.pd_ctx_hndl.length != 0 || pd.pd_ctx != 0)
1616 authgss_free_private_data(&pd);
1617 #endif
1618 if (auth)
1619@@ -1115,7 +1135,7 @@
1620 return;
1621 }
1622
1623- return process_krb5_upcall(clp, uid, clp->krb5_fd, NULL, NULL);
1624+ process_krb5_upcall(clp, uid, clp->krb5_fd, NULL, NULL);
1625 }
1626
1627 void
1628@@ -1236,6 +1256,6 @@
1629 free(enctypes);
1630 free(target);
1631 free(service);
1632- return;
1633+ return;
1634 }
1635
1636
1637=== modified file '.pc/applied-patches'
1638--- .pc/applied-patches 2012-09-28 21:58:43 +0000
1639+++ .pc/applied-patches 2013-05-24 21:28:27 +0000
1640@@ -4,6 +4,6 @@
1641 11-532048-reduce-verbosity.patch
1642 16-mount.nfs.man-update-distinction-between-fstype.patch
1643 17-multiarch-kerberos-paths.patch
1644-18-osd_login-sbindir.patch
1645 19-iscsiadm-path.patch
1646 20-ticket-expired-error.patch
1647+20-remove-autogenerated-man.patch
1648
1649=== removed file 'ChangeLog'
1650--- ChangeLog 2011-07-09 16:28:32 +0000
1651+++ ChangeLog 1970-01-01 00:00:00 +0000
1652@@ -1,1527 +0,0 @@
1653-commit 684cf4a5e0e84a1367690d7ecf4882cbdf4f3228
1654-Author: Prem Karat <prem.karat@linux.vnet.ibm.com>
1655-Date: Thu Jun 30 07:29:20 2011 -0400
1656-
1657- mount.nfs: Fix for the bug in v1.2.4 that breaks mount.nfs
1658-
1659- commit 30ebf047 failed to include these changes that breaks mount.nfs.
1660- mount.nfs will continue to work fine with these changes
1661-
1662- Signed-off-by: Steve Dickson <steved@redhat.com>
1663-
1664-commit 057d2add27d1e05fed3ae7206ee043b6c1fda45a
1665-Author: NeilBrown <neilb@suse.de>
1666-Date: Tue Jun 28 13:24:33 2011 -0400
1667-
1668- Do not compile unnecessary files when the libmount code is enable
1669-
1670- Signed-off-by: Steve Dickson <steved@redhat.com>
1671-
1672-commit 30ebf04700654deddbf5f57d95e84ec69cea8610
1673-Author: Prem Karat <prem.karat@linux.vnet.ibm.com>
1674-Date: Tue Jun 28 11:53:40 2011 -0400
1675-
1676- mount.nfs: Don't hard code source and destination
1677-
1678- Currently souce and destination parameters should be passed as first and
1679- second paramter while using mount.nfs. This patch allows them to be passed
1680- anywhere while mounting.
1681-
1682- Current functionality is
1683- mount.nfs source destn -o <options>
1684- This patch will allow to do this
1685- mount.nfs -o <options> source destn
1686- or
1687- mount.nfs -o <options> source -o <options> destn
1688-
1689- Signed-off-by: Prem Karat <prem.karat@linux.vnet.ibm.com>
1690- Signed-off-by: Steve Dickson <steved@redhat.com>
1691-
1692-commit b3e190c4adfc9ec47567c968bd000d282d07b05e
1693-Author: NeilBrown <neilb@suse.de>
1694-Date: Tue Jun 28 11:36:31 2011 -0400
1695-
1696- mount: improve signal management when locking mtab
1697-
1698- As mount.nfs can run setuid it must be careful about how the user can
1699- interact with in. In particular it needs to ensure it does not
1700- respond badly to any signals that the user might be able to generate.
1701-
1702- This is particularly an issue while updating /etc/mtab (when that is
1703- not linked to /proc/mounts). If the user can generate a signal which
1704- kills mount.nfs while /etc/mtab is locked, then it will leave the file
1705- locked, and could possibly corrupt mtab (particularly if 'ulimit 1'
1706- was previously issued).
1707-
1708- Currently lock_mtab does set some handlers for signals, but not
1709- enough. It arranges for every signal up to (but not including)
1710- SIGCHLD to cause mount.nfs to unlock mdadm promptly exit ... even if
1711- the default behaviour would be to ignore the signal. SIGALRM is
1712- handled specially, and signals after SIGCHLD are left with their
1713- default behaviour. This includes for example SIGXFSZ which can be
1714- generated by the user running "ulimit 1".
1715-
1716- So: change this so that some signals are left unchanged, SIGALRM is
1717- handled as required, and all signals that the user can generate are
1718- explicitly ignored.
1719-
1720- The remainder still cause mount.nfs to print a message, unlock mtab, and
1721- exit.
1722-
1723- Signed-off-by: NeilBrown <neilb@suse.de>
1724- Signed-off-by: Steve Dickson <steved@redhat.com>
1725-
1726-commit a99b7846e2abec5e26ab6b764b921d79559e0a0f
1727-Author: J. Bruce Fields <bfields@redhat.com>
1728-Date: Mon Jun 27 12:31:07 2011 -0400
1729-
1730- mountd: move fsidtype-specific code to helpers
1731-
1732- Now we can move these big switch statements into helper functions.
1733-
1734- Signed-off-by: J. Bruce Fields <bfields@redhat.com>
1735- Signed-off-by: Steve Dickson <steved@redhat.com>
1736-
1737-commit e6559fd0b7b63f5d152d33d598dc74d78df30ecb
1738-Author: J. Bruce Fields <bfields@redhat.com>
1739-Date: Mon Jun 27 12:30:36 2011 -0400
1740-
1741- mountd: gather fsid information into one struct
1742-
1743- A large part of nfsd_fh() is concerned with extracting
1744- fsid-type-specific information from the fsid, then matching that
1745- information with information from the export list and the filesystem.
1746-
1747- Moving all that information into one struct will allow some further
1748- simplifications.
1749-
1750- Signed-off-by: J. Bruce Fields <bfields@redhat.com>
1751- Signed-off-by: Steve Dickson <steved@redhat.com>
1752-
1753-commit 13a0a61d037f2cc09e7997a96ce5822b9317883b
1754-Author: J. Bruce Fields <bfields@redhat.com>
1755-Date: Mon Jun 27 12:29:51 2011 -0400
1756-
1757- mountd: prefer explicit subexports over crossmnt parents
1758-
1759- If a parent is exported with crossmnt, and if a child is also explicitly
1760- exported, then both exports could potentially produce matches in this
1761- loop; that isn't a bug.
1762-
1763- Instead of warning and ignoring the second match we find, we should
1764- instead prefer whichever export is deeper in the tree, so that
1765- children's options can override those of their parents.
1766-
1767- Reported-by: Olga Kornievskaia <aglo@citi.umich.edu>
1768- Signed-off-by: J. Bruce Fields <bfields@redhat.com>
1769- Signed-off-by: Steve Dickson <steved@redhat.com>
1770-
1771-commit f8d26c1db9a260597828685c7f62e1b29e78285f
1772-Author: Jeff Layton <jlayton@redhat.com>
1773-Date: Wed Jun 22 15:52:55 2011 -0400
1774-
1775- manpage: add section on character class matches to exports(5)
1776-
1777- Signed-off-by: Jeff Layton <jlayton@redhat.com>
1778- Signed-off-by: Steve Dickson <steved@redhat.com>
1779-
1780-commit cb6676aea5bcfcbeaf868e53177eff51f4efe9a8
1781-Author: James Pearson <james-p@moving-picture.com>
1782-Date: Wed Jun 22 15:51:47 2011 -0400
1783-
1784- nfs-utils: remove possibly false statement from exports.man
1785-
1786- A very minor change suggested by J. Bruce Fields <bfields@fieldses.org>
1787- to remove the statement that exporting to a single host or IP address is
1788- the "most common format" - as it probably isn't.
1789-
1790- Signed-off-by: James Pearson <james-p@moving-picture.com>
1791- Signed-off-by: Steve Dickson <steved@redhat.com>
1792-
1793-commit 7d71ff8e3825a7f8c2d5c9b5b9344e95e7aa1392
1794-Author: Jeff Layton <jlayton@redhat.com>
1795-Date: Wed Jun 22 15:51:02 2011 -0400
1796-
1797- manpage: add info about IPv6 configuration to exports(5)
1798-
1799- The parts of the exports(5) manpage that discuss IP addressing neglect
1800- IPv6 configuration. Update to include info on how to export to IPv6
1801- subnets and addresses, and add a line demonstrating that to the EXAMPLE
1802- section.
1803-
1804- Signed-off-by: Jeff Layton <jlayton@redhat.com>
1805- Signed-off-by: Steve Dickson <steved@redhat.com>
1806-
1807-commit 545ea1098089d6396d5a70111ec231c4de967faa
1808-Author: Benny Halevy <benny@tonian.com>
1809-Date: Wed Jun 22 15:44:17 2011 -0400
1810-
1811- nfsstat: reorder nfs4 stats for 2.6.39
1812-
1813- Signed-off-by: Benny Halevy <benny@tonian.com>
1814- Signed-off-by: Steve Dickson <steved@redhat.com>
1815-
1816-commit c7ce7a4674ad446bee4dd3baf90155ce6b216816
1817-Author: Mi Jinlong <mijinlong@cn.fujitsu.com>
1818-Date: Wed Jun 22 15:41:27 2011 -0400
1819-
1820- libexport.a: fix using bad index for loop at cltsetup()
1821-
1822- In cltsetup(), when checking the address, use clp's naddr for index,
1823- instead of cltarg's naddr, which it's always zero there.
1824-
1825- Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
1826- Signed-off-by: Steve Dickson <steved@redhat.com>
1827-
1828-commit b50ad13298b3e9519a9bdecb8c146c9ecf39cef8
1829-Author: Jeff Layton <jlayton@redhat.com>
1830-Date: Wed Jun 22 14:51:38 2011 -0400
1831-
1832- nfs: fix host_reliable_addrinfo
1833-
1834- According to Neil Brown:
1835-
1836- The point of the word 'reliable' is to check that the name we get
1837- really does belong to the host in question - ie that both the
1838- forward and reverse maps agree.
1839-
1840- But the new code doesn't do that check at all. Rather it simply
1841- maps the address to a name, then discards the address and maps the
1842- name back to a list of addresses and uses that list of addresses as
1843- "where the request came from" for permission checking.
1844-
1845- This bug is exploitable via the following scenario and could allow an
1846- attacker access to data that they shouldn't be able to access.
1847-
1848- Suppose you export a filesystem to some subnet or FQDN and also to a
1849- wildcard or netgroup, and I know the details of this (maybe
1850- showmount -e tells me) Suppose further that I can get IP packets to
1851- your server..
1852-
1853- Then I create a reverse mapping for my ipaddress to a domain that I
1854- own, say "black.hat.org", and a forward mapping from that domain to
1855- my IP address, and one of your IP addresses.
1856-
1857- Then I try to mount your filesystem. The IP address gets correctly
1858- mapped to "black.hat.org" and then mapped to both my IP address and
1859- your IP address.
1860-
1861- Then you search through all of your exports and find that one of the
1862- addresses: yours - is allowed to access the filesystem.
1863-
1864- So you create an export based on the addrinfo you have which allows
1865- my IP address the same access as your IP address.
1866-
1867- Fix this by instead using the forward lookup of the hostname just to
1868- verify that the original address is in the list. Then do a numeric
1869- lookup using the address and stick the hostname in the ai_canonname.
1870-
1871- Reviewed-by: NeilBrown <neilb@suse.de>
1872- Signed-off-by: Jeff Layton <jlayton@redhat.com>
1873- Signed-off-by: Steve Dickson <steved@redhat.com>
1874-
1875-commit 7235a2164aabfd8dba1f7e1577047bda45053db0
1876-Author: James Pearson <james-p@moving-picture.com>
1877-Date: Tue Jun 7 16:25:13 2011 -0400
1878-
1879- exports: Clearly Defining Exports Priorities
1880-
1881- Added some verbiage to the exports(5) man page
1882- that clearly explains the precedence around
1883- how exports will work with regard to netgroups.
1884-
1885- Signed-off-by: Steve Dickson <steved@redhat.com>
1886-
1887-commit a36f2437caffb23c68fdc0900544d59198bd52b6
1888-Author: Neil Brown <neilb@suse.de>
1889-Date: Tue Jun 7 13:18:55 2011 -0400
1890-
1891- Document "-n" for svcgssd
1892-
1893- The svcgssd man page doesn't mention the "-n" flag.
1894-
1895- Signed-off-by: NeilBrown <neilb@suse.de>
1896- Signed-off-by: Steve Dickson <steved@redhat.com>
1897-
1898-commit 40aed2c3fb5164195a9975ae7f15ebd4b992839d
1899-Author: Pavel Shilovsky <piastry@etersoft.ru>
1900-Date: Tue Jun 7 13:18:13 2011 -0400
1901-
1902- mountd: Fix missing varialble assignment in auth_unix_gid
1903-
1904- When we get into auth_unix_gid at the second time, groups_len
1905- is not 0 and ngroups variable leave as 0. Then we use ngroups
1906- in getgrouplist that fails in this case. This patch fixes it.
1907-
1908- Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
1909- Signed-off-by: Steve Dickson <steved@redhat.com>
1910-
1911-commit 8935933dedcd820c2fb3dddff8b79fd5841dc217
1912-Author: Benny Halevy <bhalevy@panasas.com>
1913-Date: Mon May 23 08:37:17 2011 -0400
1914-
1915- nfsstat: reorder nfs4 stats for 2.6.38 and up
1916-
1917- match order in 2.6.38, 2.6.39 (-rc3) and development tree
1918- while at it, get rid of obsolete ds_write and ds_commit
1919-
1920- Signed-off-by: Benny Halevy <bhalevy@panasas.com>
1921- Signed-off-by: Steve Dickson <steved@redhat.com>
1922-
1923-commit 27dcd8a775024160e741cce53e4a402eaac3501d
1924-Author: NeilBrown <neilb@suse.de>
1925-Date: Mon May 23 08:23:51 2011 -0400
1926-
1927- supress socket error when address family is not supported
1928-
1929- From: Suresh Jayaraman <sjayaraman@suse.de>
1930-
1931- It was observed that when ipv6 module was not loaded and cannot be auto-loaded,
1932- when starting NFS server, the following error occurs:
1933- "rpc.nfsd: unable to create inet6 TCP socket: errno 97 (Address
1934- family not supported by protocol)"
1935-
1936- This is obviously a true message, but does not represent an "error" when ipv6
1937- is not enabled. Rather, it is an expected condition. As such, it can be
1938- confusing / misleading / distracting to display it in this scenario.
1939-
1940- This patch instead of throwing error when a socket call fails with
1941- EAFNOSUPPORT, makes it as a NOTICE.
1942-
1943- Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
1944- Signed-off-by: Neil Brown <neilb@suse.de>
1945- Signed-off-by: Steve Dickson <steved@redhat.com>
1946-
1947-commit 7a802337bfc92d0b30fe94dbd0fa231990a26161
1948-Author: NeilBrown <neilb@suse.de>
1949-Date: Mon May 23 08:19:57 2011 -0400
1950-
1951- Remove risk of nfs_addmntent corrupting mtab
1952-
1953- nfs_addmntent is used to append directly to /etc/mtab.
1954- If the write partially fail, e.g. due to RLIMIT_FSIZE,
1955- truncate back to original size and return an error.
1956-
1957- See also https://bugzilla.redhat.com/show_bug.cgi?id=697975
1958- (CVE-2011-1749) CVE-2011-1749 nfs-utils: mount.nfs fails to anticipate RLIMIT_FSIZE
1959-
1960- Signed-off-by: NeilBrown <neilb@suse.de>
1961- Signed-off-by: Steve Dickson <steved@redhat.com>
1962-
1963-commit 56f537535190d034039570bafd9a0de71b79b8f1
1964-Author: Ben Myers <bpm@sgi.com>
1965-Date: Mon May 23 08:07:00 2011 -0400
1966-
1967- exportfs: getexportent interprets -test-client- as default options
1968-
1969- With commit 1374c3861abdc66f3a1410e26cc85f86760b51dd Neil added a
1970- -test-client- export to test the exportability of filesystems when exportfs
1971- is run. When using the old cache controls (i.e. /proc/fs/nfsd is not
1972- mounted) exportfs will read /proc/fs/nfs/exports to process existing
1973- exports and find these test client entries. The dash at the beginning of
1974- -test-client- will be cause getexportent to look for default options in the
1975- rest of the string, which test-client- will not match:
1976-
1977- exportfs: /proc/fs/nfs/exports:1: unknown keyword "test-client-(rw"
1978-
1979- This patch resolves that problem (as Steve suggested) by not processing any
1980- default options if we are reading the list of existing exports from the
1981- kernel. Default options are converted to individual exports by exportfs so
1982- the kernel won't have any regardless.
1983-
1984- Signed-off-by: Ben Myers <bpm@sgi.com>
1985- Signed-off-by: Steve Dickson <steved@redhat.com>
1986-
1987-commit c8e802c036a3f0fcd4481dae8b3ec09fb71f4118
1988-Author: Jim Rees <rees@umich.edu>
1989-Date: Wed May 18 12:42:02 2011 -0400
1990-
1991- Removed compilation warnings from mountd/cache.c
1992-
1993- Commit 5604b35a6 introduced a number of missing initializer
1994- warnings that were missed. This patch removes those warnings.
1995-
1996- Signed-off-by: Steve Dickson <steved@redhat.com>
1997-
1998-commit 68f7938c85258a8c54b13169dcdeae61cc1bf286
1999-Author: Steve Dickson <steved@redhat.com>
2000-Date: Tue Apr 26 13:32:35 2011 -0400
2001-
2002- nfsstat: Output headings mislabled
2003-
2004- The badclnt and badauth headers were reversed
2005- when the server side rpc stats (-s -o rpc) were
2006- displayed.
2007-
2008- Signed-off-by: Steve Dickson <steved@redhat.com>
2009-
2010-commit 2e4a7e9b50a641dc8640a5dd911ee4a2f0b2c073
2011-Author: Steve Dickson <steved@redhat.com>
2012-Date: Tue Apr 19 12:31:30 2011 -0400
2013-
2014- rpc.svcgssd: Segmentation fault on error
2015-
2016- Commit 544ed73d introduced a regression that caused
2017- rpc.svcgssd to seg fault on "Wrong principal in request"
2018- errors in gss_accept_sec_context()
2019-
2020- Signed-off-by: Steve Dickson <steved@redhat.com>
2021-
2022-commit 5604b35a61e22930873ffc4e9971002f578e7978
2023-Author: Sean Finney <sean.finney@sonyericsson.com>
2024-Date: Tue Apr 19 11:04:35 2011 -0400
2025-
2026- nfs-utils: Increase the stdio file buffer size for procfs files
2027-
2028- Previously, when writing to /proc/net/rpc/*/channel, if a cache line
2029- were larger than the default buffer size (likely 1024 bytes), mountd
2030- and svcgssd would split writes into a number of buffer-sized writes.
2031- Each of these writes would get an EINVAL error back from the kernel
2032- procfs handle (it expects line-oriented input and does not account for
2033- multiple/split writes), and no cache update would occur.
2034-
2035- When such behavior occurs, NFS clients depending on mountd to finish
2036- the cache operation would block/hang, or receive EPERM, depending on
2037- the context of the operation. This is likely to happen if a user is a
2038- member of a large (~100-200) number of groups.
2039-
2040- Instead, every fopen() on the procfs files in question is followed by
2041- a call to setvbuf(), using a per-file dedicated buffer of
2042- RPC_CHAN_BUF_SIZE length.
2043-
2044- Really, mountd should not be using stdio-style buffered file operations
2045- on files in /proc to begin with. A better solution would be to use
2046- internally managed buffers and calls to write() instead of these stdio
2047- calls, but that would be a more extensive change; so this is proposed
2048- as a quick and not-so-dirty fix in the meantime.
2049-
2050- Signed-off-by: Sean Finney <sean.finney@sonyericsson.com>
2051- Signed-off-by: Steve Dickson <steved@redhat.com>
2052-
2053-commit 9274e94db85bac04e170414cb8e0f4be271cde90
2054-Author: Sean Finney <sean.finney@sonyericsson.com>
2055-Date: Tue Apr 19 11:05:47 2011 -0400
2056-
2057- mountd: Use a dynamic buffer for storing lists of gid's
2058-
2059- Previously, in auth_unix_gid, group lists were stored in an array of
2060- hard-coded length 100, and in the situation that the group lists for a
2061- particular call were too large, the array was swapped with a dynamically
2062- allocated/freed buffer. For environments where users are commonly in
2063- a large number of groups, this isn't an ideal approach.
2064-
2065- Instead, use malloc/realloc to grow the list on an as-needed basis.
2066-
2067- Signed-off-by: Sean Finney <sean.finney@sonyericsson.com>
2068- Signed-off-by: Steve Dickson <steved@redhat.com>
2069-
2070-commit a99269230a0e77e7bed4fa31c9547f0d61c7f206
2071-Author: Karel Zak <kzak@redhat.com>
2072-Date: Wed Apr 6 12:39:21 2011 -0400
2073-
2074- mount: add --enable-libmount-mount
2075-
2076- This patch allows to link mount.nfs with libmount from util-linux >=
2077- v2.19. The new libmount based code is enabled by CONFIG_LIBMOUNT and
2078- is stored in mount_libmount.c. The old code is not affected by this
2079- change.
2080-
2081- The libmount does not have officially stable API yet, so the
2082- --enable-libmount-mount is marked as experimental in the configure
2083- help output.
2084-
2085- The ./configure option is the same as we use in util-linux to enable
2086- support for libmount in mount(8).
2087-
2088- The addr= (and some other options necessary for remount/umount) are
2089- stored to /etc/mtab or to /dev/.mount/utab. The utab file is *private*
2090- libmount file. It's possible that some mount options (for example
2091- user=) will be moved to kernel, so the utab will not be necessary.
2092-
2093- About libmount:
2094-
2095- * supports systems without and with regular /etc/mtab
2096- * does not store VFS and FS mount options in userspace
2097- * manages user= option and evaluate permissions
2098- * parses VFS mount options and generate MS_* flags
2099- * parses /etc/{fstab,mtab}, /proc/mounts or /proc/self/mountinfo
2100- * long-term goal is to use the same code in all mount.<type> helpers
2101-
2102- Note, use
2103-
2104- LIBMOUNT_DEBUG=0xffff mount.nfs foo:/path /path
2105-
2106- to debug the library.
2107-
2108- On systems with util-linux v2.19 the findmnt(8) command uses libmount
2109- to list all/selected mount points:
2110-
2111- $ findmnt /path
2112- $ findmnt --mtab /path
2113-
2114- the --mtab appends userspace mount options (e.g. user=) to the output.
2115-
2116- CC: Chuck Lever <chuck.lever@oracle.com>
2117- Signed-off-by: Karel Zak <kzak@redhat.com>
2118- Signed-off-by: Steve Dickson <steved@redhat.com>
2119-
2120-commit c01e5ca6179b8f5b041605d9bbd75a0f76812d54
2121-Author: Karel Zak <kzak@redhat.com>
2122-Date: Wed Apr 6 11:36:40 2011 -0400
2123-
2124- mount: move generic functions to utils.c and network.c
2125-
2126- Move generic code that could be shared between standard mount.nfs and
2127- libmount version to utils.c and network.c.
2128-
2129- CC: Chuck Lever <chuck.lever@oracle.com>
2130- Signed-off-by: Karel Zak <kzak@redhat.com>
2131- Signed-off-by: Steve Dickson <steved@redhat.com>
2132-
2133-commit d6c1b35c6b40243bfd6fba2591c9f8f2653078c0
2134-Author: Kevin Coffman <kwc@citi.umich.edu>
2135-Date: Wed Apr 6 11:25:03 2011 -0400
2136-
2137- nfs-utils: Add support to svcgssd to limit the negotiated enctypes
2138-
2139- Recent versions of Kerberos libraries negotiate and use
2140- an "acceptor subkey". This negotiation does not consider
2141- that a service may have limited the encryption keys in its
2142- keytab. A patch (http://src.mit.edu/fisheye/changelog/krb5/?cs=24603)
2143- has been added to the MIT Kerberos code to allow an application
2144- to indicate that it wants to limit the encryption types negotiated.
2145- (This functionality has been available on the client/initiator
2146- side for a while. The new patch adds this support to the
2147- server/acceptor side.)
2148-
2149- This patch adds support to read a recently added nfsd
2150- proc file to determine the encryption types supported by
2151- the kernel and calls the function to limit encryption
2152- types negotiated for the acceptor subkey.
2153-
2154- Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
2155- Signed-off-by: Steve Dickson <steved@redhat.com>
2156-
2157-commit 73840ef610accf4cf667427bc64805377c0d8394
2158-Author: Chuck Lever <chuck.lever@oracle.com>
2159-Date: Wed Apr 6 10:53:57 2011 -0400
2160-
2161- exports: add a configurable time-to-live for the kernel cache entries
2162-
2163- From: Trond Myklebust <Trond.Myklebust@netapp.com>
2164-
2165- The fedfs ldap server will specify a ttl for its entries.
2166-
2167- Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2168-
2169- This is a refactoring change only. There should be no change in
2170- behavior.
2171-
2172- Original patch had updates to utils/mountd/junctions.c, which no
2173- longer exists. These are not included here.
2174-
2175- Create a macro for the default cache TTL, which is used in several
2176- places besides the export cache.
2177-
2178- Make e_ttl unsigned.
2179-
2180- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2181- Signed-off-by: Steve Dickson <steved@redhat.com>
2182-
2183-commit 38e4c685410885a6d464ddd44eff4fd5e7f8459f
2184-Author: Chuck Lever <chuck.lever@oracle.com>
2185-Date: Wed Apr 6 10:49:52 2011 -0400
2186-
2187- statd: Remove vestigial "-w" option from man page synopsis
2188-
2189- The synopsis of rpc.statd in its man page lists "-w" as a valid
2190- option. There is currently no support in the source code for a "-w"
2191- option.
2192-
2193- BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=199
2194-
2195- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2196- Signed-off-by: Steve Dickson <steved@redhat.com>
2197-
2198-commit b57cd77c13831051ad974ae027d96cd88a8d0c59
2199-Author: Chuck Lever <chuck.lever@oracle.com>
2200-Date: Wed Apr 6 10:48:38 2011 -0400
2201-
2202- mount.nfs: Don't leak socket in nfs_ca_sockname()
2203-
2204- Ensure the test socket is always closed before nfs_ca_sockname()
2205- returns. Otherwise it's orphaned.
2206-
2207- BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=197
2208-
2209- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2210- Signed-off-by: Steve Dickson <steved@redhat.com>
2211-
2212-commit 502eef09d8050ffb87d394397c2780e1ef042d68
2213-Author: Steve Dickson <steved@redhat.com>
2214-Date: Wed Apr 6 10:46:06 2011 -0400
2215-
2216- Removed a warning from v4root.c
2217-
2218- v4root.c:176:9: warning: variable 'ret' set but not used
2219-
2220- Signed-off-by: Steve Dickson <steved@redhat.com>
2221-
2222-commit c2fa189a0467c25666f014cf9ff2576a9f54d682
2223-Author: Steve Dickson <steved@redhat.com>
2224-Date: Wed Apr 6 10:39:10 2011 -0400
2225-
2226- Removed a warning from exportfs.c
2227-
2228- exportfs.c:280:29: warning: 'exp' may be used uninitialized in this function
2229-
2230- Signed-off-by: Steve Dickson <steved@redhat.com>
2231-
2232-commit b98ae9df8c4904289c9390288325058b24caa423
2233-Author: Steve Dickson <steved@redhat.com>
2234-Date: Wed Apr 6 10:36:30 2011 -0400
2235-
2236- Removed a warning from conffile.c
2237-
2238- conffile.c:258:19: warning: 'j' may be used uninitialized in this function
2239-
2240- Signed-off-by: Steve Dickson <steved@redhat.com>
2241-
2242-commit 012e1a4bf2a002e8cd4d5be3478bfa20a91cbfed
2243-Author: Masatake YAMATO <yamato@redhat.com>
2244-Date: Mon Mar 7 08:36:19 2011 -0500
2245-
2246- Update man pages for /etc/exports.d
2247-
2248- Man page updates for /etc/exports.d.
2249-
2250- Signed-off-by: Masatake YAMATO <yamato@redhat.com>
2251- Signed-off-by: Steve Dickson <steved@redhat.com>
2252-
2253-commit c7427b57e2be8ef0d57ad0618d4590c062b130f5
2254-Author: Masatake YAMATO <yamato@redhat.com>
2255-Date: Mon Mar 7 08:18:51 2011 -0500
2256-
2257- Read /etc/exports.d/*.export as extra export files
2258-
2259- This patch adding a capability to read /etc/exports.d/*.exports as
2260- extra export files to exportfs.
2261-
2262- If one wants to add or remove an export entry in a script, currently
2263- one may have to use sed or something tool for adding or removing the
2264- line for the entry in /etc/exports file.
2265-
2266- With the patch, adding and removing an entry from a script is much
2267- easier.
2268- cat<<EOF... or mv can be used for adding. rm can be used for removing.
2269-
2270- Signed-off-by: Masatake YAMATO <yamato@redhat.com>
2271- Signed-off-by: Steve Dickson <steved@redhat.com>
2272-
2273-commit edb9b7f2ab9806afb9af31eabeb505fe454c51df
2274-Author: Steve Dickson <steved@redhat.com>
2275-Date: Sat Mar 5 16:17:01 2011 -0500
2276-
2277- Cleaned up a warning in rpcdispatch.c
2278-
2279- rpcdispatch.c:40:20: warning: comparison between signed and unsigned
2280- integer expressions
2281-
2282- Signed-off-by: Steve Dickson <steved@redhat.com>
2283-
2284-commit 930323817b61877d61fb8ef57229013daa2e6091
2285-Author: Steve Dickson <steved@redhat.com>
2286-Date: Sat Mar 5 16:13:01 2011 -0500
2287-
2288- mount: Remove MOUNT_CONFIG warnings
2289-
2290- The following changes are needed to remove compile warnings when
2291- MOUNT_CONFIG is not defined
2292-
2293- Signed-off-by: Steve Dickson <steved@redhat.com>
2294-
2295-commit 3ef3dc8f1e87ba7a6eaa3c2a6965aff6c80ba414
2296-Author: Chuck Lever <chuck.lever@oracle.com>
2297-Date: Thu Mar 3 17:26:33 2011 -0500
2298-
2299- mount: Recognize zero as a valid value for the port= option
2300-
2301- While zero is not a valid IP port number, zero does represent a valid
2302- value for "port=". It means "query rpcbind to discover the actual
2303- non-zero port number to use". So the parsing functions that handle
2304- "port=" should not flag zero as an invalid value.
2305-
2306- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2307- Signed-off-by: Steve Dickson <steved@redhat.com>
2308-
2309-commit b3a4dbfb61dad59829f5191d727267b2ea45937a
2310-Author: Mi Jinlong <mijinlong@cn.fujitsu.com>
2311-Date: Wed Feb 9 11:29:42 2011 -0500
2312-
2313- Gssd: modify wrong err message at handle_gssd_upcall
2314-
2315- Modify wrong err message at handle_gssd_upcall when
2316- sscanf encryption types fail.
2317-
2318- Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
2319- Signed-off-by: Steve Dickson <steved@redhat.com>
2320-
2321-commit 45e4597bd570ed40221f51887cde7d7f096f55e7
2322-Author: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
2323-Date: Wed Feb 9 11:27:19 2011 -0500
2324-
2325- Support AD style kerberos automatically in rpc.gss
2326-
2327- An Active Directory KDC will only grant a TGT for UPNs, getting
2328- a TGT for SPNs is not possible:
2329-
2330- $ kinit -k host/ib5@ADS.ORCORP.CA
2331- kinit: Client not found in Kerberos database while getting initial
2332- credentials
2333-
2334- The correct thing to do for machine credentials is to get a TGT
2335- for the computer UPN <HOSTNAME>$@REALM:
2336- $ kinit -k IB5\$
2337- $ klist
2338- 12/22/10 11:43:47 12/22/10 21:43:47 krbtgt/ADS.ORCORP.CA@ADS.ORCORP.CA
2339-
2340- Samba automatically creates /etc/krb5.keytab entry for the computer UPN,
2341- this patch makes gssd_refresh_krb5_machine_credential prefer it above
2342- the SPNs if it is present.
2343-
2344- The net result is that nfs client works automatically out of the box
2345- if samba has been used to setup kerberos via 'net ads join' 'net ads
2346- keytab create'
2347-
2348- Tested using Windows Server 2003 R2 as the AD server.
2349-
2350- Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
2351- Signed-off-by: Steve Dickson <steved@redhat.com>
2352-
2353-commit 730f6986f86873513fa021a450eb55ccd0f2fbff
2354-Author: Steve Dickson <steved@redhat.com>
2355-Date: Wed Jan 26 07:49:19 2011 -0500
2356-
2357- Fixed segfault in rpc.mountd
2358-
2359- A unallocated piece of memory, instead of a NULL point, was being
2360- used to initialize a ->next point in the mount link list which
2361- caused a segfault after a few remote accesses via the showmount
2362- command.
2363-
2364- Signed-off-by: Steve Dickson <steved@redhat.com>
2365-
2366-commit 544ed73d5ab27c1390833d5cf93b9585c151667d
2367-Author: Steve Dickson <steved@redhat.com>
2368-Date: Fri Jan 14 10:12:28 2011 -0500
2369-
2370- Improve debugging in svcgssd
2371-
2372- Added in gss_display_error() which translates the GSS error into the
2373- actual GSS macro name. Currently only the translation of these errors
2374- are logged. Since those translations are buried deep in the kerberos
2375- library code, having the actual GSS macro name makes it easier to
2376- follow the code.
2377-
2378- Moved the nfs4_init_name_mapping() call into main() so if debug is
2379- enabled the DNS name and realms will be logged during start up.
2380-
2381- Signed-off-by: Steve Dickson <steved@redhat.com>
2382-
2383-commit 57be18b9ab08148a1cc9d5af588119885720be8b
2384-Author: Mi Jinlong <mijinlong@cn.fujitsu.com>
2385-Date: Tue Jan 4 11:16:45 2011 -0500
2386-
2387- libnsm.a: modify return value to false from 0 at nsm_drop_privileges()
2388-
2389- At nsm_drop_privileges(), for improving readability, unify
2390- the return value.
2391-
2392- Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
2393- Signed-off-by: Steve Dickson <steved@redhat.com>
2394-
2395-commit 5c498280fd9353ded3ea169841079bdae23418e2
2396-Author: Chuck Lever <chuck.lever@oracle.com>
2397-Date: Mon Dec 13 14:50:45 2010 -0500
2398-
2399- libnsm.a: sm-notify sometimes ignores monitored hosts
2400-
2401- Monitored host information is stored in files under /var/lib/nfs.
2402- When visiting entries in the monitored hosts directory, libnsm.a
2403- examines the value of dirent.d_type to determine if an entry is a
2404- regular file.
2405-
2406- According to readdir(3), the d_type field is not supported by all
2407- file system types. My root file system happens to be one where d_type
2408- isn't supported. Typical installations that use an ext-derived root
2409- file system are not exposed to this issue, but those who use xfs, for
2410- instance, are.
2411-
2412- On such file systems, not only are remote peers not notified of
2413- reboots, but the NSM state number is never incremented. A statd warm
2414- restart would not re-monitor any hosts that were monitored before
2415- the restart.
2416-
2417- When writing support/nsm/file.c, I copied the use of d_type from the
2418- original statd code, so this has likely been an issue for some time.
2419-
2420- Replace the use of d_type in support/nsm/file.c with a call to
2421- lstat(2). It's extra code, but is guaranteed to work on all file
2422- system types.
2423-
2424- Note there is a usage of d_type in gssd. I'll let gssd and rpcpipefs
2425- experts decide whether that's worth changing.
2426-
2427- Fix for:
2428-
2429- https://bugzilla.linux-nfs.org/show_bug.cgi?id=193
2430-
2431- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2432- Signed-off-by: Steve Dickson <steved@redhat.com>
2433-
2434-commit 089df7c754d9ebab0a7b804f396626ac95fee2e6
2435-Author: Chuck Lever <chuck.lever@oracle.com>
2436-Date: Mon Dec 13 14:47:42 2010 -0500
2437-
2438- libnsm.a: Replace __attribute_noinline__
2439-
2440- Replace the __attribute_noinline__ form with
2441-
2442- __attribute__((__noinline__)).
2443-
2444- Even though the compiler didn't complain about __attribute_malloc__,
2445- also replace those in order to maintain consistent style throughout the
2446- source file.
2447-
2448- Fix for:
2449-
2450- https://bugzilla.linux-nfs.org/show_bug.cgi?id=194
2451-
2452- Reported-by: "Gabor Z. Papp" <gzp@papp.hu>
2453- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2454- Signed-off-by: Steve Dickson <steved@redhat.com>
2455-
2456-commit 7869a76207d3f4b3bd4ab57b4a7a8807ac2ff0c6
2457-Author: Chuck Lever <chuck.lever@oracle.com>
2458-Date: Mon Dec 13 14:36:15 2010 -0500
2459-
2460- sm-notify: Make use of AI_NUMERICSERV conditional
2461-
2462- Gabor Papp reports nfs-utils-1.2.3 doesn't build on his system that
2463- uses glibc-2.2.5:
2464-
2465- make[3]: Entering directory
2466- `/home/gzp/src/nfs-utils-1.2.3/utils/statd'
2467- gcc -DHAVE_CONFIG_H -I. -I../../support/include -D_GNU_SOURCE -Wall
2468- -Wextra -Wstrict-prototypes -pipe -g -O2 -MT sm-notify.o -MD
2469- -MP -MF .deps/sm-notify.Tpo -c -o sm-notify.o sm-notify.c
2470- sm-notify.c: In function 'smn_bind_address':
2471- sm-notify.c:247: error: 'AI_NUMERICSERV' undeclared (first use in this
2472- function)
2473- sm-notify.c:247: error: (Each undeclared identifier is reported only
2474- once
2475- sm-notify.c:247: error: for each function it appears in.)
2476- make[3]: *** [sm-notify.o] Error 1
2477-
2478- According to the getaddrinfo(3) man page, AI_NUMERICSERV is available
2479- only since glibc 2.3.4. getaddrinfo(3) seems to convert strings
2480- containing a number to the right port value without the use of
2481- AI_NUMERICSERV, so I think we can survive on older glibc's without it.
2482- It will allow admins to specify service names as well as port numbers
2483- on those versions.
2484-
2485- There are uses of AI_NUMERICSERV in gssd and in nfs_svc_create(). The
2486- one in nfs_svc_create() is behind HAVE_LIBTIRPC, and the other is a
2487- issue only for those who want to deploy Kerberos -- likely in both
2488- cases, a more modern glibc will be present. I'm going to leave those
2489- two.
2490-
2491- Fix for:
2492-
2493- https://bugzilla.linux-nfs.org/show_bug.cgi?id=195
2494-
2495- Reported-by: "Gabor Z. Papp" <gzp@papp.hu>
2496- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2497- Signed-off-by: Steve Dickson <steved@redhat.com>
2498-
2499-commit e8dbaddc8465dcd07b53f8e80a537703dd0248ca
2500-Author: Sid Moore <learnmost@gmail.com>
2501-Date: Fri Dec 3 09:19:06 2010 -0500
2502-
2503- rpc.mountd: Checking RPC Procedure ID before process it
2504-
2505- Signed-off-by: Steve Dickson <steved@redhat.com>
2506-
2507-commit 3c6973c595d62dc6452967d50ae8abe69f9f8bad
2508-Author: Mi Jinlong <mijinlong@cn.fujitsu.com>
2509-Date: Mon Nov 29 10:59:10 2010 -0500
2510-
2511- libnfs.a: fix a bug when parse section's arg
2512-
2513- When parsing section's arg at configure file, the pointer
2514- should stop when fetch ']', and give the warning message.
2515-
2516- Signed-off-by: Steve Dickson <steved@redhat.com>
2517-
2518-commit 86f7be64cafd17d4a3f164603484eaedb4757431
2519-Author: Harshula Jayasuriya <harshula@redhat.com>
2520-Date: Mon Nov 22 11:22:31 2010 -0500
2521-
2522- nfs-utils: nfsstat: has_stats() does not function correctly for NFSv4 client stats
2523-
2524- The NFSv4 client procs/ops in "struct rpc_procinfo nfs4_procedures" is
2525- used to generate the NFS client stats interface:
2526- ------------------------------------------------------------
2527- net 0 0 0 0
2528- rpc 15 0 0
2529- proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2530- proc3 22 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0
2531- proc4 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
2532- 0 0 0
2533- 0 0 0 0 0 0 0
2534- ------------------------------------------------------------
2535- Note, for proc4, the number 42. That is the number of stats that follow
2536- on the same line. Currently nfsstat's has_stats() relies on this number
2537- to be equal to CLTPROC4_SZ. Unfortunately this is not the case. I have
2538- changed has_stats() not to rely on these two values being equal. This
2539- should also allow nfsstat to work with different kernel versions that
2540- expose a different number of NFS client ops.
2541-
2542- * Fix has_stats()
2543- * Stop print_clnt_list() printing server stats!
2544- * Describe the option -3 and -4 completely in the nfsstat manpage.
2545-
2546- Signed-off-by: Harshula Jayasuriya <harshula@redhat.com>
2547- Signed-off-by: Steve Dickson <steved@redhat.com>
2548-
2549-commit 0868dcccb9a3bf3d022a32ff31311fe371484e77
2550-Author: Steve Dickson <steved@redhat.com>
2551-Date: Sat Nov 20 15:01:21 2010 -0500
2552-
2553- Enable nfsidmap to compile
2554-
2555- Only enable the compilation of nfsidmap when libnfsidmap support it.
2556-
2557- Signed-off-by: Steve Dickson <steved@redhat.com>
2558-
2559-commit 6f07548141e710767d425e119d9823691293771d
2560-Author: Bryan Schumaker <bjschuma@netapp.com>
2561-Date: Fri Nov 19 12:01:10 2010 -0500
2562-
2563- Add the new nfsidmap program
2564-
2565- This patch adds the nfsidmap program to nfs-utils. This program is
2566- called by the nfs idmapper through request-keys to map between
2567- uid / user name and gid / group name.
2568-
2569- Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
2570- Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2571- Signed-off-by: Steve Dickson <steved@redhat.com>
2572-
2573-commit 409487978593de13ae36be0ee56d8111ad6b3319
2574-Author: Steve Dickson <steved@redhat.com>
2575-Date: Mon Nov 22 11:33:37 2010 -0500
2576-
2577- Removed a couple warnings from utils/mount/stropts.c
2578-
2579- stropts.c:740:6: warning: 'ret' may be used uninitialized in this function
2580- stropts.c:653:6: warning: 'ret' may be used uninitialized in this function
2581-
2582- Signed-off-by: Steve Dickson <steved@redhat.com>
2583-
2584-commit f4968a724c1d4162a8e2b9f6a19c460cc56c95f7
2585-Author: Chuck Lever <chuck.lever@oracle.com>
2586-Date: Fri Oct 29 12:56:21 2010 -0400
2587-
2588- nfs(5): Document remount behavior
2589-
2590- It appears that, for a long while, NFS "remount" mounts have
2591- completely wiped the existing mount options in /etc/mtab for a given
2592- mount point. This is a problem for umount.nfs, since it reads its
2593- options out of /etc/mtab to find out how to do the unmount.
2594-
2595- The mount(8) command provides the NFS mount subcommand with the mount
2596- options to perform the remount. There are four cases to consider:
2597-
2598- 1. Both the device and mount directory are specified on the
2599- command line, and the target mount point is in /etc/fstab
2600-
2601- 2. Only one of the device and mount directory is specified on
2602- the command line, and the target mount point is in
2603- /etc/fstab
2604-
2605- 3. Both the device and mount directory are specified on the
2606- command line, and the target mount point is not in /etc/fstab
2607-
2608- 4. Only one of the device and mount directory is specified on
2609- the command line, and the target mount point is not in
2610- /etc/fstab
2611-
2612- Currently only case 4 works correctly. In that case, mount(8)
2613- provides the correct set of mount options to the mount.nfs
2614- subcommand and it can update /etc/mtab correctly.
2615-
2616- Cases 1 and 3 replace all mount options in /etc/mtab with the options
2617- provided on the command line during a remount. Case 2 replaces the
2618- mount options in /etc/mtab with a mix of options from /etc/fstab and
2619- /etc/mtab.
2620-
2621- Cases 1 and 3 are historical behavior. Basically this is a formal
2622- interface to allow administrators to replace the mount options in
2623- /etc/mtab completely, instead of merging in new ones. The present
2624- patch documents that behavior in nfs(5), and provides best practice
2625- for remounting NFS mount points.
2626-
2627- There are near-term plans to address case 2 by fixing mount(8)
2628- (provided by utils-linux-ng in most distributions).
2629-
2630- This is a partial fix for:
2631-
2632- https://bugzilla.linux-nfs.org/show_bug.cgi?id=188
2633-
2634- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2635- Signed-off-by: Steve Dickson <steved@redhat.com>
2636-
2637-commit 6d1a82b005994f759f2c847c0354413a24643da5
2638-Author: Chuck Lever <chuck.lever@oracle.com>
2639-Date: Thu Oct 28 13:15:22 2010 -0400
2640-
2641- nfs(5): Grammar and style fixes
2642-
2643- Clean up grammar and style issues introduced by recent updates. Also,
2644- I'm not certain inappropriate options are always ignored.
2645-
2646- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2647- Signed-off-by: Steve Dickson <steved@redhat.com>
2648-
2649-commit ab2cdb859f738a25e2567a2ec674cfa78a0a175d
2650-Author: Chuck Lever <chuck.lever@oracle.com>
2651-Date: Thu Oct 28 13:13:19 2010 -0400
2652-
2653- mount.nfs: mnt_freq and mnt_pass are always zero
2654-
2655- Clean up.
2656-
2657- No need to pass constant zeros to add_mtab() from its only call site.
2658- Ensure that initialization of a struct mntent is consistent in both
2659- places that it is done.
2660-
2661- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2662- Signed-off-by: Steve Dickson <steved@redhat.com>
2663-
2664-commit bc4a0c42570d5620cc1bb32428e16b9c9b5f3863
2665-Author: Chuck Lever <chuck.lever@oracle.com>
2666-Date: Thu Oct 28 13:10:48 2010 -0400
2667-
2668- mount.nfs: Fix memory leak in nfs_sys_mount()
2669-
2670- This appears to have been left behind by last year's adjustments to
2671- how the extra_opts string is constructed.
2672-
2673- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2674- Signed-off-by: Steve Dickson <steved@redhat.com>
2675-
2676-commit 1f237ac72e6f563908b350e11fd2bb866c003028
2677-Author: Chuck Lever <chuck.lever@oracle.com>
2678-Date: Thu Oct 28 13:09:38 2010 -0400
2679-
2680- mount: Fix compiler warning in nfs_parse_retry_option()
2681-
2682- stropts.c: In function nfs_parse_retry_option:
2683- stropts.c:131: warning: conversion to unsigned int from long int may
2684- alter its value
2685-
2686- Make it more clear what the second argument is for, and flag the
2687- switch fallthrough case.
2688-
2689- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2690- Signed-off-by: Steve Dickson <steved@redhat.com>
2691-
2692-commit 1ea2c3be33f2eb4630c5cdb78edf2bb670b294ab
2693-Author: Chuck Lever <chuck.lever@oracle.com>
2694-Date: Thu Oct 28 12:12:12 2010 -0400
2695-
2696- nfs-utils: Remove all uses of AI_ADDRCONFIG
2697-
2698- It was reported that, if only "lo" is up,
2699-
2700- mount.nfs 127.0.0.1:/export /mount
2701-
2702- fails with "Name or service not known".
2703-
2704- "man 3 getaddrinfo" says this:
2705-
2706- If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4
2707- addresses are returned in the list pointed to by res only if the
2708- local system has at least one IPv4 address configured, and IPv6
2709- addresses are only returned if the local system has at least
2710- one IPv6 address configured.
2711-
2712- The man page oversimplifies here. A review of glibc shows that
2713- getaddrinfo(3) explicitly ignores loopback addresses when deciding
2714- whether an IPv4 or IPv6 address is configured.
2715-
2716- This behavior around loopback is a problem not just for mount.nfs,
2717- but also for RPC daemons that have to start up before a system's
2718- networking is fully configured and started. Given the history of
2719- other problems with AI_ADDRCONFIG and the unpredictable behavior it
2720- introduces, let's just remove it everywhere in nfs-utils.
2721-
2722- This fix addresses:
2723-
2724- https://bugzilla.linux-nfs.org/show_bug.cgi?id=191
2725-
2726- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2727- Signed-off-by: Steve Dickson <steved@redhat.com>
2728-
2729-commit f8e315543b7f1db7f37a4bfe8ede3020cef62868
2730-Author: Jeff Layton <jlayton@redhat.com>
2731-Date: Thu Oct 28 09:18:33 2010 -0400
2732-
2733- nfs-utils: fix default value for --enable-tirpc
2734-
2735- We need $enable_tirpc to be a tristate. 'yes' means that someone
2736- explicitly requested building with tirpc. 'no' means that it was
2737- explicitly disabled. Anything else means that no one specified a value.
2738-
2739- Fix it by setting the value to a blank string so that the default is
2740- properly undefined.
2741-
2742- Reported-by: Chuck Lever <chuck.lever@oracle.com>
2743- Signed-off-by: Jeff Layton <jlayton@redhat.com>
2744- Signed-off-by: Steve Dickson <steved@redhat.com>
2745-
2746-commit c62d756402509ca5d07c1fd4d2e5a9d78dc4171b
2747-Author: Steve Dickson <steved@redhat.com>
2748-Date: Tue Oct 19 15:54:35 2010 -0400
2749-
2750- Updated rpc.mountd man page
2751-
2752- Updated the rpc.mountd man page to no longer reference
2753- v3 as the "newer" version and also mentioned v4 as
2754- a supported version.
2755-
2756- Signed-off-by: Steve Dickson <steved@redhat.com>
2757-
2758-commit 79e9079e9af4e5c2aa1d77815df1147b26876eb8
2759-Author: Steve Dickson <steved@redhat.com>
2760-Date: Tue Oct 19 15:54:04 2010 -0400
2761-
2762- Cleared up the sync option in exportfs man page
2763-
2764- Signed-off-by: Steve Dickson <steved@redhat.com>
2765-
2766-commit 6f228ea26be06572de245aed5496aaa122cca5a8
2767-Author: Steve Dickson <steved@redhat.com>
2768-Date: Fri Oct 15 17:20:28 2010 -0400
2769-
2770- Removed duplicate entries in export man page
2771-
2772- The man page's paragraphs about "refer=" and "replicas="
2773- each appear twice.
2774-
2775- Signed-off-by: Steve Dickson <steved@redhat.com>
2776-
2777-commit 849b7072a04975bb5da09245fbcacb0cb754a909
2778-Author: Chuck Lever <chuck.lever@oracle.com>
2779-Date: Thu Oct 14 10:33:25 2010 -0400
2780-
2781- mountd: Clear mountd registrations at start up
2782-
2783- Clear stale MNT registrations before mountd tries to create fresh
2784- listeners, to ensure that mountd starts. This is also what statd does.
2785-
2786- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2787- Signed-off-by: Steve Dickson <steved@redhat.com>
2788-
2789-commit 93dcf64cc4a9e67f693aea35c8193428015f4a30
2790-Author: Chuck Lever <chuck.lever@oracle.com>
2791-Date: Wed Oct 13 13:57:52 2010 -0400
2792-
2793- behavior as file systems that use the monolithic /sbin/mount command.
2794- See the MS_NOMTAB macro in utils-linux-ng/mount/mount.c.
2795-
2796- Note that mount(8) has MS_USERS and MS_USER in the "nomtab" category
2797- as well, but mount.nfs needs to record those values so that unmounting
2798- a user-mounted NFS file system can work.
2799-
2800- While we're here, fix some white space damage in fix_opts_string().
2801-
2802- This is a partial fix for:
2803-
2804- https://bugzilla.linux-nfs.org/show_bug.cgi?id=188
2805-
2806- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2807- Signed-off-by: Steve Dickson <steved@redhat.com>
2808-
2809-commit dc08c702a6c7f824f317af561f491635ee898a71
2810-Author: Chuck Lever <chuck.lever@oracle.com>
2811-Date: Wed Oct 13 13:55:10 2010 -0400
2812-
2813- umount.nfs: Distinguish between nfs4 and nfs mounts
2814-
2815- Neil Brown reports that umount.nfs is still confused by "-t nfs -o
2816- vers=4" mounts.
2817-
2818- /etc/mtab can be confused. /proc/mounts is authoritative on the
2819- fstype of a mount. Have umount.nfs consult it to determine which
2820- mechanism to use for unmounting. The code to read /proc/mounts was
2821- lifted from the nfsstat command.
2822-
2823- The code introduced by this patch may look like belt-n-suspenders, but
2824- we have two use cases to consider:
2825-
2826- 1. Old kernels don't support the "vers=4" mount option, so
2827- umount.nfs must look for the "nfs4" fstype
2828- 2. Upcoming kernels may eliminate support the "nfs4" fstype, so
2829- umount.nfs must look for the "vers=4" mount option
2830-
2831- Thus this logic checks for "nfs4" first then looks for the NFS version
2832- setting.
2833-
2834- Note that we could handle unmounting entirely in the kernel, but that
2835- won't help older kernels that have this issue.
2836-
2837- See:
2838- https://bugzilla.linux-nfs.org/show_bug.cgi?id=189
2839-
2840- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2841- Signed-off-by: Steve Dickson <steved@redhat.com>
2842-
2843-commit 17962b82afb68ca8e6b0d3f432d36c6c7c4980ea
2844-Author: Chuck Lever <chuck.lever@oracle.com>
2845-Date: Wed Oct 13 13:01:51 2010 -0400
2846-
2847- mount.nfs: mountproto does not support RDMA
2848-
2849- Clean up. Our client does not support the MNT protocol on RDMA.
2850-
2851- nfs_mount_protocol() isn't invoked for RDMA mounts (they are shunted
2852- off before nfs_options2pmap() is invoked). But in case it ever is,
2853- it should return the expected response.
2854-
2855- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2856- Signed-off-by: Steve Dickson <steved@redhat.com>
2857-
2858-commit 73c61fa5cd114fa6eae0e095724ed63aa66a4a6b
2859-Author: NeilBrown <neilb@suse.de>
2860-Date: Wed Oct 13 12:08:41 2010 -0400
2861-
2862- gcc complained:
2863-
2864- client.c: In function 'init_netmask6':
2865- client.c:181:1: warning: no return statement in function returning
2866- non-void
2867-
2868- and Suse' build system complained
2869-
2870- I: Program returns random data in a function
2871- E: nfs-utils no-return-in-nonvoid-function client.c:181
2872-
2873- when I built without --enable-ipv6
2874-
2875- Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
2876- Signed-off-by: NeilBrown <neilb@suse.de>
2877- Signed-off-by: Steve Dickson <steved@redhat.com>
2878-
2879-commit 7e90281b88c05b01c61152b54a0cf2faec45b09c
2880-Author: Chuck Lever <chuck.lever@oracle.com>
2881-Date: Wed Oct 13 12:02:32 2010 -0400
2882-
2883- mount.nfs: Eliminate compiler warnings in utils/mount/network.c
2884-
2885- Clean up.
2886-
2887- network.c: In function get_socket:
2888- network.c:431: warning: dereferencing type-punned pointer might break
2889- strict-aliasing rules
2890-
2891- network.c: In function probe_bothports:
2892- network.c:759: warning: dereferencing type-punned pointer might break
2893- strict-aliasing rules
2894- network.c:762: warning: dereferencing type-punned pointer might break
2895- strict-aliasing rules
2896-
2897- network.c: In function nfs_probe_statd:
2898- network.c:775: warning: dereferencing type-punned pointer might break
2899- strict-aliasing rules
2900-
2901- network.c: In function nfs_call_umount:
2902- network.c:904: warning: dereferencing type-punned pointer might break
2903- strict-aliasing rules
2904-
2905- network.c: In function nfs_ca_sockname:
2906- network.c:1106: warning: dereferencing type-punned pointer might break
2907- strict-aliasing rules
2908- network.c:1112: warning: dereferencing type-punned pointer might break
2909- strict-aliasing rules
2910-
2911- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2912- Signed-off-by: Steve Dickson <steved@redhat.com>
2913-
2914-commit 57385cf87790c0cbdfddfccdde66bd2c8da45923
2915-Author: Chuck Lever <chuck.lever@oracle.com>
2916-Date: Wed Oct 13 11:59:30 2010 -0400
2917-
2918- mount.nfs: Eliminate compiler warning in utils/mount/parse_opt.c
2919-
2920- parse_opt.c: In function po_rightmost:
2921- parse_opt.c:517: warning: conversion to int from unsigned int may
2922- change the sign of the result
2923-
2924- "i" contains the function's result value, so it should be defined as
2925- the same type as the function's return type.
2926-
2927- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2928- Signed-off-by: Steve Dickson <steved@redhat.com>
2929-
2930-commit 1ee10ef034cbca86da4df271ac4097a948e7ab59
2931-Author: Chuck Lever <chuck.lever@oracle.com>
2932-Date: Wed Oct 13 11:58:27 2010 -0400
2933-
2934- mount.nfs: Eliminate compiler warning in utils/mount/nfsumount.c
2935-
2936- Clean up.
2937-
2938- nfsumount.c:374: warning: ISO C forbids omitting the middle term of
2939- a ?: expression
2940-
2941- This is also probably harmless, but let's make the code unambiguous.
2942-
2943- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2944- Signed-off-by: Steve Dickson <steved@redhat.com>
2945-
2946-commit e9c97e4f7075e563d7a442ca8298ac56bafba0d5
2947-Author: Chuck Lever <chuck.lever@oracle.com>
2948-Date: Wed Oct 13 11:56:58 2010 -0400
2949-
2950- mount.nfs: Eliminate compiler warning in utils/mount/nfsumount.c
2951-
2952- Clean up.
2953-
2954- nfsumount.c:265: warning: no previous prototype for nfsumount
2955-
2956- It's also a good idea if the compiler can ensure that the prototype
2957- in nfsmount.h matches the actual function defined in nfsumount.c.
2958-
2959- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2960- Signed-off-by: Steve Dickson <steved@redhat.com>
2961-
2962-commit e2b6d9cbaf20df26dd371a715fce3ae158f37126
2963-Author: Chuck Lever <chuck.lever@oracle.com>
2964-Date: Wed Oct 13 11:54:49 2010 -0400
2965-
2966- mount.nfs: Eliminate compiler warnings in utils/mount/mount.c
2967-
2968- Clean up.
2969-
2970- mount.c: In function parse_opt:
2971- mount.c:354: warning: conversion to size_t from int may change the
2972- sign of the result
2973- mount.c:354: warning: conversion to int from size_t may change the
2974- sign of the result
2975- mount.c:359: warning: conversion to size_t from int may change the
2976- sign of the result
2977- mount.c:359: warning: conversion to int from size_t may change the
2978- sign of the result
2979- mount.c: In function parse_opts:
2980- mount.c:374: warning: conversion to int from size_t may change the
2981- sign of the result
2982- mount.c:377: warning: conversion to size_t from int may change the
2983- sign of the result
2984-
2985- Character string lengths are usually size_t anyway. We can easily
2986- avoid the implicit type cast here.
2987-
2988- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2989- Signed-off-by: Steve Dickson <steved@redhat.com>
2990-
2991-commit 013e8ec9ffb9f28f97e58299719023faf846a029
2992-Author: Chuck Lever <chuck.lever@oracle.com>
2993-Date: Wed Oct 13 11:53:44 2010 -0400
2994-
2995- mount.nfs: Eliminate compiler warning in utils/mount/mount.c
2996-
2997- Clean up.
2998-
2999- mount.c: At top level:
3000- mount.c:324: warning: no previous prototype for ?mount_usage?
3001-
3002- mount_usage() has no callers outside of utils/mount/mount.c and no
3003- prototype is provided in a header file. Make it static.
3004-
3005- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3006- Signed-off-by: Steve Dickson <steved@redhat.com>
3007-
3008-commit 47480475c99335c1203e81662f815b62573c19e8
3009-Author: Chuck Lever <chuck.lever@oracle.com>
3010-Date: Wed Oct 13 11:50:57 2010 -0400
3011-
3012- mount.nfs: Eliminate compiler warnings in utils/mount/version.h
3013-
3014- Clean up.
3015-
3016- In file included from mount.c:50:
3017- version.h: In function linux_version_code:
3018- version.h:48: warning: conversion to unsigned int from int may
3019- change the sign of the result
3020- version.h:48: warning: conversion to unsigned int from int may
3021- change the sign of the result
3022- version.h:48: warning: conversion to unsigned int from int may
3023- change the sign of the result
3024-
3025- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3026- Signed-off-by: Steve Dickson <steved@redhat.com>
3027-
3028-commit 00885013dccbe00f5cc4e19223cf18e85a8e616a
3029-Author: Chuck Lever <chuck.lever@oracle.com>
3030-Date: Wed Oct 13 11:44:23 2010 -0400
3031-
3032- mount.nfs: Eliminate compiler warning in utils/mount/mount.c
3033-
3034- Clean up.
3035-
3036- In file included from mount.c:41:
3037- mount_config.h:35: warning: no previous prototype for mount_config_opts
3038-
3039- Functions defined in include files are usually declared as "static
3040- inline," eliminating the need for a forward declaration.
3041-
3042- While I was there, I also fixed the macro that prevents including
3043- mount_config.h multiple times, and fixed some white space damage.
3044-
3045- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3046- Signed-off-by: Steve Dickson <steved@redhat.com>
3047-
3048-commit ffa577350b03ddd421d455a8cd4cff86e3718264
3049-Author: Chuck Lever <chuck.lever@oracle.com>
3050-Date: Wed Oct 13 11:38:22 2010 -0400
3051-
3052- mount.nfs: Eliminate compiler warnings
3053-
3054- Clean up.
3055-
3056- fstab.c: In function ?lock_mtab?:
3057- fstab.c:385: warning: declaration of ?errsv? shadows a previous local
3058- fstab.c:367: warning: shadowed declaration is here
3059- fstab.c:407: warning: declaration of ?errsv? shadows a previous local
3060- fstab.c:367: warning: shadowed declaration is here
3061- fstab.c:417: warning: declaration of ?tries? shadows a previous local
3062- fstab.c:325: warning: shadowed declaration is here
3063- fstab.c:422: warning: declaration of ?errsv? shadows a previous local
3064- fstab.c:367: warning: shadowed declaration is here
3065-
3066- These are probably harmless. Reusing a variable name, however, is a
3067- little confusing to follow when reading the code.
3068-
3069- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3070- Signed-off-by: Steve Dickson <steved@redhat.com>
3071-
3072-commit 5fe118b838254023d83424c5010ae73a91ec267d
3073-Author: Trond Myklebust <Trond.Myklebust@netapp.com>
3074-Date: Wed Oct 13 11:27:21 2010 -0400
3075-
3076- export: Ensure that we free struct exportent->e_uuid
3077-
3078- Currently, the exportent->e_uuid is initialised in
3079- support/nfs/exports.c:parseopts(), but it is never freed.
3080-
3081- Also ensure that exportent->e_uuid is duplicated correctly in
3082- dupexportent().
3083-
3084- Adjusted to account for the new export_free() helper.
3085-
3086- Also, e_uuid points to memory that is always allocated with strdup(3),
3087- not with xstrdup(). Thus it must be freed via free(3) and not via
3088- xfree().
3089-
3090- Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
3091- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3092- Signed-off-by: Steve Dickson <steved@redhat.com>
3093-
3094-commit 656028f9925f5817c5a37565d27159973db84ec3
3095-Author: Chuck Lever <chuck.lever@oracle.com>
3096-Date: Wed Oct 13 11:22:07 2010 -0400
3097-
3098- libnfs.a: Allow multiple RPC listeners to share listener port number
3099-
3100- Normally, when "-p" is not specified on the mountd command line, the
3101- TI-RPC library chooses random port numbers for each listener. If a
3102- port number _is_ specified on the command line, all the listeners
3103- will get the same port number, so SO_REUSEADDR needs to be set on
3104- each socket.
3105-
3106- Thus we can't let TI-RPC create the listener sockets for us in this
3107- case; we must create them ourselves and then set SO_REUSEADDR (and
3108- other socket options) by hand.
3109-
3110- Different versions of the same RPC program have to share the same
3111- listener and SVCXPRT, so we have to cache xprts we create, and re-use
3112- them when additional requests for registration come from the
3113- application.
3114-
3115- Though it doesn't look like it, this fix was "copied" from the legacy
3116- rpc_init() function. It's more complicated for TI-RPC, of course,
3117- since a TI-RPC application can set up listeners with a nearly
3118- arbitrary number of address families and socket types, not just the
3119- two listeners that legacy RPC applications can set up (one for AF_INET
3120- UDP and one for AF_INET TCP).
3121-
3122- See:
3123- https://bugzilla.linux-nfs.org/show_bug.cgi?id=190
3124-
3125- Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
3126- Signed-off-by: Steve Dickson <steved@redhat.com>
3127-
3128-commit 1296be71ebae4c0d7da61cc1077d97562d3bc549
3129-Author: Steve Dickson <steved@redhat.com>
3130-Date: Wed Oct 13 10:17:58 2010 -0400
3131-
3132- nfs-utils: Fixed typo in NFS man page
3133-
3134- Chuck pointed out there was a grammar typo in addition to the spelling
3135- typo. Here is a revised version of the patch.
3136-
3137- Signed-off-by: Jim Rees <rees@umich.edu>
3138- Signed-off-by: Steve Dickson <steved@redhat.com>
3139-
3140-commit 9afbdbad4436df6f7a5a501c6e4db04c3a5bbb08
3141-Author: Steve Dickson <steved@redhat.com>
3142-Date: Wed Oct 13 10:15:12 2010 -0400
3143-
3144- Fix style nits in atomicio.c
3145-
3146- Signed-off-by: Jim Rees <rees@umich.edu>
3147- Signed-off-by: Steve Dickson <steved@redhat.com>
3148-
3149-commit c117b7a1f29db65d139824ba5bab2a58bf5609e2
3150-Author: Steve Dickson <steved@redhat.com>
3151-Date: Wed Oct 13 10:09:53 2010 -0400
3152-
3153- nfs-utils: Move common code into support
3154-
3155- There are several source files and headers present in the ./utils/idmapd
3156- directory which are also usable in a doimapd daemon. Because of this we
3157- move that support into the support directory such that it can be shared by
3158- both daemons.
3159-
3160- Signed-off-by: Jim Rees <rees@umich.edu>
3161- Signed-off-by: Steve Dickson <steved@redhat.com>
3162-
3163-commit 8c217b9623c8304608196aeb2f7360abfdf987c8
3164-Author: Suresh Jayaraman <sjayaraman@suse.de>
3165-Date: Wed Sep 29 07:14:14 2010 -0400
3166-
3167- The kernel 2.6.37 has a add new mount option: local_lock.
3168- Document the new option in the nfs(5) man page.
3169-
3170- Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
3171- Signed-off-by: Steve Dickson <steved@redhat.com>
3172-
3173-commit 554df6bc8456c6971c1c597f70d3b9131e4e5e11
3174-Author: Steve Dickson <steved@redhat.com>
3175-Date: Tue Sep 28 08:24:16 2010 -0400
3176-
3177- Revert "nfs-iostat.py: don't wait for an extra interval when given a count"
3178-
3179- This reverts commit 837796686ad8f9178c7b6855ada728a53ae511e3.
3180
3181=== modified file 'Makefile.in'
3182--- Makefile.in 2012-06-22 15:04:56 +0000
3183+++ Makefile.in 2013-05-24 21:28:27 +0000
3184@@ -1,9 +1,8 @@
3185-# Makefile.in generated by automake 1.11.1 from Makefile.am.
3186+# Makefile.in generated by automake 1.12.2 from Makefile.am.
3187 # @configure_input@
3188
3189-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3190-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
3191-# Inc.
3192+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
3193+
3194 # This Makefile.in is free software; the Free Software Foundation
3195 # gives unlimited permission to copy and/or distribute it,
3196 # with or without modifications, as long as this notice is preserved.
3197@@ -15,6 +14,23 @@
3198
3199 @SET_MAKE@
3200 VPATH = @srcdir@
3201+am__make_dryrun = \
3202+ { \
3203+ am__dry=no; \
3204+ case $$MAKEFLAGS in \
3205+ *\\[\ \ ]*) \
3206+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
3207+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
3208+ *) \
3209+ for am__flg in $$MAKEFLAGS; do \
3210+ case $$am__flg in \
3211+ *=*|--*) ;; \
3212+ *n*) am__dry=yes; break;; \
3213+ esac; \
3214+ done;; \
3215+ esac; \
3216+ test $$am__dry = yes; \
3217+ }
3218 pkgdatadir = $(datadir)/@PACKAGE@
3219 pkgincludedir = $(includedir)/@PACKAGE@
3220 pkglibdir = $(libdir)/@PACKAGE@
3221@@ -35,9 +51,9 @@
3222 host_triplet = @host@
3223 subdir = .
3224 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
3225- $(srcdir)/Makefile.in $(top_srcdir)/configure COPYING \
3226- ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
3227- install-sh ltmain.sh missing
3228+ $(srcdir)/Makefile.in $(top_srcdir)/configure COPYING INSTALL \
3229+ NEWS compile config.guess config.sub install-sh ltmain.sh \
3230+ missing
3231 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
3232 am__aclocal_m4_deps = $(top_srcdir)/aclocal/bsdsignals.m4 \
3233 $(top_srcdir)/aclocal/ipv6.m4 \
3234@@ -50,6 +66,11 @@
3235 $(top_srcdir)/aclocal/librpcsecgss.m4 \
3236 $(top_srcdir)/aclocal/libsqlite3.m4 \
3237 $(top_srcdir)/aclocal/libtirpc.m4 \
3238+ $(top_srcdir)/aclocal/libtool.m4 \
3239+ $(top_srcdir)/aclocal/ltoptions.m4 \
3240+ $(top_srcdir)/aclocal/ltsugar.m4 \
3241+ $(top_srcdir)/aclocal/ltversion.m4 \
3242+ $(top_srcdir)/aclocal/lt~obsolete.m4 \
3243 $(top_srcdir)/aclocal/nfs-utils.m4 \
3244 $(top_srcdir)/aclocal/rpcsec_vers.m4 \
3245 $(top_srcdir)/aclocal/tcp-wrappers.m4 \
3246@@ -71,21 +92,30 @@
3247 install-pdf-recursive install-ps-recursive install-recursive \
3248 installcheck-recursive installdirs-recursive pdf-recursive \
3249 ps-recursive uninstall-recursive
3250+am__can_run_installinfo = \
3251+ case $$AM_UPDATE_INFO_DIR in \
3252+ n|no|NO) false;; \
3253+ *) (install-info --version) >/dev/null 2>&1;; \
3254+ esac
3255 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
3256 distclean-recursive maintainer-clean-recursive
3257 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
3258 $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
3259- distdir dist dist-all distcheck
3260+ cscope distdir dist dist-all distcheck
3261 ETAGS = etags
3262 CTAGS = ctags
3263+CSCOPE = cscope
3264 DIST_SUBDIRS = $(SUBDIRS)
3265 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
3266 distdir = $(PACKAGE)-$(VERSION)
3267 top_distdir = $(distdir)
3268 am__remove_distdir = \
3269- { test ! -d "$(distdir)" \
3270- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
3271- && rm -fr "$(distdir)"; }; }
3272+ if test -d "$(distdir)"; then \
3273+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
3274+ && rm -rf "$(distdir)" \
3275+ || { sleep 5 && rm -rf "$(distdir)"; }; \
3276+ else :; fi
3277+am__post_remove_distdir = $(am__remove_distdir)
3278 am__relativize = \
3279 dir0=`pwd`; \
3280 sed_first='s,^\([^/]*\)/.*$$,\1,'; \
3281@@ -113,7 +143,10 @@
3282 reldir="$$dir2"
3283 DIST_ARCHIVES = $(distdir).tar.gz
3284 GZIP_ENV = --best
3285+DIST_TARGETS = dist-gzip
3286 distuninstallcheck_listfiles = find . -type f -print
3287+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
3288+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
3289 distcleancheck_listfiles = find . -type f -print
3290 ACLOCAL = @ACLOCAL@
3291 ACLOCAL_AMFLAGS = -I aclocal
3292@@ -152,9 +185,13 @@
3293 EXEEXT = @EXEEXT@
3294 FGREP = @FGREP@
3295 GREP = @GREP@
3296+GSSAPI_CFLAGS = @GSSAPI_CFLAGS@
3297+GSSAPI_LIBS = @GSSAPI_LIBS@
3298 GSSD = @GSSD@
3299 GSSGLUE_CFLAGS = @GSSGLUE_CFLAGS@
3300 GSSGLUE_LIBS = @GSSGLUE_LIBS@
3301+GSSKRB_CFLAGS = @GSSKRB_CFLAGS@
3302+GSSKRB_LIBS = @GSSKRB_LIBS@
3303 HAVE_LIBWRAP = @HAVE_LIBWRAP@
3304 HAVE_TCP_WRAPPER = @HAVE_TCP_WRAPPER@
3305 IDMAPD = @IDMAPD@
3306@@ -334,7 +371,7 @@
3307 all: all-recursive
3308
3309 .SUFFIXES:
3310-am--refresh:
3311+am--refresh: Makefile
3312 @:
3313 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
3314 @for dep in $?; do \
3315@@ -379,12 +416,12 @@
3316 -rm -f libtool config.lt
3317
3318 # This directory's subdirectories are mostly independent; you can cd
3319-# into them and run `make' without going through this Makefile.
3320-# To change the values of `make' variables: instead of editing Makefiles,
3321-# (1) if the variable is set in `config.status', edit `config.status'
3322-# (which will cause the Makefiles to be regenerated when you run `make');
3323-# (2) otherwise, pass the desired values on the `make' command line.
3324-$(RECURSIVE_TARGETS):
3325+# into them and run 'make' without going through this Makefile.
3326+# To change the values of 'make' variables: instead of editing Makefiles,
3327+# (1) if the variable is set in 'config.status', edit 'config.status'
3328+# (which will cause the Makefiles to be regenerated when you run 'make');
3329+# (2) otherwise, pass the desired values on the 'make' command line.
3330+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
3331 @fail= failcom='exit 1'; \
3332 for f in x $$MAKEFLAGS; do \
3333 case $$f in \
3334@@ -394,7 +431,11 @@
3335 done; \
3336 dot_seen=no; \
3337 target=`echo $@ | sed s/-recursive//`; \
3338- list='$(SUBDIRS)'; for subdir in $$list; do \
3339+ case "$@" in \
3340+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
3341+ *) list='$(SUBDIRS)' ;; \
3342+ esac; \
3343+ for subdir in $$list; do \
3344 echo "Making $$target in $$subdir"; \
3345 if test "$$subdir" = "."; then \
3346 dot_seen=yes; \
3347@@ -408,37 +449,6 @@
3348 if test "$$dot_seen" = "no"; then \
3349 $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
3350 fi; test -z "$$fail"
3351-
3352-$(RECURSIVE_CLEAN_TARGETS):
3353- @fail= failcom='exit 1'; \
3354- for f in x $$MAKEFLAGS; do \
3355- case $$f in \
3356- *=* | --[!k]*);; \
3357- *k*) failcom='fail=yes';; \
3358- esac; \
3359- done; \
3360- dot_seen=no; \
3361- case "$@" in \
3362- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
3363- *) list='$(SUBDIRS)' ;; \
3364- esac; \
3365- rev=''; for subdir in $$list; do \
3366- if test "$$subdir" = "."; then :; else \
3367- rev="$$subdir $$rev"; \
3368- fi; \
3369- done; \
3370- rev="$$rev ."; \
3371- target=`echo $@ | sed s/-recursive//`; \
3372- for subdir in $$rev; do \
3373- echo "Making $$target in $$subdir"; \
3374- if test "$$subdir" = "."; then \
3375- local_target="$$target-am"; \
3376- else \
3377- local_target="$$target"; \
3378- fi; \
3379- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
3380- || eval $$failcom; \
3381- done && test -z "$$fail"
3382 tags-recursive:
3383 list='$(SUBDIRS)'; for subdir in $$list; do \
3384 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
3385@@ -447,6 +457,10 @@
3386 list='$(SUBDIRS)'; for subdir in $$list; do \
3387 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
3388 done
3389+cscopelist-recursive:
3390+ list='$(SUBDIRS)'; for subdir in $$list; do \
3391+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
3392+ done
3393
3394 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
3395 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
3396@@ -510,8 +524,32 @@
3397 && $(am__cd) $(top_srcdir) \
3398 && gtags -i $(GTAGS_ARGS) "$$here"
3399
3400+cscope: cscope.files
3401+ test ! -s cscope.files \
3402+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
3403+
3404+clean-cscope:
3405+ -rm -f cscope.files
3406+
3407+cscope.files: clean-cscope cscopelist-recursive cscopelist
3408+
3409+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
3410+ list='$(SOURCES) $(HEADERS) $(LISP)'; \
3411+ case "$(srcdir)" in \
3412+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
3413+ *) sdir=$(subdir)/$(srcdir) ;; \
3414+ esac; \
3415+ for i in $$list; do \
3416+ if test -f "$$i"; then \
3417+ echo "$(subdir)/$$i"; \
3418+ else \
3419+ echo "$$sdir/$$i"; \
3420+ fi; \
3421+ done >> $(top_builddir)/cscope.files
3422+
3423 distclean-tags:
3424 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
3425+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
3426
3427 distdir: $(DISTFILES)
3428 $(am__remove_distdir)
3429@@ -547,13 +585,10 @@
3430 done
3431 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
3432 if test "$$subdir" = .; then :; else \
3433- test -d "$(distdir)/$$subdir" \
3434- || $(MKDIR_P) "$(distdir)/$$subdir" \
3435- || exit 1; \
3436- fi; \
3437- done
3438- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
3439- if test "$$subdir" = .; then :; else \
3440+ $(am__make_dryrun) \
3441+ || test -d "$(distdir)/$$subdir" \
3442+ || $(MKDIR_P) "$(distdir)/$$subdir" \
3443+ || exit 1; \
3444 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
3445 $(am__relativize); \
3446 new_distdir=$$reldir; \
3447@@ -582,36 +617,36 @@
3448 || chmod -R a+r "$(distdir)"
3449 dist-gzip: distdir
3450 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
3451- $(am__remove_distdir)
3452+ $(am__post_remove_distdir)
3453
3454 dist-bzip2: distdir
3455- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
3456- $(am__remove_distdir)
3457+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
3458+ $(am__post_remove_distdir)
3459
3460-dist-lzma: distdir
3461- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
3462- $(am__remove_distdir)
3463+dist-lzip: distdir
3464+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
3465+ $(am__post_remove_distdir)
3466
3467 dist-xz: distdir
3468- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
3469- $(am__remove_distdir)
3470+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
3471+ $(am__post_remove_distdir)
3472
3473 dist-tarZ: distdir
3474 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
3475- $(am__remove_distdir)
3476+ $(am__post_remove_distdir)
3477
3478 dist-shar: distdir
3479 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
3480- $(am__remove_distdir)
3481+ $(am__post_remove_distdir)
3482
3483 dist-zip: distdir
3484 -rm -f $(distdir).zip
3485 zip -rq $(distdir).zip $(distdir)
3486- $(am__remove_distdir)
3487+ $(am__post_remove_distdir)
3488
3489-dist dist-all: distdir
3490- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
3491- $(am__remove_distdir)
3492+dist dist-all:
3493+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
3494+ $(am__post_remove_distdir)
3495
3496 # This target untars the dist file and tries a VPATH configuration. Then
3497 # it guarantees that the distribution is self-contained by making another
3498@@ -622,8 +657,8 @@
3499 GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
3500 *.tar.bz2*) \
3501 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
3502- *.tar.lzma*) \
3503- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
3504+ *.tar.lz*) \
3505+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
3506 *.tar.xz*) \
3507 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
3508 *.tar.Z*) \
3509@@ -633,7 +668,7 @@
3510 *.zip*) \
3511 unzip $(distdir).zip ;;\
3512 esac
3513- chmod -R a-w $(distdir); chmod a+w $(distdir)
3514+ chmod -R a-w $(distdir); chmod u+w $(distdir)
3515 mkdir $(distdir)/_build
3516 mkdir $(distdir)/_inst
3517 chmod a-w $(distdir)
3518@@ -643,6 +678,7 @@
3519 && am__cwd=`pwd` \
3520 && $(am__cd) $(distdir)/_build \
3521 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
3522+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
3523 $(DISTCHECK_CONFIGURE_FLAGS) \
3524 && $(MAKE) $(AM_MAKEFLAGS) \
3525 && $(MAKE) $(AM_MAKEFLAGS) dvi \
3526@@ -666,13 +702,21 @@
3527 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
3528 && cd "$$am__cwd" \
3529 || exit 1
3530- $(am__remove_distdir)
3531+ $(am__post_remove_distdir)
3532 @(echo "$(distdir) archives ready for distribution: "; \
3533 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
3534 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
3535 distuninstallcheck:
3536- @$(am__cd) '$(distuninstallcheck_dir)' \
3537- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
3538+ @test -n '$(distuninstallcheck_dir)' || { \
3539+ echo 'ERROR: trying to run $@ with an empty' \
3540+ '$$(distuninstallcheck_dir)' >&2; \
3541+ exit 1; \
3542+ }; \
3543+ $(am__cd) '$(distuninstallcheck_dir)' || { \
3544+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
3545+ exit 1; \
3546+ }; \
3547+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
3548 || { echo "ERROR: files left after uninstall:" ; \
3549 if test -n "$(DESTDIR)"; then \
3550 echo " (check DESTDIR support)"; \
3551@@ -703,10 +747,15 @@
3552
3553 installcheck: installcheck-recursive
3554 install-strip:
3555- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
3556- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
3557- `test -z '$(STRIP)' || \
3558- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
3559+ if test -z '$(STRIP)'; then \
3560+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
3561+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
3562+ install; \
3563+ else \
3564+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
3565+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
3566+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
3567+ fi
3568 mostlyclean-generic:
3569
3570 clean-generic:
3571@@ -791,26 +840,27 @@
3572 uninstall-am:
3573 @$(NORMAL_INSTALL)
3574 $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
3575-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
3576- install-am install-data-am install-strip tags-recursive \
3577- uninstall-am
3578+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
3579+ cscopelist-recursive ctags-recursive install-am \
3580+ install-data-am install-strip tags-recursive uninstall-am
3581
3582 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
3583- all all-am am--refresh check check-am clean clean-generic \
3584- clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
3585- dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
3586- distcheck distclean distclean-generic distclean-libtool \
3587- distclean-tags distcleancheck distdir distuninstallcheck dvi \
3588- dvi-am html html-am info info-am install install-am \
3589- install-data install-data-am install-data-hook install-dvi \
3590- install-dvi-am install-exec install-exec-am install-html \
3591- install-html-am install-info install-info-am install-man \
3592- install-pdf install-pdf-am install-ps install-ps-am \
3593- install-strip installcheck installcheck-am installdirs \
3594- installdirs-am maintainer-clean maintainer-clean-generic \
3595- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
3596- ps ps-am tags tags-recursive uninstall uninstall-am \
3597- uninstall-hook
3598+ all all-am am--refresh check check-am clean clean-cscope \
3599+ clean-generic clean-libtool cscope cscopelist \
3600+ cscopelist-recursive ctags ctags-recursive dist dist-all \
3601+ dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
3602+ dist-zip distcheck distclean distclean-generic \
3603+ distclean-libtool distclean-tags distcleancheck distdir \
3604+ distuninstallcheck dvi dvi-am html html-am info info-am \
3605+ install install-am install-data install-data-am \
3606+ install-data-hook install-dvi install-dvi-am install-exec \
3607+ install-exec-am install-html install-html-am install-info \
3608+ install-info-am install-man install-pdf install-pdf-am \
3609+ install-ps install-ps-am install-strip installcheck \
3610+ installcheck-am installdirs installdirs-am maintainer-clean \
3611+ maintainer-clean-generic mostlyclean mostlyclean-generic \
3612+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
3613+ uninstall uninstall-am uninstall-hook
3614
3615
3616 install-data-hook:
3617
3618=== modified file 'README'
3619--- README 2012-05-25 20:41:58 +0000
3620+++ README 2013-05-24 21:28:27 +0000
3621@@ -1,4 +1,4 @@
3622-This is version 1.1.0 of nfs-utils, the Linux NFS utility package.
3623+This is nfs-utils, the Linux NFS userland utility package.
3624
3625
3626 0. PROJECT RESOURCES
3627@@ -108,31 +108,12 @@
3628 the lock.
3629 rpc.statd is only needed for NFSv2 and NFSv3 support.
3630
3631- E/ nfsdcld
3632- This daemon is only needed on kernels that support the nfsdcld
3633- upcall, and only if the legacy client ID tracking isn't used. It
3634- is also not needed if the server does not support NFSv4.
3635-
3636- To determine whether you need this or not, do the following:
3637-
3638- # cat /proc/fs/nfsd/versions
3639-
3640- That should yield a list of NFS versions that this kernel supports,
3641- if "4" or later is not in that list, or they are prefixed with a "-"
3642- then you don't need to run this daemon. Next:
3643-
3644- # cat /proc/fs/nfsd/nfsv4recoverydir
3645-
3646- If that file is not present, or the directory that the above command
3647- outputs is not present, then this daemon is required in order to
3648- support lock recovery by the clients when the server reboots.
3649-
3650- F/ rpc.nfsd
3651+ E/ rpc.nfsd
3652 Starting nfsd will automatically start lockd. The nfs server
3653 will now be fully active and respond to any requests from
3654 clients.
3655
3656- G/ sm-notify
3657+ F/ sm-notify
3658 This will notify any client which might have locks from before
3659 a reboot to try to reclaim their locks. This should start
3660 immediately after rpc.nfsd is started so that clients have a
3661
3662=== modified file 'aclocal.m4'
3663--- aclocal.m4 2012-06-22 15:04:56 +0000
3664+++ aclocal.m4 2013-05-24 21:28:27 +0000
3665@@ -1,7 +1,7 @@
3666-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
3667-
3668-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3669-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
3670+# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
3671+
3672+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
3673+
3674 # This file is free software; the Free Software Foundation
3675 # gives unlimited permission to copy and/or distribute it,
3676 # with or without modifications, as long as this notice is preserved.
3677@@ -13,8442 +13,11 @@
3678
3679 m4_ifndef([AC_AUTOCONF_VERSION],
3680 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
3681-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
3682-[m4_warning([this file was generated for autoconf 2.68.
3683+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
3684+[m4_warning([this file was generated for autoconf 2.69.
3685 You have another version of autoconf. It may work, but is not guaranteed to.
3686 If you have problems, you may need to regenerate the build system entirely.
3687-To do so, use the procedure documented by the package, typically `autoreconf'.])])
3688-
3689-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
3690-#
3691-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
3692-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
3693-# Inc.
3694-# Written by Gordon Matzigkeit, 1996
3695-#
3696-# This file is free software; the Free Software Foundation gives
3697-# unlimited permission to copy and/or distribute it, with or without
3698-# modifications, as long as this notice is preserved.
3699-
3700-m4_define([_LT_COPYING], [dnl
3701-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
3702-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
3703-# Inc.
3704-# Written by Gordon Matzigkeit, 1996
3705-#
3706-# This file is part of GNU Libtool.
3707-#
3708-# GNU Libtool is free software; you can redistribute it and/or
3709-# modify it under the terms of the GNU General Public License as
3710-# published by the Free Software Foundation; either version 2 of
3711-# the License, or (at your option) any later version.
3712-#
3713-# As a special exception to the GNU General Public License,
3714-# if you distribute this file as part of a program or library that
3715-# is built using GNU Libtool, you may include this file under the
3716-# same distribution terms that you use for the rest of that program.
3717-#
3718-# GNU Libtool is distributed in the hope that it will be useful,
3719-# but WITHOUT ANY WARRANTY; without even the implied warranty of
3720-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3721-# GNU General Public License for more details.
3722-#
3723-# You should have received a copy of the GNU General Public License
3724-# along with GNU Libtool; see the file COPYING. If not, a copy
3725-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
3726-# obtained by writing to the Free Software Foundation, Inc.,
3727-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3728-])
3729-
3730-# serial 57 LT_INIT
3731-
3732-
3733-# LT_PREREQ(VERSION)
3734-# ------------------
3735-# Complain and exit if this libtool version is less that VERSION.
3736-m4_defun([LT_PREREQ],
3737-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
3738- [m4_default([$3],
3739- [m4_fatal([Libtool version $1 or higher is required],
3740- 63)])],
3741- [$2])])
3742-
3743-
3744-# _LT_CHECK_BUILDDIR
3745-# ------------------
3746-# Complain if the absolute build directory name contains unusual characters
3747-m4_defun([_LT_CHECK_BUILDDIR],
3748-[case `pwd` in
3749- *\ * | *\ *)
3750- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
3751-esac
3752-])
3753-
3754-
3755-# LT_INIT([OPTIONS])
3756-# ------------------
3757-AC_DEFUN([LT_INIT],
3758-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
3759-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
3760-AC_BEFORE([$0], [LT_LANG])dnl
3761-AC_BEFORE([$0], [LT_OUTPUT])dnl
3762-AC_BEFORE([$0], [LTDL_INIT])dnl
3763-m4_require([_LT_CHECK_BUILDDIR])dnl
3764-
3765-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
3766-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
3767-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
3768-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
3769-dnl unless we require an AC_DEFUNed macro:
3770-AC_REQUIRE([LTOPTIONS_VERSION])dnl
3771-AC_REQUIRE([LTSUGAR_VERSION])dnl
3772-AC_REQUIRE([LTVERSION_VERSION])dnl
3773-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
3774-m4_require([_LT_PROG_LTMAIN])dnl
3775-
3776-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
3777-
3778-dnl Parse OPTIONS
3779-_LT_SET_OPTIONS([$0], [$1])
3780-
3781-# This can be used to rebuild libtool when needed
3782-LIBTOOL_DEPS="$ltmain"
3783-
3784-# Always use our own libtool.
3785-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
3786-AC_SUBST(LIBTOOL)dnl
3787-
3788-_LT_SETUP
3789-
3790-# Only expand once:
3791-m4_define([LT_INIT])
3792-])# LT_INIT
3793-
3794-# Old names:
3795-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
3796-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
3797-dnl aclocal-1.4 backwards compatibility:
3798-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
3799-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
3800-
3801-
3802-# _LT_CC_BASENAME(CC)
3803-# -------------------
3804-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
3805-m4_defun([_LT_CC_BASENAME],
3806-[for cc_temp in $1""; do
3807- case $cc_temp in
3808- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
3809- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
3810- \-*) ;;
3811- *) break;;
3812- esac
3813-done
3814-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
3815-])
3816-
3817-
3818-# _LT_FILEUTILS_DEFAULTS
3819-# ----------------------
3820-# It is okay to use these file commands and assume they have been set
3821-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
3822-m4_defun([_LT_FILEUTILS_DEFAULTS],
3823-[: ${CP="cp -f"}
3824-: ${MV="mv -f"}
3825-: ${RM="rm -f"}
3826-])# _LT_FILEUTILS_DEFAULTS
3827-
3828-
3829-# _LT_SETUP
3830-# ---------
3831-m4_defun([_LT_SETUP],
3832-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
3833-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
3834-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
3835-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
3836-
3837-_LT_DECL([], [host_alias], [0], [The host system])dnl
3838-_LT_DECL([], [host], [0])dnl
3839-_LT_DECL([], [host_os], [0])dnl
3840-dnl
3841-_LT_DECL([], [build_alias], [0], [The build system])dnl
3842-_LT_DECL([], [build], [0])dnl
3843-_LT_DECL([], [build_os], [0])dnl
3844-dnl
3845-AC_REQUIRE([AC_PROG_CC])dnl
3846-AC_REQUIRE([LT_PATH_LD])dnl
3847-AC_REQUIRE([LT_PATH_NM])dnl
3848-dnl
3849-AC_REQUIRE([AC_PROG_LN_S])dnl
3850-test -z "$LN_S" && LN_S="ln -s"
3851-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
3852-dnl
3853-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
3854-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
3855-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
3856-dnl
3857-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
3858-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
3859-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
3860-m4_require([_LT_CMD_RELOAD])dnl
3861-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
3862-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
3863-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
3864-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
3865-m4_require([_LT_WITH_SYSROOT])dnl
3866-
3867-_LT_CONFIG_LIBTOOL_INIT([
3868-# See if we are running on zsh, and set the options which allow our
3869-# commands through without removal of \ escapes INIT.
3870-if test -n "\${ZSH_VERSION+set}" ; then
3871- setopt NO_GLOB_SUBST
3872-fi
3873-])
3874-if test -n "${ZSH_VERSION+set}" ; then
3875- setopt NO_GLOB_SUBST
3876-fi
3877-
3878-_LT_CHECK_OBJDIR
3879-
3880-m4_require([_LT_TAG_COMPILER])dnl
3881-
3882-case $host_os in
3883-aix3*)
3884- # AIX sometimes has problems with the GCC collect2 program. For some
3885- # reason, if we set the COLLECT_NAMES environment variable, the problems
3886- # vanish in a puff of smoke.
3887- if test "X${COLLECT_NAMES+set}" != Xset; then
3888- COLLECT_NAMES=
3889- export COLLECT_NAMES
3890- fi
3891- ;;
3892-esac
3893-
3894-# Global variables:
3895-ofile=libtool
3896-can_build_shared=yes
3897-
3898-# All known linkers require a `.a' archive for static linking (except MSVC,
3899-# which needs '.lib').
3900-libext=a
3901-
3902-with_gnu_ld="$lt_cv_prog_gnu_ld"
3903-
3904-old_CC="$CC"
3905-old_CFLAGS="$CFLAGS"
3906-
3907-# Set sane defaults for various variables
3908-test -z "$CC" && CC=cc
3909-test -z "$LTCC" && LTCC=$CC
3910-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
3911-test -z "$LD" && LD=ld
3912-test -z "$ac_objext" && ac_objext=o
3913-
3914-_LT_CC_BASENAME([$compiler])
3915-
3916-# Only perform the check for file, if the check method requires it
3917-test -z "$MAGIC_CMD" && MAGIC_CMD=file
3918-case $deplibs_check_method in
3919-file_magic*)
3920- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
3921- _LT_PATH_MAGIC
3922- fi
3923- ;;
3924-esac
3925-
3926-# Use C for the default configuration in the libtool script
3927-LT_SUPPORTED_TAG([CC])
3928-_LT_LANG_C_CONFIG
3929-_LT_LANG_DEFAULT_CONFIG
3930-_LT_CONFIG_COMMANDS
3931-])# _LT_SETUP
3932-
3933-
3934-# _LT_PREPARE_SED_QUOTE_VARS
3935-# --------------------------
3936-# Define a few sed substitution that help us do robust quoting.
3937-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
3938-[# Backslashify metacharacters that are still active within
3939-# double-quoted strings.
3940-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
3941-
3942-# Same as above, but do not quote variable references.
3943-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
3944-
3945-# Sed substitution to delay expansion of an escaped shell variable in a
3946-# double_quote_subst'ed string.
3947-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
3948-
3949-# Sed substitution to delay expansion of an escaped single quote.
3950-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
3951-
3952-# Sed substitution to avoid accidental globbing in evaled expressions
3953-no_glob_subst='s/\*/\\\*/g'
3954-])
3955-
3956-# _LT_PROG_LTMAIN
3957-# ---------------
3958-# Note that this code is called both from `configure', and `config.status'
3959-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
3960-# `config.status' has no value for ac_aux_dir unless we are using Automake,
3961-# so we pass a copy along to make sure it has a sensible value anyway.
3962-m4_defun([_LT_PROG_LTMAIN],
3963-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
3964-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
3965-ltmain="$ac_aux_dir/ltmain.sh"
3966-])# _LT_PROG_LTMAIN
3967-
3968-
3969-
3970-# So that we can recreate a full libtool script including additional
3971-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
3972-# in macros and then make a single call at the end using the `libtool'
3973-# label.
3974-
3975-
3976-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
3977-# ----------------------------------------
3978-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
3979-m4_define([_LT_CONFIG_LIBTOOL_INIT],
3980-[m4_ifval([$1],
3981- [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
3982- [$1
3983-])])])
3984-
3985-# Initialize.
3986-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
3987-
3988-
3989-# _LT_CONFIG_LIBTOOL([COMMANDS])
3990-# ------------------------------
3991-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
3992-m4_define([_LT_CONFIG_LIBTOOL],
3993-[m4_ifval([$1],
3994- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
3995- [$1
3996-])])])
3997-
3998-# Initialize.
3999-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
4000-
4001-
4002-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
4003-# -----------------------------------------------------
4004-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
4005-[_LT_CONFIG_LIBTOOL([$1])
4006-_LT_CONFIG_LIBTOOL_INIT([$2])
4007-])
4008-
4009-
4010-# _LT_FORMAT_COMMENT([COMMENT])
4011-# -----------------------------
4012-# Add leading comment marks to the start of each line, and a trailing
4013-# full-stop to the whole comment if one is not present already.
4014-m4_define([_LT_FORMAT_COMMENT],
4015-[m4_ifval([$1], [
4016-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
4017- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
4018-)])
4019-
4020-
4021-
4022-
4023-
4024-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
4025-# -------------------------------------------------------------------
4026-# CONFIGNAME is the name given to the value in the libtool script.
4027-# VARNAME is the (base) name used in the configure script.
4028-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
4029-# VARNAME. Any other value will be used directly.
4030-m4_define([_LT_DECL],
4031-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
4032- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
4033- [m4_ifval([$1], [$1], [$2])])
4034- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
4035- m4_ifval([$4],
4036- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
4037- lt_dict_add_subkey([lt_decl_dict], [$2],
4038- [tagged?], [m4_ifval([$5], [yes], [no])])])
4039-])
4040-
4041-
4042-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
4043-# --------------------------------------------------------
4044-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
4045-
4046-
4047-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
4048-# ------------------------------------------------
4049-m4_define([lt_decl_tag_varnames],
4050-[_lt_decl_filter([tagged?], [yes], $@)])
4051-
4052-
4053-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
4054-# ---------------------------------------------------------
4055-m4_define([_lt_decl_filter],
4056-[m4_case([$#],
4057- [0], [m4_fatal([$0: too few arguments: $#])],
4058- [1], [m4_fatal([$0: too few arguments: $#: $1])],
4059- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
4060- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
4061- [lt_dict_filter([lt_decl_dict], $@)])[]dnl
4062-])
4063-
4064-
4065-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
4066-# --------------------------------------------------
4067-m4_define([lt_decl_quote_varnames],
4068-[_lt_decl_filter([value], [1], $@)])
4069-
4070-
4071-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
4072-# ---------------------------------------------------
4073-m4_define([lt_decl_dquote_varnames],
4074-[_lt_decl_filter([value], [2], $@)])
4075-
4076-
4077-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
4078-# ---------------------------------------------------
4079-m4_define([lt_decl_varnames_tagged],
4080-[m4_assert([$# <= 2])dnl
4081-_$0(m4_quote(m4_default([$1], [[, ]])),
4082- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
4083- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
4084-m4_define([_lt_decl_varnames_tagged],
4085-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
4086-
4087-
4088-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
4089-# ------------------------------------------------
4090-m4_define([lt_decl_all_varnames],
4091-[_$0(m4_quote(m4_default([$1], [[, ]])),
4092- m4_if([$2], [],
4093- m4_quote(lt_decl_varnames),
4094- m4_quote(m4_shift($@))))[]dnl
4095-])
4096-m4_define([_lt_decl_all_varnames],
4097-[lt_join($@, lt_decl_varnames_tagged([$1],
4098- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
4099-])
4100-
4101-
4102-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
4103-# ------------------------------------
4104-# Quote a variable value, and forward it to `config.status' so that its
4105-# declaration there will have the same value as in `configure'. VARNAME
4106-# must have a single quote delimited value for this to work.
4107-m4_define([_LT_CONFIG_STATUS_DECLARE],
4108-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
4109-
4110-
4111-# _LT_CONFIG_STATUS_DECLARATIONS
4112-# ------------------------------
4113-# We delimit libtool config variables with single quotes, so when
4114-# we write them to config.status, we have to be sure to quote all
4115-# embedded single quotes properly. In configure, this macro expands
4116-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
4117-#
4118-# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
4119-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
4120-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
4121- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
4122-
4123-
4124-# _LT_LIBTOOL_TAGS
4125-# ----------------
4126-# Output comment and list of tags supported by the script
4127-m4_defun([_LT_LIBTOOL_TAGS],
4128-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
4129-available_tags="_LT_TAGS"dnl
4130-])
4131-
4132-
4133-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
4134-# -----------------------------------
4135-# Extract the dictionary values for VARNAME (optionally with TAG) and
4136-# expand to a commented shell variable setting:
4137-#
4138-# # Some comment about what VAR is for.
4139-# visible_name=$lt_internal_name
4140-m4_define([_LT_LIBTOOL_DECLARE],
4141-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
4142- [description])))[]dnl
4143-m4_pushdef([_libtool_name],
4144- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
4145-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
4146- [0], [_libtool_name=[$]$1],
4147- [1], [_libtool_name=$lt_[]$1],
4148- [2], [_libtool_name=$lt_[]$1],
4149- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
4150-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
4151-])
4152-
4153-
4154-# _LT_LIBTOOL_CONFIG_VARS
4155-# -----------------------
4156-# Produce commented declarations of non-tagged libtool config variables
4157-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
4158-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
4159-# section) are produced by _LT_LIBTOOL_TAG_VARS.
4160-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
4161-[m4_foreach([_lt_var],
4162- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
4163- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
4164-
4165-
4166-# _LT_LIBTOOL_TAG_VARS(TAG)
4167-# -------------------------
4168-m4_define([_LT_LIBTOOL_TAG_VARS],
4169-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
4170- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
4171-
4172-
4173-# _LT_TAGVAR(VARNAME, [TAGNAME])
4174-# ------------------------------
4175-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
4176-
4177-
4178-# _LT_CONFIG_COMMANDS
4179-# -------------------
4180-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
4181-# variables for single and double quote escaping we saved from calls
4182-# to _LT_DECL, we can put quote escaped variables declarations
4183-# into `config.status', and then the shell code to quote escape them in
4184-# for loops in `config.status'. Finally, any additional code accumulated
4185-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
4186-m4_defun([_LT_CONFIG_COMMANDS],
4187-[AC_PROVIDE_IFELSE([LT_OUTPUT],
4188- dnl If the libtool generation code has been placed in $CONFIG_LT,
4189- dnl instead of duplicating it all over again into config.status,
4190- dnl then we will have config.status run $CONFIG_LT later, so it
4191- dnl needs to know what name is stored there:
4192- [AC_CONFIG_COMMANDS([libtool],
4193- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
4194- dnl If the libtool generation code is destined for config.status,
4195- dnl expand the accumulated commands and init code now:
4196- [AC_CONFIG_COMMANDS([libtool],
4197- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
4198-])#_LT_CONFIG_COMMANDS
4199-
4200-
4201-# Initialize.
4202-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
4203-[
4204-
4205-# The HP-UX ksh and POSIX shell print the target directory to stdout
4206-# if CDPATH is set.
4207-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
4208-
4209-sed_quote_subst='$sed_quote_subst'
4210-double_quote_subst='$double_quote_subst'
4211-delay_variable_subst='$delay_variable_subst'
4212-_LT_CONFIG_STATUS_DECLARATIONS
4213-LTCC='$LTCC'
4214-LTCFLAGS='$LTCFLAGS'
4215-compiler='$compiler_DEFAULT'
4216-
4217-# A function that is used when there is no print builtin or printf.
4218-func_fallback_echo ()
4219-{
4220- eval 'cat <<_LTECHO_EOF
4221-\$[]1
4222-_LTECHO_EOF'
4223-}
4224-
4225-# Quote evaled strings.
4226-for var in lt_decl_all_varnames([[ \
4227-]], lt_decl_quote_varnames); do
4228- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
4229- *[[\\\\\\\`\\"\\\$]]*)
4230- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
4231- ;;
4232- *)
4233- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
4234- ;;
4235- esac
4236-done
4237-
4238-# Double-quote double-evaled strings.
4239-for var in lt_decl_all_varnames([[ \
4240-]], lt_decl_dquote_varnames); do
4241- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
4242- *[[\\\\\\\`\\"\\\$]]*)
4243- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
4244- ;;
4245- *)
4246- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
4247- ;;
4248- esac
4249-done
4250-
4251-_LT_OUTPUT_LIBTOOL_INIT
4252-])
4253-
4254-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
4255-# ------------------------------------
4256-# Generate a child script FILE with all initialization necessary to
4257-# reuse the environment learned by the parent script, and make the
4258-# file executable. If COMMENT is supplied, it is inserted after the
4259-# `#!' sequence but before initialization text begins. After this
4260-# macro, additional text can be appended to FILE to form the body of
4261-# the child script. The macro ends with non-zero status if the
4262-# file could not be fully written (such as if the disk is full).
4263-m4_ifdef([AS_INIT_GENERATED],
4264-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
4265-[m4_defun([_LT_GENERATED_FILE_INIT],
4266-[m4_require([AS_PREPARE])]dnl
4267-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
4268-[lt_write_fail=0
4269-cat >$1 <<_ASEOF || lt_write_fail=1
4270-#! $SHELL
4271-# Generated by $as_me.
4272-$2
4273-SHELL=\${CONFIG_SHELL-$SHELL}
4274-export SHELL
4275-_ASEOF
4276-cat >>$1 <<\_ASEOF || lt_write_fail=1
4277-AS_SHELL_SANITIZE
4278-_AS_PREPARE
4279-exec AS_MESSAGE_FD>&1
4280-_ASEOF
4281-test $lt_write_fail = 0 && chmod +x $1[]dnl
4282-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
4283-
4284-# LT_OUTPUT
4285-# ---------
4286-# This macro allows early generation of the libtool script (before
4287-# AC_OUTPUT is called), incase it is used in configure for compilation
4288-# tests.
4289-AC_DEFUN([LT_OUTPUT],
4290-[: ${CONFIG_LT=./config.lt}
4291-AC_MSG_NOTICE([creating $CONFIG_LT])
4292-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
4293-[# Run this file to recreate a libtool stub with the current configuration.])
4294-
4295-cat >>"$CONFIG_LT" <<\_LTEOF
4296-lt_cl_silent=false
4297-exec AS_MESSAGE_LOG_FD>>config.log
4298-{
4299- echo
4300- AS_BOX([Running $as_me.])
4301-} >&AS_MESSAGE_LOG_FD
4302-
4303-lt_cl_help="\
4304-\`$as_me' creates a local libtool stub from the current configuration,
4305-for use in further configure time tests before the real libtool is
4306-generated.
4307-
4308-Usage: $[0] [[OPTIONS]]
4309-
4310- -h, --help print this help, then exit
4311- -V, --version print version number, then exit
4312- -q, --quiet do not print progress messages
4313- -d, --debug don't remove temporary files
4314-
4315-Report bugs to <bug-libtool@gnu.org>."
4316-
4317-lt_cl_version="\
4318-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
4319-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
4320-configured by $[0], generated by m4_PACKAGE_STRING.
4321-
4322-Copyright (C) 2010 Free Software Foundation, Inc.
4323-This config.lt script is free software; the Free Software Foundation
4324-gives unlimited permision to copy, distribute and modify it."
4325-
4326-while test $[#] != 0
4327-do
4328- case $[1] in
4329- --version | --v* | -V )
4330- echo "$lt_cl_version"; exit 0 ;;
4331- --help | --h* | -h )
4332- echo "$lt_cl_help"; exit 0 ;;
4333- --debug | --d* | -d )
4334- debug=: ;;
4335- --quiet | --q* | --silent | --s* | -q )
4336- lt_cl_silent=: ;;
4337-
4338- -*) AC_MSG_ERROR([unrecognized option: $[1]
4339-Try \`$[0] --help' for more information.]) ;;
4340-
4341- *) AC_MSG_ERROR([unrecognized argument: $[1]
4342-Try \`$[0] --help' for more information.]) ;;
4343- esac
4344- shift
4345-done
4346-
4347-if $lt_cl_silent; then
4348- exec AS_MESSAGE_FD>/dev/null
4349-fi
4350-_LTEOF
4351-
4352-cat >>"$CONFIG_LT" <<_LTEOF
4353-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
4354-_LTEOF
4355-
4356-cat >>"$CONFIG_LT" <<\_LTEOF
4357-AC_MSG_NOTICE([creating $ofile])
4358-_LT_OUTPUT_LIBTOOL_COMMANDS
4359-AS_EXIT(0)
4360-_LTEOF
4361-chmod +x "$CONFIG_LT"
4362-
4363-# configure is writing to config.log, but config.lt does its own redirection,
4364-# appending to config.log, which fails on DOS, as config.log is still kept
4365-# open by configure. Here we exec the FD to /dev/null, effectively closing
4366-# config.log, so it can be properly (re)opened and appended to by config.lt.
4367-lt_cl_success=:
4368-test "$silent" = yes &&
4369- lt_config_lt_args="$lt_config_lt_args --quiet"
4370-exec AS_MESSAGE_LOG_FD>/dev/null
4371-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
4372-exec AS_MESSAGE_LOG_FD>>config.log
4373-$lt_cl_success || AS_EXIT(1)
4374-])# LT_OUTPUT
4375-
4376-
4377-# _LT_CONFIG(TAG)
4378-# ---------------
4379-# If TAG is the built-in tag, create an initial libtool script with a
4380-# default configuration from the untagged config vars. Otherwise add code
4381-# to config.status for appending the configuration named by TAG from the
4382-# matching tagged config vars.
4383-m4_defun([_LT_CONFIG],
4384-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
4385-_LT_CONFIG_SAVE_COMMANDS([
4386- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
4387- m4_if(_LT_TAG, [C], [
4388- # See if we are running on zsh, and set the options which allow our
4389- # commands through without removal of \ escapes.
4390- if test -n "${ZSH_VERSION+set}" ; then
4391- setopt NO_GLOB_SUBST
4392- fi
4393-
4394- cfgfile="${ofile}T"
4395- trap "$RM \"$cfgfile\"; exit 1" 1 2 15
4396- $RM "$cfgfile"
4397-
4398- cat <<_LT_EOF >> "$cfgfile"
4399-#! $SHELL
4400-
4401-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
4402-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
4403-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
4404-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
4405-#
4406-_LT_COPYING
4407-_LT_LIBTOOL_TAGS
4408-
4409-# ### BEGIN LIBTOOL CONFIG
4410-_LT_LIBTOOL_CONFIG_VARS
4411-_LT_LIBTOOL_TAG_VARS
4412-# ### END LIBTOOL CONFIG
4413-
4414-_LT_EOF
4415-
4416- case $host_os in
4417- aix3*)
4418- cat <<\_LT_EOF >> "$cfgfile"
4419-# AIX sometimes has problems with the GCC collect2 program. For some
4420-# reason, if we set the COLLECT_NAMES environment variable, the problems
4421-# vanish in a puff of smoke.
4422-if test "X${COLLECT_NAMES+set}" != Xset; then
4423- COLLECT_NAMES=
4424- export COLLECT_NAMES
4425-fi
4426-_LT_EOF
4427- ;;
4428- esac
4429-
4430- _LT_PROG_LTMAIN
4431-
4432- # We use sed instead of cat because bash on DJGPP gets confused if
4433- # if finds mixed CR/LF and LF-only lines. Since sed operates in
4434- # text mode, it properly converts lines to CR/LF. This bash problem
4435- # is reportedly fixed, but why not run on old versions too?
4436- sed '$q' "$ltmain" >> "$cfgfile" \
4437- || (rm -f "$cfgfile"; exit 1)
4438-
4439- _LT_PROG_REPLACE_SHELLFNS
4440-
4441- mv -f "$cfgfile" "$ofile" ||
4442- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
4443- chmod +x "$ofile"
4444-],
4445-[cat <<_LT_EOF >> "$ofile"
4446-
4447-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
4448-dnl in a comment (ie after a #).
4449-# ### BEGIN LIBTOOL TAG CONFIG: $1
4450-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
4451-# ### END LIBTOOL TAG CONFIG: $1
4452-_LT_EOF
4453-])dnl /m4_if
4454-],
4455-[m4_if([$1], [], [
4456- PACKAGE='$PACKAGE'
4457- VERSION='$VERSION'
4458- TIMESTAMP='$TIMESTAMP'
4459- RM='$RM'
4460- ofile='$ofile'], [])
4461-])dnl /_LT_CONFIG_SAVE_COMMANDS
4462-])# _LT_CONFIG
4463-
4464-
4465-# LT_SUPPORTED_TAG(TAG)
4466-# ---------------------
4467-# Trace this macro to discover what tags are supported by the libtool
4468-# --tag option, using:
4469-# autoconf --trace 'LT_SUPPORTED_TAG:$1'
4470-AC_DEFUN([LT_SUPPORTED_TAG], [])
4471-
4472-
4473-# C support is built-in for now
4474-m4_define([_LT_LANG_C_enabled], [])
4475-m4_define([_LT_TAGS], [])
4476-
4477-
4478-# LT_LANG(LANG)
4479-# -------------
4480-# Enable libtool support for the given language if not already enabled.
4481-AC_DEFUN([LT_LANG],
4482-[AC_BEFORE([$0], [LT_OUTPUT])dnl
4483-m4_case([$1],
4484- [C], [_LT_LANG(C)],
4485- [C++], [_LT_LANG(CXX)],
4486- [Java], [_LT_LANG(GCJ)],
4487- [Fortran 77], [_LT_LANG(F77)],
4488- [Fortran], [_LT_LANG(FC)],
4489- [Windows Resource], [_LT_LANG(RC)],
4490- [m4_ifdef([_LT_LANG_]$1[_CONFIG],
4491- [_LT_LANG($1)],
4492- [m4_fatal([$0: unsupported language: "$1"])])])dnl
4493-])# LT_LANG
4494-
4495-
4496-# _LT_LANG(LANGNAME)
4497-# ------------------
4498-m4_defun([_LT_LANG],
4499-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
4500- [LT_SUPPORTED_TAG([$1])dnl
4501- m4_append([_LT_TAGS], [$1 ])dnl
4502- m4_define([_LT_LANG_]$1[_enabled], [])dnl
4503- _LT_LANG_$1_CONFIG($1)])dnl
4504-])# _LT_LANG
4505-
4506-
4507-# _LT_LANG_DEFAULT_CONFIG
4508-# -----------------------
4509-m4_defun([_LT_LANG_DEFAULT_CONFIG],
4510-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
4511- [LT_LANG(CXX)],
4512- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
4513-
4514-AC_PROVIDE_IFELSE([AC_PROG_F77],
4515- [LT_LANG(F77)],
4516- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
4517-
4518-AC_PROVIDE_IFELSE([AC_PROG_FC],
4519- [LT_LANG(FC)],
4520- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
4521-
4522-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
4523-dnl pulling things in needlessly.
4524-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
4525- [LT_LANG(GCJ)],
4526- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
4527- [LT_LANG(GCJ)],
4528- [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
4529- [LT_LANG(GCJ)],
4530- [m4_ifdef([AC_PROG_GCJ],
4531- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
4532- m4_ifdef([A][M_PROG_GCJ],
4533- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
4534- m4_ifdef([LT_PROG_GCJ],
4535- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
4536-
4537-AC_PROVIDE_IFELSE([LT_PROG_RC],
4538- [LT_LANG(RC)],
4539- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
4540-])# _LT_LANG_DEFAULT_CONFIG
4541-
4542-# Obsolete macros:
4543-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
4544-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
4545-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
4546-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
4547-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
4548-dnl aclocal-1.4 backwards compatibility:
4549-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
4550-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
4551-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
4552-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
4553-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
4554-
4555-
4556-# _LT_TAG_COMPILER
4557-# ----------------
4558-m4_defun([_LT_TAG_COMPILER],
4559-[AC_REQUIRE([AC_PROG_CC])dnl
4560-
4561-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
4562-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
4563-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
4564-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
4565-
4566-# If no C compiler was specified, use CC.
4567-LTCC=${LTCC-"$CC"}
4568-
4569-# If no C compiler flags were specified, use CFLAGS.
4570-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
4571-
4572-# Allow CC to be a program name with arguments.
4573-compiler=$CC
4574-])# _LT_TAG_COMPILER
4575-
4576-
4577-# _LT_COMPILER_BOILERPLATE
4578-# ------------------------
4579-# Check for compiler boilerplate output or warnings with
4580-# the simple compiler test code.
4581-m4_defun([_LT_COMPILER_BOILERPLATE],
4582-[m4_require([_LT_DECL_SED])dnl
4583-ac_outfile=conftest.$ac_objext
4584-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
4585-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
4586-_lt_compiler_boilerplate=`cat conftest.err`
4587-$RM conftest*
4588-])# _LT_COMPILER_BOILERPLATE
4589-
4590-
4591-# _LT_LINKER_BOILERPLATE
4592-# ----------------------
4593-# Check for linker boilerplate output or warnings with
4594-# the simple link test code.
4595-m4_defun([_LT_LINKER_BOILERPLATE],
4596-[m4_require([_LT_DECL_SED])dnl
4597-ac_outfile=conftest.$ac_objext
4598-echo "$lt_simple_link_test_code" >conftest.$ac_ext
4599-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
4600-_lt_linker_boilerplate=`cat conftest.err`
4601-$RM -r conftest*
4602-])# _LT_LINKER_BOILERPLATE
4603-
4604-# _LT_REQUIRED_DARWIN_CHECKS
4605-# -------------------------
4606-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
4607- case $host_os in
4608- rhapsody* | darwin*)
4609- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
4610- AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
4611- AC_CHECK_TOOL([LIPO], [lipo], [:])
4612- AC_CHECK_TOOL([OTOOL], [otool], [:])
4613- AC_CHECK_TOOL([OTOOL64], [otool64], [:])
4614- _LT_DECL([], [DSYMUTIL], [1],
4615- [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
4616- _LT_DECL([], [NMEDIT], [1],
4617- [Tool to change global to local symbols on Mac OS X])
4618- _LT_DECL([], [LIPO], [1],
4619- [Tool to manipulate fat objects and archives on Mac OS X])
4620- _LT_DECL([], [OTOOL], [1],
4621- [ldd/readelf like tool for Mach-O binaries on Mac OS X])
4622- _LT_DECL([], [OTOOL64], [1],
4623- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
4624-
4625- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
4626- [lt_cv_apple_cc_single_mod=no
4627- if test -z "${LT_MULTI_MODULE}"; then
4628- # By default we will add the -single_module flag. You can override
4629- # by either setting the environment variable LT_MULTI_MODULE
4630- # non-empty at configure time, or by adding -multi_module to the
4631- # link flags.
4632- rm -rf libconftest.dylib*
4633- echo "int foo(void){return 1;}" > conftest.c
4634- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
4635--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
4636- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
4637- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
4638- _lt_result=$?
4639- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
4640- lt_cv_apple_cc_single_mod=yes
4641- else
4642- cat conftest.err >&AS_MESSAGE_LOG_FD
4643- fi
4644- rm -rf libconftest.dylib*
4645- rm -f conftest.*
4646- fi])
4647- AC_CACHE_CHECK([for -exported_symbols_list linker flag],
4648- [lt_cv_ld_exported_symbols_list],
4649- [lt_cv_ld_exported_symbols_list=no
4650- save_LDFLAGS=$LDFLAGS
4651- echo "_main" > conftest.sym
4652- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
4653- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
4654- [lt_cv_ld_exported_symbols_list=yes],
4655- [lt_cv_ld_exported_symbols_list=no])
4656- LDFLAGS="$save_LDFLAGS"
4657- ])
4658- AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
4659- [lt_cv_ld_force_load=no
4660- cat > conftest.c << _LT_EOF
4661-int forced_loaded() { return 2;}
4662-_LT_EOF
4663- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
4664- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
4665- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
4666- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
4667- echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
4668- $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
4669- cat > conftest.c << _LT_EOF
4670-int main() { return 0;}
4671-_LT_EOF
4672- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
4673- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
4674- _lt_result=$?
4675- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
4676- lt_cv_ld_force_load=yes
4677- else
4678- cat conftest.err >&AS_MESSAGE_LOG_FD
4679- fi
4680- rm -f conftest.err libconftest.a conftest conftest.c
4681- rm -rf conftest.dSYM
4682- ])
4683- case $host_os in
4684- rhapsody* | darwin1.[[012]])
4685- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
4686- darwin1.*)
4687- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
4688- darwin*) # darwin 5.x on
4689- # if running on 10.5 or later, the deployment target defaults
4690- # to the OS version, if on x86, and 10.4, the deployment
4691- # target defaults to 10.4. Don't you love it?
4692- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
4693- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
4694- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
4695- 10.[[012]]*)
4696- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
4697- 10.*)
4698- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
4699- esac
4700- ;;
4701- esac
4702- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
4703- _lt_dar_single_mod='$single_module'
4704- fi
4705- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
4706- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
4707- else
4708- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
4709- fi
4710- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
4711- _lt_dsymutil='~$DSYMUTIL $lib || :'
4712- else
4713- _lt_dsymutil=
4714- fi
4715- ;;
4716- esac
4717-])
4718-
4719-
4720-# _LT_DARWIN_LINKER_FEATURES
4721-# --------------------------
4722-# Checks for linker and compiler features on darwin
4723-m4_defun([_LT_DARWIN_LINKER_FEATURES],
4724-[
4725- m4_require([_LT_REQUIRED_DARWIN_CHECKS])
4726- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
4727- _LT_TAGVAR(hardcode_direct, $1)=no
4728- _LT_TAGVAR(hardcode_automatic, $1)=yes
4729- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
4730- if test "$lt_cv_ld_force_load" = "yes"; then
4731- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
4732- else
4733- _LT_TAGVAR(whole_archive_flag_spec, $1)=''
4734- fi
4735- _LT_TAGVAR(link_all_deplibs, $1)=yes
4736- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
4737- case $cc_basename in
4738- ifort*) _lt_dar_can_shared=yes ;;
4739- *) _lt_dar_can_shared=$GCC ;;
4740- esac
4741- if test "$_lt_dar_can_shared" = "yes"; then
4742- output_verbose_link_cmd=func_echo_all
4743- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
4744- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
4745- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
4746- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
4747- m4_if([$1], [CXX],
4748-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
4749- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
4750- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
4751- fi
4752-],[])
4753- else
4754- _LT_TAGVAR(ld_shlibs, $1)=no
4755- fi
4756-])
4757-
4758-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
4759-# ----------------------------------
4760-# Links a minimal program and checks the executable
4761-# for the system default hardcoded library path. In most cases,
4762-# this is /usr/lib:/lib, but when the MPI compilers are used
4763-# the location of the communication and MPI libs are included too.
4764-# If we don't find anything, use the default library path according
4765-# to the aix ld manual.
4766-# Store the results from the different compilers for each TAGNAME.
4767-# Allow to override them for all tags through lt_cv_aix_libpath.
4768-m4_defun([_LT_SYS_MODULE_PATH_AIX],
4769-[m4_require([_LT_DECL_SED])dnl
4770-if test "${lt_cv_aix_libpath+set}" = set; then
4771- aix_libpath=$lt_cv_aix_libpath
4772-else
4773- AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
4774- [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
4775- lt_aix_libpath_sed='[
4776- /Import File Strings/,/^$/ {
4777- /^0/ {
4778- s/^0 *\([^ ]*\) *$/\1/
4779- p
4780- }
4781- }]'
4782- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
4783- # Check for a 64-bit object if we didn't find anything.
4784- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
4785- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
4786- fi],[])
4787- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
4788- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
4789- fi
4790- ])
4791- aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
4792-fi
4793-])# _LT_SYS_MODULE_PATH_AIX
4794-
4795-
4796-# _LT_SHELL_INIT(ARG)
4797-# -------------------
4798-m4_define([_LT_SHELL_INIT],
4799-[m4_divert_text([M4SH-INIT], [$1
4800-])])# _LT_SHELL_INIT
4801-
4802-
4803-
4804-# _LT_PROG_ECHO_BACKSLASH
4805-# -----------------------
4806-# Find how we can fake an echo command that does not interpret backslash.
4807-# In particular, with Autoconf 2.60 or later we add some code to the start
4808-# of the generated configure script which will find a shell with a builtin
4809-# printf (which we can use as an echo command).
4810-m4_defun([_LT_PROG_ECHO_BACKSLASH],
4811-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
4812-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
4813-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
4814-
4815-AC_MSG_CHECKING([how to print strings])
4816-# Test print first, because it will be a builtin if present.
4817-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
4818- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
4819- ECHO='print -r --'
4820-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
4821- ECHO='printf %s\n'
4822-else
4823- # Use this function as a fallback that always works.
4824- func_fallback_echo ()
4825- {
4826- eval 'cat <<_LTECHO_EOF
4827-$[]1
4828-_LTECHO_EOF'
4829- }
4830- ECHO='func_fallback_echo'
4831-fi
4832-
4833-# func_echo_all arg...
4834-# Invoke $ECHO with all args, space-separated.
4835-func_echo_all ()
4836-{
4837- $ECHO "$*"
4838-}
4839-
4840-case "$ECHO" in
4841- printf*) AC_MSG_RESULT([printf]) ;;
4842- print*) AC_MSG_RESULT([print -r]) ;;
4843- *) AC_MSG_RESULT([cat]) ;;
4844-esac
4845-
4846-m4_ifdef([_AS_DETECT_SUGGESTED],
4847-[_AS_DETECT_SUGGESTED([
4848- test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
4849- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
4850- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
4851- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
4852- PATH=/empty FPATH=/empty; export PATH FPATH
4853- test "X`printf %s $ECHO`" = "X$ECHO" \
4854- || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
4855-
4856-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
4857-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
4858-])# _LT_PROG_ECHO_BACKSLASH
4859-
4860-
4861-# _LT_WITH_SYSROOT
4862-# ----------------
4863-AC_DEFUN([_LT_WITH_SYSROOT],
4864-[AC_MSG_CHECKING([for sysroot])
4865-AC_ARG_WITH([sysroot],
4866-[ --with-sysroot[=DIR] Search for dependent libraries within DIR
4867- (or the compiler's sysroot if not specified).],
4868-[], [with_sysroot=no])
4869-
4870-dnl lt_sysroot will always be passed unquoted. We quote it here
4871-dnl in case the user passed a directory name.
4872-lt_sysroot=
4873-case ${with_sysroot} in #(
4874- yes)
4875- if test "$GCC" = yes; then
4876- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
4877- fi
4878- ;; #(
4879- /*)
4880- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
4881- ;; #(
4882- no|'')
4883- ;; #(
4884- *)
4885- AC_MSG_RESULT([${with_sysroot}])
4886- AC_MSG_ERROR([The sysroot must be an absolute path.])
4887- ;;
4888-esac
4889-
4890- AC_MSG_RESULT([${lt_sysroot:-no}])
4891-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
4892-[dependent libraries, and in which our libraries should be installed.])])
4893-
4894-# _LT_ENABLE_LOCK
4895-# ---------------
4896-m4_defun([_LT_ENABLE_LOCK],
4897-[AC_ARG_ENABLE([libtool-lock],
4898- [AS_HELP_STRING([--disable-libtool-lock],
4899- [avoid locking (might break parallel builds)])])
4900-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
4901-
4902-# Some flags need to be propagated to the compiler or linker for good
4903-# libtool support.
4904-case $host in
4905-ia64-*-hpux*)
4906- # Find out which ABI we are using.
4907- echo 'int i;' > conftest.$ac_ext
4908- if AC_TRY_EVAL(ac_compile); then
4909- case `/usr/bin/file conftest.$ac_objext` in
4910- *ELF-32*)
4911- HPUX_IA64_MODE="32"
4912- ;;
4913- *ELF-64*)
4914- HPUX_IA64_MODE="64"
4915- ;;
4916- esac
4917- fi
4918- rm -rf conftest*
4919- ;;
4920-*-*-irix6*)
4921- # Find out which ABI we are using.
4922- echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
4923- if AC_TRY_EVAL(ac_compile); then
4924- if test "$lt_cv_prog_gnu_ld" = yes; then
4925- case `/usr/bin/file conftest.$ac_objext` in
4926- *32-bit*)
4927- LD="${LD-ld} -melf32bsmip"
4928- ;;
4929- *N32*)
4930- LD="${LD-ld} -melf32bmipn32"
4931- ;;
4932- *64-bit*)
4933- LD="${LD-ld} -melf64bmip"
4934- ;;
4935- esac
4936- else
4937- case `/usr/bin/file conftest.$ac_objext` in
4938- *32-bit*)
4939- LD="${LD-ld} -32"
4940- ;;
4941- *N32*)
4942- LD="${LD-ld} -n32"
4943- ;;
4944- *64-bit*)
4945- LD="${LD-ld} -64"
4946- ;;
4947- esac
4948- fi
4949- fi
4950- rm -rf conftest*
4951- ;;
4952-
4953-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
4954-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
4955- # Find out which ABI we are using.
4956- echo 'int i;' > conftest.$ac_ext
4957- if AC_TRY_EVAL(ac_compile); then
4958- case `/usr/bin/file conftest.o` in
4959- *32-bit*)
4960- case $host in
4961- x86_64-*kfreebsd*-gnu)
4962- LD="${LD-ld} -m elf_i386_fbsd"
4963- ;;
4964- x86_64-*linux*)
4965- LD="${LD-ld} -m elf_i386"
4966- ;;
4967- ppc64-*linux*|powerpc64-*linux*)
4968- LD="${LD-ld} -m elf32ppclinux"
4969- ;;
4970- s390x-*linux*)
4971- LD="${LD-ld} -m elf_s390"
4972- ;;
4973- sparc64-*linux*)
4974- LD="${LD-ld} -m elf32_sparc"
4975- ;;
4976- esac
4977- ;;
4978- *64-bit*)
4979- case $host in
4980- x86_64-*kfreebsd*-gnu)
4981- LD="${LD-ld} -m elf_x86_64_fbsd"
4982- ;;
4983- x86_64-*linux*)
4984- LD="${LD-ld} -m elf_x86_64"
4985- ;;
4986- ppc*-*linux*|powerpc*-*linux*)
4987- LD="${LD-ld} -m elf64ppc"
4988- ;;
4989- s390*-*linux*|s390*-*tpf*)
4990- LD="${LD-ld} -m elf64_s390"
4991- ;;
4992- sparc*-*linux*)
4993- LD="${LD-ld} -m elf64_sparc"
4994- ;;
4995- esac
4996- ;;
4997- esac
4998- fi
4999- rm -rf conftest*
5000- ;;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches