include $(TOPDIR)/rules.mk
PKG_NAME:=nfs-kernel-server
-PKG_VERSION:=1.1.6
-PKG_RELEASE:=1
-PKG_MD5SUM:=b0d1b8ec5c8c081a340cfc77bb8670cd
+PKG_VERSION:=1.2.5
+PKG_RELEASE:=2
+PKG_MD5SUM:=8395ac770720b83c5c469f88306d7765
PKG_SOURCE_URL:=@SF/nfs
PKG_SOURCE:=nfs-utils-$(PKG_VERSION).tar.bz2
CONFIGURE_ARGS += \
--disable-gss \
--disable-nfsv4 \
+ --disable-nfsv41 \
--enable-static \
- --enable-shared
+ --enable-shared \
+ --disable-caps
MAKE_FLAGS += \
OPT="$(TARGET_CFLAGS)" \
HOST_CONFIGURE_ARGS += \
--disable-gss \
--disable-nfsv4 \
+ --disable-nfsv41 \
--without-tcp-wrappers
HOST_CONFIGURE_VARS += \
START=60
STOP=60
+SERVICE_USE_PID=1
+
NFS_D=/var/lib/nfs
LOCK_D=/var/lib/nfs/sm
touch $NFS_D/rmtab
sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 > /dev/null
- /usr/sbin/rpc.statd -p 32778 -o 32779
+ service_start /usr/sbin/rpc.statd -p 32778 -o 32779
/usr/sbin/exportfs -r
/usr/sbin/rpc.nfsd
- /usr/sbin/rpc.mountd -p 32780
+ SERVICE_WRITE_PID=1 \
+ SERVICE_DAEMONIZE=1 \
+ service_start /usr/sbin/rpc.mountd -p 32780 -F
}
stop() {
- killall rpc.mountd 2> /dev/null
+ service_stop /usr/sbin/rpc.mountd
rpc.nfsd 0 2> /dev/null
/usr/sbin/exportfs -au
- killall rpc.statd 2> /dev/null
+ service_stop /usr/sbin/rpc.statd
grep -q /proc/fs/nfsd /proc/mounts && \
umount /proc/fs/nfsd
}
+++ /dev/null
---- a/utils/mountd/cache.c
-+++ b/utils/mountd/cache.c
-@@ -142,6 +142,7 @@ void auth_unix_gid(FILE *f)
- pw = getpwuid(uid);
- if (!pw)
- rv = -1;
-+#ifndef __UCLIBC__
- else {
- rv = getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
- if (rv == -1 && ngroups >= 100) {
-@@ -153,6 +154,7 @@ void auth_unix_gid(FILE *f)
- groups, &ngroups);
- }
- }
-+#endif /* __UCLIBC__ */
- qword_printint(f, uid);
- qword_printint(f, time(0)+30*60);
- if (rv >= 0) {
---- a/support/nfs/svc_socket.c
-+++ b/support/nfs/svc_socket.c
-@@ -66,9 +66,13 @@ svc_socket (u_long number, int type, int
-
- memset (&addr, 0, sizeof (addr));
- addr.sin_family = AF_INET;
--
-+#ifndef __UCLIBC__ /* neither getrpcbynumber() nor getrpcbynumber_r() is SuSv3 */
- ret = getrpcbynumber_r (number, &rpcbuf, rpcdata, sizeof rpcdata,
- &rpcp);
-+#else
-+ rpcp = getrpcbynumber (number);
-+ ret = 0;
-+#endif
- if (ret == 0 && rpcp != NULL)
- {
- /* First try name. */
+++ /dev/null
---- a/tools/rpcgen/rpc_main.c
-+++ b/tools/rpcgen/rpc_main.c
-@@ -545,13 +545,6 @@ s_output(int argc, char **argv, char *in
- timerflag = 1;
- }
-
--#ifndef linux
-- if( !tirpcflag && inetdflag )
-- f_print(fout, "#include <sys/ttycom.h>/* TIOCNOTTY */\n");
--#else
-- if( !tirpcflag )
-- f_print(fout, "#include <sys/ttycom.h>/* TIOCNOTTY */\n");
--#endif
- if( Cflag && (inetdflag || pmflag ) ) {
- f_print(fout, "#ifdef __cplusplus\n");
- f_print(fout, "#include <sysent.h> /* getdtablesize, open */\n");
---- a/tools/rpcgen/rpc_svcout.c
-+++ b/tools/rpcgen/rpc_svcout.c
-@@ -788,7 +788,6 @@ write_rpc_svc_fg(char *infile, char *sp)
- else {
- f_print(fout, "%si = open(\"/dev/tty\", 2);\n", sp);
- f_print(fout, "%sif (i >= 0) {\n", sp);
-- f_print(fout, "%s\t(void) ioctl(i, TIOCNOTTY, (char *)NULL);\n", sp);;
- f_print(fout, "%s\t(void) close(i);\n", sp);
- f_print(fout, "%s}\n", sp);
- }
+++ /dev/null
---- a/tools/rpcgen/rpc_cout.c
-+++ b/tools/rpcgen/rpc_cout.c
-@@ -38,7 +38,6 @@ static char sccsid[] = "@(#)rpc_cout.c 1
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
--#include <malloc.h>
- #include <ctype.h>
- #include "rpc_parse.h"
- #include "rpc_util.h"
--- /dev/null
+--- a/support/include/sockaddr.h
++++ b/support/include/sockaddr.h
+@@ -20,7 +20,10 @@
+ #ifndef NFS_UTILS_SOCKADDR_H
+ #define NFS_UTILS_SOCKADDR_H
+
++/* uClibc doesn't have/need libio.h */
++#ifndef __UCLIBC__
+ #include <libio.h>
++#endif
+ #include <stdbool.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+--- a/support/nfs/svc_socket.c
++++ b/support/nfs/svc_socket.c
+@@ -40,10 +40,13 @@ int getservport(u_long number, const cha
+ char rpcdata[1024], servdata[1024];
+ struct rpcent rpcbuf, *rpcp;
+ struct servent servbuf, *servp = NULL;
+- int ret;
+-
++ int ret=0;
++#ifndef __UCLIBC__
+ ret = getrpcbynumber_r(number, &rpcbuf, rpcdata, sizeof rpcdata,
+ &rpcp);
++#else
++ rpcp = getrpcbynumber (number);
++#endif
+ if (ret == 0 && rpcp != NULL) {
+ /* First try name. */
+ ret = getservbyname_r(rpcp->r_name, proto, &servbuf, servdata,
+--- a/utils/mountd/cache.c
++++ b/utils/mountd/cache.c
+@@ -162,6 +162,7 @@ static void auth_unix_gid(FILE *f)
+ pw = getpwuid(uid);
+ if (!pw)
+ rv = -1;
++#ifndef __UCLIBC__
+ else {
+ rv = getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
+ if (rv == -1 && ngroups >= groups_len) {
+@@ -176,6 +177,7 @@ static void auth_unix_gid(FILE *f)
+ }
+ }
+ }
++#endif
+ qword_printuint(f, uid);
+ qword_printuint(f, time(0) + DEFAULT_TTL);
+ if (rv >= 0) {
--- /dev/null
+--- a/tools/rpcgen/rpc_cout.c
++++ b/tools/rpcgen/rpc_cout.c
+@@ -36,7 +36,6 @@ static char sccsid[] = "@(#)rpc_cout.c 1
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include <malloc.h>
+ #include <ctype.h>
+ #include "rpc_parse.h"
+ #include "rpc_util.h"