diff -Naur mozilla.orig/nsprpub/pr/include/md/_freebsd.h mozilla/nsprpub/pr/include/md/_freebsd.h --- mozilla.orig/nsprpub/pr/include/md/_freebsd.h 2003-01-17 00:09:12.000000000 +0100 +++ mozilla/nsprpub/pr/include/md/_freebsd.h 2003-10-16 18:54:05.000000000 +0200 @@ -40,6 +40,7 @@ #if __FreeBSD__ >= 2 #include /* for __FreeBSD_version */ #endif +#include #include #define PR_LINKER_ARCH "freebsd" diff -Naur mozilla.orig/nsprpub/pr/src/md/unix/unix.c mozilla/nsprpub/pr/src/md/unix/unix.c --- mozilla.orig/nsprpub/pr/src/md/unix/unix.c 2002-12-12 01:19:57.000000000 +0100 +++ mozilla/nsprpub/pr/src/md/unix/unix.c 2003-10-16 19:02:04.000000000 +0200 @@ -65,7 +65,8 @@ * PRInt32* pointer to a _PRSockLen_t* pointer. */ #if defined(HAVE_SOCKLEN_T) \ - || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) + || (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2) \ + || defined(FREEBSD) #define _PRSockLen_t socklen_t #elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \ || defined(AIX4_1) || defined(LINUX) || defined(SONY) \ @@ -73,7 +74,7 @@ || defined(SUNOS4) || defined(NCR) || defined(DARWIN) \ || defined(NEXTSTEP) || defined(QNX) #define _PRSockLen_t int -#elif (defined(AIX) && !defined(AIX4_1)) || defined(FREEBSD) \ +#elif (defined(AIX) && !defined(AIX4_1)) \ || defined(NETBSD) || defined(OPENBSD) || defined(UNIXWARE) \ || defined(DGUX) || defined(VMS) || defined(NTO) #define _PRSockLen_t size_t diff -Naur mozilla.orig/nsprpub/pr/src/pthreads/ptio.c mozilla/nsprpub/pr/src/pthreads/ptio.c --- mozilla.orig/nsprpub/pr/src/pthreads/ptio.c 2003-07-14 23:59:47.000000000 +0200 +++ mozilla/nsprpub/pr/src/pthreads/ptio.c 2003-10-16 18:59:28.000000000 +0200 @@ -3469,6 +3469,16 @@ (void)setsockopt(osfd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)); } +#elif (defined(_PR_INET6_PROBE) || defined(_PR_INET6)) && \ + defined(__FreeBSD__) && defined(IPV6_V6ONLY) + if (domain == PR_AF_INET6) { + int opt = 0; + if (setsockopt(osfd, IPPROTO_IPV6, IPV6_V6ONLY, + &opt, sizeof(opt))) { + close(osfd); + return NULL; + } + } #endif fd = pt_SetMethods(osfd, ftype, PR_FALSE, PR_FALSE); if (fd == NULL) close(osfd);