Merge lp:~stgraber/ubuntu/saucy/nfs-utils/debian-merge into lp:ubuntu/saucy/nfs-utils
- Saucy (13.10)
- debian-merge
- Merge into saucy
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 |
Related bugs: |
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.
Commit message
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.