From 49b331105f48df040fb65f9f7659e8acee8683c8 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Mar 16 2009 18:15:00 +0000 Subject: Added upstream rc2 patch --- diff --git a/nfs-utils-1-1-6-rc2.patch b/nfs-utils-1-1-6-rc2.patch new file mode 100644 index 0000000..df054c4 --- /dev/null +++ b/nfs-utils-1-1-6-rc2.patch @@ -0,0 +1,756 @@ +diff --git a/Makefile.am b/Makefile.am +index 88ae210..b3a6e91 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -40,7 +40,12 @@ EXTRA_DIST = \ + aclocal/bsdsignals.m4 \ + aclocal/nfs-utils.m4 \ + aclocal/kerberos5.m4 \ +- aclocal/tcp-wrappers.m4 ++ aclocal/tcp-wrappers.m4 \ ++ aclocal/libtirpc.m4 \ ++ aclocal/libevent.m4 \ ++ aclocal/libnfsidmap.m4 \ ++ aclocal/rpcsec_vers.m4 \ ++ aclocal/ipv6.m4 + + ACLOCAL_AMFLAGS = -I aclocal + +diff --git a/aclocal/ipv6.m4 b/aclocal/ipv6.m4 +new file mode 100644 +index 0000000..0564b3e +--- /dev/null ++++ b/aclocal/ipv6.m4 +@@ -0,0 +1,29 @@ ++dnl Checks for IPv6 support ++dnl ++AC_DEFUN([AC_IPV6], [ ++ ++ AC_CHECK_DECL([AI_ADDRCONFIG], ++ [AC_DEFINE([HAVE_DECL_AI_ADDRCONFIG], 1, ++ [Define this to 1 if AI_ADDRCONFIG macro is defined])], , ++ [ #include ]) ++ ++ if test "$enable_ipv6" = yes; then ++ ++ dnl TI-RPC required for IPv6 ++ if test "$enable_tirpc" = no; then ++ AC_MSG_ERROR(['--enable-ipv6' requires '--enable-tirpc'.]) ++ fi ++ ++ dnl IPv6-enabled networking functions required for IPv6 ++ AC_CHECK_FUNCS([getnameinfo bindresvport_sa], , , ++ [AC_MSG_ERROR([Missing functions needed for IPv6.])]) ++ ++ dnl Need to detect presence of IPv6 networking at run time via ++ dnl getaddrinfo(3); old versions of glibc do not support ADDRCONFIG ++ AC_CHECK_DECL([AI_ADDRCONFIG], , ++ [AC_MSG_ERROR([full getaddrinfo(3) implementation needed for IPv6 support])], ++ [ #include ]) ++ ++ fi ++ ++])dnl +diff --git a/aclocal/libevent.m4 b/aclocal/libevent.m4 +new file mode 100644 +index 0000000..3c962b3 +--- /dev/null ++++ b/aclocal/libevent.m4 +@@ -0,0 +1,11 @@ ++dnl Checks for libevent ++AC_DEFUN([AC_LIBEVENT], [ ++ ++ dnl Check for libevent, but do not add -levent to LIBS ++ AC_CHECK_LIB([event], [event_dispatch], [libevent=1], ++ [AC_MSG_ERROR([libevent not found.])]) ++ ++ AC_CHECK_HEADERS([event.h], , ++ [AC_MSG_ERROR([libevent headers not found.])]) ++ ++])dnl +diff --git a/aclocal/libnfsidmap.m4 b/aclocal/libnfsidmap.m4 +new file mode 100644 +index 0000000..cfcde2f +--- /dev/null ++++ b/aclocal/libnfsidmap.m4 +@@ -0,0 +1,17 @@ ++dnl Checks for libnfsidmap ++dnl ++AC_DEFUN([AC_LIBNFSIDMAP], [ ++ ++ dnl Check for libnfsidmap, but do not add -lnfsidmap to LIBS ++ AC_CHECK_LIB([nfsidmap], [nfs4_init_name_mapping], [libnfsidmap=1], ++ [AC_MSG_ERROR([libnfsidmap not found.])]) ++ ++ AC_CHECK_HEADERS([nfsidmap.h], , ++ [AC_MSG_ERROR([libnfsidmap headers not found.])]) ++ ++ dnl nfs4_set_debug() doesn't appear in all versions of libnfsidmap ++ AC_CHECK_LIB([nfsidmap], [nfs4_set_debug], ++ [AC_DEFINE([HAVE_NFS4_SET_DEBUG], 1, ++ [Define to 1 if you have the `nfs4_set_debug' function.])]) ++ ++])dnl +diff --git a/aclocal/librpcsecgss.m4 b/aclocal/librpcsecgss.m4 +new file mode 100644 +index 0000000..d1dd25e +--- /dev/null ++++ b/aclocal/librpcsecgss.m4 +@@ -0,0 +1,19 @@ ++dnl Checks for rpcsecgss library and headers ++dnl KRB5LIBS must be set before this function is invoked. ++dnl ++AC_DEFUN([AC_LIBRPCSECGSS], [ ++ ++ dnl libtirpc provides an rpcsecgss API ++ if test "$enable_tirpc" = no; then ++ ++ dnl Check for library, but do not add -lrpcsecgss to LIBS ++ AC_CHECK_LIB([rpcsecgss], [authgss_create_default], [librpcsecgss=1], ++ [AC_MSG_ERROR([librpcsecgss not found.])]) ++ ++ AC_CHECK_LIB([rpcsecgss], [authgss_set_debug_level], ++ [AC_DEFINE([HAVE_AUTHGSS_SET_DEBUG_LEVEL], 1, ++ [Define to 1 if you have the `authgss_set_debug_level' function.])]) ++ ++ fi ++ ++])dnl +diff --git a/aclocal/libtirpc.m4 b/aclocal/libtirpc.m4 +new file mode 100644 +index 0000000..af4c7d3 +--- /dev/null ++++ b/aclocal/libtirpc.m4 +@@ -0,0 +1,28 @@ ++dnl Checks for TI-RPC library and headers ++dnl ++AC_DEFUN([AC_LIBTIRPC], [ ++ ++ AC_ARG_WITH([tirpcinclude], ++ [AC_HELP_STRING([--with-tirpcinclude=DIR], ++ [use TI-RPC headers in DIR])], ++ [tirpc_header_dir=$withval], ++ [tirpc_header_dir=/usr/include/tirpc]) ++ ++ dnl if --enable-tirpc was specifed, the following components ++ dnl must be present, and we set up HAVE_ macros for them. ++ ++ if test "$enable_tirpc" = yes; then ++ ++ dnl look for the library; add to LIBS if found ++ AC_CHECK_LIB([tirpc], [clnt_tli_create], , ++ [AC_MSG_ERROR([libtirpc not found.])]) ++ ++ dnl also must have the headers installed where we expect ++ dnl look for headers; add -I compiler option if found ++ AC_CHECK_HEADERS([${tirpc_header_dir}/netconfig.h], , ++ [AC_MSG_ERROR([libtirpc headers not found.])]) ++ AC_SUBST([AM_CPPFLAGS], ["-I${tirpc_header_dir}"]) ++ ++ fi ++ ++])dnl +diff --git a/aclocal/rpcsec_vers.m4 b/aclocal/rpcsec_vers.m4 +new file mode 100644 +index 0000000..e59c0aa +--- /dev/null ++++ b/aclocal/rpcsec_vers.m4 +@@ -0,0 +1,12 @@ ++dnl Checks librpcsec version ++AC_DEFUN([AC_RPCSEC_VERSION], [ ++ ++ dnl TI-RPC replaces librpcsecgss, but we still need libgssglue ++ if test "$enable_tirpc" = no; then ++ PKG_CHECK_MODULES([RPCSECGSS], [librpcsecgss >= 0.16], , ++ [AC_MSG_ERROR([Unable to locate information required to use librpcsecgss. If you have pkgconfig installed, you might try setting environment variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])]) ++ else ++ PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1]) ++ fi ++ ++])dnl +diff --git a/configure.ac b/configure.ac +index 5db4417..e34b7e2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -118,6 +118,11 @@ AC_ARG_ENABLE(mount, + enable_mount=$enableval, + enable_mount=yes) + AM_CONDITIONAL(CONFIG_MOUNT, [test "$enable_mount" = "yes"]) ++AC_ARG_ENABLE(tirpc, ++ [AC_HELP_STRING([--enable-tirpc], ++ [enable use of TI-RPC @<:@default=no@:>@])], ++ enable_tirpc=$enableval, ++ enable_tirpc=no) + AC_ARG_ENABLE(ipv6, + [AC_HELP_STRING([--enable-ipv6], + [enable support for IPv6 @<:@default=no@:>@])], +@@ -131,13 +136,8 @@ AC_ARG_ENABLE(ipv6, + AC_SUBST(enable_ipv6) + AM_CONDITIONAL(CONFIG_IPV6, [test "$enable_ipv6" = "yes"]) + +-AC_ARG_ENABLE(tirpc, +- [AC_HELP_STRING([--enable-tirpc], +- [enable use of TI-RPC @<:@default=no@:>@])], +- enable_tirpc=$enableval, +- enable_tirpc=no) +- AC_SUBST(enable_tirpc) +- AM_CONDITIONAL(CONFIG_TIRPC, [test "$enable_tirpc" = "yes"]) ++dnl Check for TI-RPC library and headers ++AC_LIBTIRPC + + # Check whether user wants TCP wrappers support + AC_TCP_WRAPPERS +@@ -176,39 +176,40 @@ AC_BSD_SIGNALS + dnl ************************************************************* + dnl * Check for required libraries + dnl ************************************************************* +-AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname, [LIBNSL="-lnsl"])]) ++ ++AC_CHECK_FUNC([gethostbyname], , ++ [AC_CHECK_LIB([nsl], [gethostbyname], [LIBNSL="-lnsl"])]) + AC_SUBST(LIBNSL) + +-AC_CHECK_FUNC(connect, , +- AC_CHECK_LIB(socket, connect, [LIBSOCKET="-lsocket"], +- AC_MSG_ERROR(Function 'socket' not found.), $LIBNSL)) ++AC_CHECK_FUNC([connect], , ++ [AC_CHECK_LIB([socket], [connect], [LIBSOCKET="-lsocket"], ++ [AC_MSG_ERROR([Function 'socket' not found.])], [$LIBNSL])]) ++ ++AC_CHECK_FUNC([getaddrinfo], , , ++ [AC_MSG_ERROR([Function 'getaddrinfo' not found.])]) + +-AC_CHECK_FUNC(getaddrinfo, , , +- AC_MSG_ERROR(Function 'getaddrinfo' not found.)) ++AC_CHECK_FUNC([getrpcbynumber], , , ++ [AC_MSG_ERROR([Function 'getrpcbynumber' not found.])]) + +-AC_CHECK_FUNC(getrpcbynumber, , , +- AC_MSG_ERROR(Function 'getrpcbynumber' not found.)) ++AC_CHECK_FUNC([getservbyname], , , ++ [AC_MSG_ERROR([Function 'getservbyname' not found.])]) + +-AC_CHECK_FUNC(getservbyname, , , +- AC_MSG_ERROR(Function 'getservbyname' not found.)) ++AC_CHECK_LIB([crypt], [crypt], [LIBCRYPT="-lcrypt"]) + +-AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"]) + if test "$enable_nfsv4" = yes; then +- AC_CHECK_LIB(event, event_dispatch, [libevent=1], AC_MSG_ERROR([libevent needed for nfsv4 support])) +- AC_CHECK_LIB(nfsidmap, nfs4_init_name_mapping, [libnfsidmap=1], AC_MSG_ERROR([libnfsidmap needed for nfsv4 support])) +- AC_CHECK_HEADERS(event.h, ,AC_MSG_ERROR([libevent needed for nfsv4 support])) +- AC_CHECK_HEADERS(nfsidmap.h, ,AC_MSG_ERROR([libnfsidmap needed for nfsv4 support])) +- dnl librpcsecgss already has a dependency on libgssapi, +- dnl but we need to make sure we get the right version +- if test "$enable_gss" = yes; then +- PKG_CHECK_MODULES(RPCSECGSS, librpcsecgss >= 0.16, , +- [AC_MSG_ERROR([Unable to locate information required to use librpcsecgss. If you have pkgconfig installed, you might try setting environment variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig]) +- ] +- ) +- PKG_CHECK_MODULES(GSSGLUE, libgssglue >= 0.1) +- fi ++ dnl check for libevent libraries and headers ++ AC_LIBEVENT ++ ++ dnl check for nfsidmap libraries and headers ++ AC_LIBNFSIDMAP + ++ dnl librpcsecgss already has a dependency on libgssapi, ++ dnl but we need to make sure we get the right version ++ if test "$enable_gss" = yes; then ++ AC_RPCSEC_VERSION ++ fi + fi ++ + if test "$knfsd_cv_glibc2" = no; then + AC_CHECK_LIB(bsd, daemon, [LIBBSD="-lbsd"]) + fi +@@ -236,49 +237,21 @@ AC_SUBST(LIBBLKID) + + if test "$enable_gss" = yes; then + dnl 'gss' also depends on nfsidmap.h - at least for svcgssd_proc.c +- AC_CHECK_HEADERS(nfsidmap.h, ,AC_MSG_ERROR([libnfsidmap needed for gss support])) +- AC_CHECK_HEADERS(spkm3.h, ,AC_MSG_WARN([could not locate SPKM3 header; will not have SPKM3 support])) +- dnl the nfs4_set_debug function doesn't appear in all version of the library +- AC_CHECK_LIB(nfsidmap, nfs4_set_debug, +- AC_DEFINE(HAVE_NFS4_SET_DEBUG,1, +- [Whether nfs4_set_debug() is present in libnfsidmap]),) ++ AC_LIBNFSIDMAP ++ ++ AC_CHECK_HEADERS([spkm3.h], , ++ [AC_MSG_WARN([Could not locate SPKM3 header; will not have SPKM3 support])]) + + dnl Check for Kerberos V5 + AC_KERBEROS_V5 + +- dnl This is not done until here because we need to have KRBLIBS set +- dnl ("librpcsecgss=1" is so that it doesn't get added to LIBS) +- AC_CHECK_LIB(rpcsecgss, authgss_create_default, [librpcsecgss=1], AC_MSG_ERROR([librpcsecgss needed for nfsv4 support]), -lgssglue -ldl) +- AC_CHECK_LIB(rpcsecgss, authgss_set_debug_level, +- AC_DEFINE(HAVE_AUTHGSS_SET_DEBUG_LEVEL, 1, [Define this if the rpcsec_gss library has the function authgss_set_debug_level]),, -lgssglue -ldl) ++ dnl Invoked after AC_KERBEROS_V5; AC_LIBRPCSECGSS needs to have KRBLIBS set ++ AC_LIBRPCSECGSS + + fi + +-AC_CHECK_DECL([AI_ADDRCONFIG], +- AC_DEFINE([HAVE_DECL_AI_ADDRCONFIG], 1, +- [Define this to 1 if AI_ADDRCONFIG macro is defined]), , +- [ #include ] ) +- +-if test "$enable_tirpc" = yes; then +- AC_CHECK_LIB(tirpc, clnt_tli_create, , +- AC_MSG_ERROR([libtirpc not found.])) +- AC_CHECK_HEADERS(tirpc/netconfig.h, , +- AC_MSG_ERROR([libtirpc headers not found.])) +- AC_CHECK_FUNCS([bindresvport_sa getnetconfig \ +- clnt_create clnt_create_timed \ +- clnt_vc_create clnt_dg_create xdr_rpcb]) +-fi +- +-if test "$enable_ipv6" = yes; then +- if test "$enable_tirpc" = no; then +- AC_MSG_ERROR('--enable-ipv6' requires '--enable-tirpc'.) +- fi +- AC_CHECK_FUNC(getnameinfo, , , +- AC_MSG_ERROR(Function 'getnameinfo' not found.)) +- AC_CHECK_DECL([AI_ADDRCONFIG], , +- AC_MSG_ERROR([full getaddrinfo(3) implementation needed for IPv6 support]), +- [ #include ] ) +-fi ++dnl Check for IPv6 support ++AC_IPV6 + + dnl ************************************************************* + dnl Check for headers +diff --git a/support/nfs/getport.c b/support/nfs/getport.c +index 5da1749..734d21a 100644 +--- a/support/nfs/getport.c ++++ b/support/nfs/getport.c +@@ -40,9 +40,9 @@ + #include + #include + +-#ifdef HAVE_TIRPC_NETCONFIG_H +-#include +-#include ++#ifdef HAVE_LIBTIRPC ++#include ++#include + #endif + + #include "nfsrpc.h" +@@ -53,17 +53,17 @@ + * Rpcbind's local socket service does not seem to be working. + * Disable this logic for now. + */ +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + #undef NFS_GP_LOCAL +-#else /* HAVE_XDR_RPCB */ ++#else /* !HAVE_LIBTIRPC */ + #undef NFS_GP_LOCAL +-#endif /* HAVE_XDR_RPCB */ ++#endif /* !HAVE_LIBTIRPC */ + +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + const static rpcvers_t default_rpcb_version = RPCBVERS_4; +-#else ++#else /* !HAVE_LIBTIRPC */ + const static rpcvers_t default_rpcb_version = PMAPVERS; +-#endif ++#endif /* !HAVE_LIBTIRPC */ + + #ifdef HAVE_DECL_AI_ADDRCONFIG + /* +@@ -242,7 +242,7 @@ static CLIENT *nfs_gp_get_rpcbclient(const struct sockaddr *sap, + * Returns a '\0'-terminated string if successful; otherwise NULL. + * rpc_createerr.cf_stat is set to reflect the error. + */ +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + + static char *nfs_gp_get_netid(const sa_family_t family, + const unsigned short protocol) +@@ -290,7 +290,7 @@ out: + return NULL; + } + +-#endif /* HAVE_XDR_RPCB */ ++#endif /* HAVE_LIBTIRPC */ + + /* + * Extract a port number from a universal address, and terminate the +@@ -453,7 +453,7 @@ static int nfs_gp_ping(CLIENT *client, struct timeval timeout) + return (int)(status == RPC_SUCCESS); + } + +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + + /* + * Initialize the rpcb argument for a GETADDR request. +@@ -565,7 +565,7 @@ static unsigned short nfs_gp_rpcb_getaddr(CLIENT *client, + return port; + } + +-#endif /* HAVE_XDR_RPCB */ ++#endif /* HAVE_LIBTIRPC */ + + /* + * Try GETPORT request via rpcbind version 2. +@@ -595,7 +595,7 @@ static unsigned long nfs_gp_pmap_getport(CLIENT *client, + return port; + } + +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + + static unsigned short nfs_gp_getport_rpcb(CLIENT *client, + const struct sockaddr *sap, +@@ -617,7 +617,7 @@ static unsigned short nfs_gp_getport_rpcb(CLIENT *client, + return port; + } + +-#endif /* HAVE_XDR_RPCB */ ++#endif /* HAVE_LIBTIRPC */ + + static unsigned long nfs_gp_getport_pmap(CLIENT *client, + const rpcprog_t program, +@@ -652,11 +652,11 @@ static unsigned short nfs_gp_getport(CLIENT *client, + struct timeval timeout) + { + switch (sap->sa_family) { +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + case AF_INET6: + return nfs_gp_getport_rpcb(client, sap, salen, program, + version, protocol, timeout); +-#endif /* HAVE_XDR_RPCB */ ++#endif /* HAVE_LIBTIRPC */ + case AF_INET: + return nfs_gp_getport_pmap(client, program, version, + protocol, timeout); +@@ -922,7 +922,7 @@ unsigned short nfs_getlocalport(const rpcprot_t program, + * address of the same address family. In this way an RPC server can + * advertise via rpcbind that it does not support AF_INET6. + */ +-#ifdef HAVE_XDR_RPCB ++#ifdef HAVE_LIBTIRPC + + unsigned short nfs_rpcb_getaddr(const struct sockaddr *sap, + const socklen_t salen, +@@ -955,7 +955,7 @@ unsigned short nfs_rpcb_getaddr(const struct sockaddr *sap, + return port; + } + +-#else /* HAVE_XDR_RPCB */ ++#else /* !HAVE_LIBTIRPC */ + + unsigned short nfs_rpcb_getaddr(const struct sockaddr *sap, + const socklen_t salen, +@@ -971,7 +971,7 @@ unsigned short nfs_rpcb_getaddr(const struct sockaddr *sap, + return 0; + } + +-#endif /* HAVE_XDR_RPCB */ ++#endif /* !HAVE_LIBTIRPC */ + + /** + * nfs_pmap_getport - query rpcbind via the portmap protocol (rpcbindv2) +diff --git a/support/nfs/rpc_socket.c b/support/nfs/rpc_socket.c +index b7420d1..2b11e35 100644 +--- a/support/nfs/rpc_socket.c ++++ b/support/nfs/rpc_socket.c +@@ -40,51 +40,10 @@ + + #include "nfsrpc.h" + +-#ifdef HAVE_TIRPC_NETCONFIG_H +- +-/* +- * Most of the headers under /usr/include/tirpc are currently +- * unusable for various reasons. We statically define the bits +- * we need here until the official headers are fixed. +- * +- * The commonly used RPC calls such as CLNT_CALL and CLNT_DESTROY +- * are actually virtual functions in both the legacy and TI-RPC +- * implementations. The proper _CALL or _DESTROY will be invoked +- * no matter if we used a legacy clnt_create() or clnt_tli_create() +- * from libtirpc. +- */ +- +-#include +-#include +- +-/* definitions from tirpc/rpc/types.h */ +- +-/* +- * The netbuf structure is used for transport-independent address storage. +- */ +-struct netbuf { +- unsigned int maxlen; +- unsigned int len; +- void *buf; +-}; +- +-/* definitions from tirpc/rpc/clnt.h */ +- +-/* +- * Low level clnt create routine for connectionless transports, e.g. udp. +- */ +-extern CLIENT *clnt_dg_create(const int, const struct netbuf *, +- const rpcprog_t, const rpcvers_t, +- const u_int, const u_int); +- +-/* +- * Low level clnt create routine for connectionful transports, e.g. tcp. +- */ +-extern CLIENT *clnt_vc_create(const int, const struct netbuf *, +- const rpcprog_t, const rpcvers_t, +- u_int, u_int); +- +-#endif /* HAVE_TIRPC_NETCONFIG_H */ ++#ifdef HAVE_LIBTIRPC ++#include ++#include ++#endif /* HAVE_LIBTIRPC */ + + /* + * If "-1" is specified in the tv_sec field, use these defaults instead. +@@ -107,14 +66,14 @@ static CLIENT *nfs_get_localclient(const struct sockaddr *sap, + const rpcvers_t version, + struct timeval *timeout) + { +-#ifdef HAVE_CLNT_VC_CREATE ++#ifdef HAVE_LIBTIRPC + struct sockaddr_storage address; + const struct netbuf nbuf = { + .maxlen = sizeof(struct sockaddr_un), + .len = (size_t)salen, + .buf = &address, + }; +-#endif /* HAVE_CLNT_VC_CREATE */ ++#endif /* HAVE_LIBTIRPC */ + CLIENT *client; + int sock; + +@@ -128,13 +87,13 @@ static CLIENT *nfs_get_localclient(const struct sockaddr *sap, + if (timeout->tv_sec == -1) + timeout->tv_sec = NFSRPC_TIMEOUT_TCP; + +-#ifdef HAVE_CLNT_VC_CREATE ++#ifdef HAVE_LIBTIRPC + memcpy(nbuf.buf, sap, (size_t)salen); + client = clnt_vc_create(sock, &nbuf, program, version, 0, 0); +-#else /* HAVE_CLNT_VC_CREATE */ ++#else /* !HAVE_LIBTIRPC */ + client = clntunix_create((struct sockaddr_un *)sap, + program, version, &sock, 0, 0); +-#endif /* HAVE_CLNT_VC_CREATE */ ++#endif /* !HAVE_LIBTIRPC */ + if (client != NULL) + CLNT_CONTROL(client, CLSET_FD_CLOSE, NULL); + else +@@ -261,23 +220,23 @@ static CLIENT *nfs_get_udpclient(const struct sockaddr *sap, + const rpcvers_t version, + struct timeval *timeout) + { +-#ifdef HAVE_CLNT_DG_CREATE ++ CLIENT *client; ++ int ret, sock; ++#ifdef HAVE_LIBTIRPC + struct sockaddr_storage address; + const struct netbuf nbuf = { + .maxlen = salen, + .len = salen, + .buf = &address, + }; +-#endif /* HAVE_CLNT_DG_CREATE */ +- CLIENT *client; +- int ret, sock; + +-#ifndef HAVE_CLNT_DG_CREATE ++#else /* !HAVE_LIBTIRPC */ ++ + if (sap->sa_family != AF_INET) { + rpc_createerr.cf_stat = RPC_UNKNOWNPROTO; + return NULL; + } +-#endif /* !HAVE_CLNT_DG_CREATE */ ++#endif /* !HAVE_LIBTIRPC */ + + sock = socket((int)sap->sa_family, SOCK_DGRAM, IPPROTO_UDP); + if (sock == -1) { +@@ -305,13 +264,13 @@ static CLIENT *nfs_get_udpclient(const struct sockaddr *sap, + return NULL; + } + +-#ifdef HAVE_CLNT_DG_CREATE ++#ifdef HAVE_LIBTIRPC + memcpy(nbuf.buf, sap, (size_t)salen); + client = clnt_dg_create(sock, &nbuf, program, version, 0, 0); +-#else /* HAVE_CLNT_DG_CREATE */ ++#else /* !HAVE_LIBTIRPC */ + client = clntudp_create((struct sockaddr_in *)sap, program, + version, *timeout, &sock); +-#endif /* HAVE_CLNT_DG_CREATE */ ++#endif /* !HAVE_LIBTIRPC */ + if (client != NULL) { + CLNT_CONTROL(client, CLSET_RETRY_TIMEOUT, (char *)timeout); + CLNT_CONTROL(client, CLSET_FD_CLOSE, NULL); +@@ -337,23 +296,23 @@ static CLIENT *nfs_get_tcpclient(const struct sockaddr *sap, + const rpcvers_t version, + struct timeval *timeout) + { +-#ifdef HAVE_CLNT_VC_CREATE ++ CLIENT *client; ++ int ret, sock; ++#ifdef HAVE_LIBTIRPC + struct sockaddr_storage address; + const struct netbuf nbuf = { + .maxlen = salen, + .len = salen, + .buf = &address, + }; +-#endif /* HAVE_CLNT_VC_CREATE */ +- CLIENT *client; +- int ret, sock; + +-#ifndef HAVE_CLNT_VC_CREATE ++#else /* !HAVE_LIBTIRPC */ ++ + if (sap->sa_family != AF_INET) { + rpc_createerr.cf_stat = RPC_UNKNOWNPROTO; + return NULL; + } +-#endif /* !HAVE_CLNT_VC_CREATE */ ++#endif /* !HAVE_LIBTIRPC */ + + sock = socket((int)sap->sa_family, SOCK_STREAM, IPPROTO_TCP); + if (sock == -1) { +@@ -381,13 +340,13 @@ static CLIENT *nfs_get_tcpclient(const struct sockaddr *sap, + return NULL; + } + +-#ifdef HAVE_CLNT_VC_CREATE ++#ifdef HAVE_LIBTIRPC + memcpy(nbuf.buf, sap, (size_t)salen); + client = clnt_vc_create(sock, &nbuf, program, version, 0, 0); +-#else /* HAVE_CLNT_VC_CREATE */ ++#else /* !HAVE_LIBTIRPC */ + client = clnttcp_create((struct sockaddr_in *)sap, + program, version, &sock, 0, 0); +-#endif /* HAVE_CLNT_VC_CREATE */ ++#endif /* !HAVE_LIBTIRPC */ + if (client != NULL) + CLNT_CONTROL(client, CLSET_FD_CLOSE, NULL); + else +diff --git a/utils/gssd/Makefile.am b/utils/gssd/Makefile.am +index e42b339..95a2bd0 100644 +--- a/utils/gssd/Makefile.am ++++ b/utils/gssd/Makefile.am +@@ -39,11 +39,11 @@ gssd_SOURCES = \ + write_bytes.h + + gssd_LDADD = ../../support/nfs/libnfs.a \ +- $(RPCSECGSS_LIBS) $(KRBLIBS) ++ $(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) $(KRBLIBS) + gssd_LDFLAGS = $(KRBLDFLAGS) + + gssd_CFLAGS = $(AM_CFLAGS) $(CFLAGS) \ +- $(RPCSECGSS_CFLAGS) $(KRBCFLAGS) ++ $(RPCSECGSS_CFLAGS) $(GSSGLUE_CFLAGS) $(KRBCFLAGS) + + svcgssd_SOURCES = \ + $(COMMON_SRCS) \ +@@ -56,18 +56,18 @@ svcgssd_SOURCES = \ + + svcgssd_LDADD = \ + ../../support/nfs/libnfs.a \ +- $(RPCSECGSS_LIBS) -lnfsidmap \ ++ $(RPCSECGSS_LIBS) $(GSSGLUE_LIBS) -lnfsidmap \ + $(KRBLIBS) + + svcgssd_LDFLAGS = $(KRBLDFLAGS) + + svcgssd_CFLAGS = $(AM_CFLAGS) $(CFLAGS) \ +- $(RPCSECGSS_CFLAGS) $(KRBCFLAGS) ++ $(RPCSECGSS_CFLAGS) $(GSSGLUE_CFLAGS) $(KRBCFLAGS) + + gss_clnt_send_err_SOURCES = gss_clnt_send_err.c + + gss_clnt_send_err_CFLAGS = $(AM_CFLAGS) $(CFLAGS) \ +- $(RPCSECGSS_CFLAGS) $(KRBCFLAGS) ++ $(RPCSECGSS_CFLAGS) $(GSSGLUE_CFLAGS) $(KRBCFLAGS) + + MAINTAINERCLEANFILES = Makefile.in + +diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c +index d0d3f7f..295c37d 100644 +--- a/utils/gssd/gssd_proc.c ++++ b/utils/gssd/gssd_proc.c +@@ -70,7 +70,6 @@ + #include "gssd.h" + #include "err_util.h" + #include "gss_util.h" +-#include "gss_oids.h" + #include "krb5_util.h" + #include "context.h" + +@@ -778,8 +777,10 @@ handle_krb5_upcall(struct clnt_info *clp) + out: + if (token.value) + free(token.value); ++#ifndef HAVE_LIBTIRPC + if (pd.pd_ctx_hndl.length != 0) + authgss_free_private_data(&pd); ++#endif + if (auth) + AUTH_DESTROY(auth); + if (rpc_clnt) +diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c +index 8923b3b..e3c6f5e 100644 +--- a/utils/gssd/krb5_util.c ++++ b/utils/gssd/krb5_util.c +@@ -124,7 +124,6 @@ + #include "gssd.h" + #include "err_util.h" + #include "gss_util.h" +-#include "gss_oids.h" + #include "krb5_util.h" + + /* Global list of principals/cache file names for machine credentials */ +diff --git a/utils/gssd/krb5_util.h b/utils/gssd/krb5_util.h +index 4b2da6b..7d808f5 100644 +--- a/utils/gssd/krb5_util.h ++++ b/utils/gssd/krb5_util.h +@@ -3,6 +3,12 @@ + + #include + ++#ifdef HAVE_LIBTIRPC ++#include ++#else ++#include "gss_oids.h" ++#endif ++ + /* + * List of principals from our keytab that we + * will try to use to obtain credentials +diff --git a/utils/mountd/svc_run.c b/utils/mountd/svc_run.c +index 422e839..5ba5af6 100644 +--- a/utils/mountd/svc_run.c ++++ b/utils/mountd/svc_run.c +@@ -54,6 +54,10 @@ + #include + #include + ++#ifdef HAVE_LIBTIRPC ++#include ++#endif ++ + void cache_set_fds(fd_set *fdset); + int cache_process_req(fd_set *readfds); + diff --git a/nfs-utils.spec b/nfs-utils.spec index dce33b1..4eb28ac 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -2,7 +2,7 @@ Summary: NFS utilities and supporting clients and daemons for the kernel NFS ser Name: nfs-utils URL: http://sourceforge.net/projects/nfs Version: 1.1.5 -Release: 2%{?dist} +Release: 3%{?dist} Epoch: 1 # group all 32bit related archs @@ -27,6 +27,7 @@ Patch01: nfs-utils-1.1.0-smnotify-path.patch Patch02: nfs-utils-1.1.0-exp-subtree-warn-off.patch Patch100: nfs-utils-1.1.5-tcpwrap-externs.patch +Patch101: nfs-utils-1-1-6-rc2.patch %if %{enablefscache} Patch90: nfs-utils-1.1.0-mount-fsc.patch @@ -82,6 +83,7 @@ This package also contains the mount.nfs and umount.nfs program. %patch02 -p1 %patch100 -p1 +%patch101 -p1 %if %{enablefscache} %patch90 -p1 @@ -245,6 +247,9 @@ fi %attr(4755,root,root) /sbin/umount.nfs4 %changelog +* Mon Mar 16 2009 Steve Dickson 1.1.5-3 +- Added upstream rc2 patch + * Fri Mar 6 2009 Steve Dickson 1.1.5-2 - Fixed lockd not using settings in sysconfig/nfs (bz 461043) - Fixed some lost externs in the tcpwrapper code