summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver/nfs_srvsubs.c
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2002-07-15 19:40:23 +0000
committeralfred <alfred@FreeBSD.org>2002-07-15 19:40:23 +0000
commitdf766765ba15b2a418b09b713353a763a1c12909 (patch)
tree08c1766490b20ea5dcdd86157dd05bf33f410b18 /sys/nfsserver/nfs_srvsubs.c
parentc559b8902789e64b5a4b1e482f230e933cda7198 (diff)
downloadFreeBSD-src-df766765ba15b2a418b09b713353a763a1c12909.zip
FreeBSD-src-df766765ba15b2a418b09b713353a763a1c12909.tar.gz
Add IPv6 support.
Submitted by: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
Diffstat (limited to 'sys/nfsserver/nfs_srvsubs.c')
-rw-r--r--sys/nfsserver/nfs_srvsubs.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index 5f37b1f..19a74d7 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -46,6 +46,8 @@ __FBSDID("$FreeBSD$");
* copy data between mbuf chains and uio lists.
*/
+#include "opt_inet6.h"
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -1051,7 +1053,9 @@ nfsrv_fhtovp(fhandle_t *fhp, int lockflag, struct vnode **vpp,
#ifdef MNT_EXNORESPORT
if (!(exflags & (MNT_EXNORESPORT|MNT_EXPUBLIC))) {
saddr = (struct sockaddr_in *)nam;
- if (saddr->sin_family == AF_INET &&
+ if ((saddr->sin_family == AF_INET ||
+ saddr->sin_family == AF_INET6) &&
+ /* same code for INET and INET6: sin*_port at same offet */
ntohs(saddr->sin_port) >= IPPORT_RESERVED) {
vput(*vpp);
*vpp = NULL;
@@ -1117,6 +1121,21 @@ netaddr_match(int family, union nethostaddr *haddr, struct sockaddr *nam)
inetaddr->sin_addr.s_addr == haddr->had_inetaddr)
return (1);
break;
+#ifdef INET6
+ case AF_INET6:
+ {
+ register struct sockaddr_in6 *inet6addr1, *inet6addr2;
+
+ inet6addr1 = (struct sockaddr_in6 *)nam;
+ inet6addr2 = (struct sockaddr_in6 *)haddr->had_nam;
+ /* XXX - should test sin6_scope_id ? */
+ if (inet6addr1->sin6_family == AF_INET6 &&
+ IN6_ARE_ADDR_EQUAL(&inet6addr1->sin6_addr,
+ &inet6addr2->sin6_addr))
+ return (1);
+ break;
+ }
+#endif
default:
break;
};
OpenPOWER on IntegriCloud