summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/bind9-current/DESCR14
-rw-r--r--net/bind9-current/Makefile71
-rw-r--r--net/bind9-current/PLIST312
-rw-r--r--net/bind9-current/distinfo7
-rw-r--r--net/bind9-current/files/lwresd.sh16
-rw-r--r--net/bind9-current/files/named.sh28
-rw-r--r--net/bind9-current/patches/patch-ab33
-rw-r--r--net/bind9-current/patches/patch-ac39
-rw-r--r--net/bind9-current/patches/patch-ai85
9 files changed, 605 insertions, 0 deletions
diff --git a/net/bind9-current/DESCR b/net/bind9-current/DESCR
new file mode 100644
index 00000000000..c311081809b
--- /dev/null
+++ b/net/bind9-current/DESCR
@@ -0,0 +1,14 @@
+ BIND version 9 is a major rewrite of nearly all aspects of the
+underlying BIND architecture. This re-architecting of BIND was
+necessitated by the expected demands of:
+
+ - Domain name system growth, particularly in very large
+ zones such as .COM
+ - Protocol enhancements necessary to securely query and
+ update zones
+ - Protocol enhancements necessary to take advantage of
+ certain architectural features of IP version 6
+
+ The 9.0.0 release, and this release candidate, is aimed at
+early adopters and those who wish to make use of new 9.0
+features, such as IPv6 and DNSSEC secure resolution support.
diff --git a/net/bind9-current/Makefile b/net/bind9-current/Makefile
new file mode 100644
index 00000000000..015b0fdf066
--- /dev/null
+++ b/net/bind9-current/Makefile
@@ -0,0 +1,71 @@
+# $NetBSD: Makefile,v 1.37 2002/08/26 11:26:03 itojun Exp $
+#
+
+DISTNAME= bind-${BIND_VERSION}
+PKGNAME= bind-9.2.99.20020722
+CATEGORIES= net
+MASTER_SITES= ftp://ftp.isc.org/isc/bind9/snapshots/
+
+MAINTAINER= hubertf@NetBSD.org
+HOMEPAGE= http://www.isc.org/products/BIND/
+COMMENT= Version 9 of the Berkeley Internet Name Daemon, implementation of DNS
+
+BIND_VERSION= 9.3.0s20020722
+DIST_SUBDIR= bind/${BIND_VERSION}
+
+# IPv6 ready, automatically detected
+.include "../../mk/bsd.prefs.mk"
+BUILD_DEFS+= USE_INET6
+# No need to set USE_INET6, will auto-detect.
+
+USE_LIBTOOL= yes
+LIBTOOL_OVERRIDE+= ${WRKSRC}/libtool
+LIBTOOL_OVERRIDE+= ${WRKSRC}/lib/bind/libtool
+
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS+=--disable-threads # Until we have real threads
+CONFIGURE_ARGS+=--with-libtool=yes \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+#LDFLAGS+= -Wl,-R${LOCALBASE}/pthreads/lib -L${LOCALBASE}/pthreads/lib
+# use external OpenSSL. comment out the following line and the buildlink
+# include at the bottom to use OpenSSL shipped with BIND9.
+CONFIGURE_ARGS+=--with-openssl=${SSLBASE}
+
+post-build:
+ ${SED} \
+ -e 's|@PREFIX@|${PREFIX}|' \
+ <${FILESDIR}/named.sh >${WRKDIR}/named
+ ${SED} \
+ -e 's|@PREFIX@|${PREFIX}|' \
+ <${FILESDIR}/lwresd.sh >${WRKDIR}/lwresd
+
+# include/isc/ipv6.h is installed on non-ipv6 platforms
+IPV6H= "@comment "
+.if ${OPSYS} == "SunOS" && ${OS_VERSION} == "5.7"
+IPV6H= ""
+.endif
+
+PLIST_SUBST+= IPV6H=${IPV6H}
+PLIST_SRC= ${WRKDIR}/PLIST
+
+post-install:
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bind9
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bind9/arm
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bind9/draft
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bind9/misc
+ ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/bind9/rfc
+ ${INSTALL_DATA} ${WRKSRC}/README ${PREFIX}/share/doc/bind9
+ ${INSTALL_DATA} ${WRKSRC}/doc/arm/* ${PREFIX}/share/doc/bind9/arm
+ ${INSTALL_DATA} ${WRKSRC}/doc/draft/* ${PREFIX}/share/doc/bind9/draft
+ ${INSTALL_DATA} ${WRKSRC}/doc/misc/* ${PREFIX}/share/doc/bind9/misc
+ ${INSTALL_DATA} ${WRKSRC}/doc/rfc/* ${PREFIX}/share/doc/bind9/rfc
+ ${CP} ${PKGDIR}/PLIST ${PLIST_SRC}
+ (cd ${PREFIX}; ${FIND} share/doc/bind9 -type f -print ) >> ${PLIST_SRC}
+ (cd ${PREFIX}; ${FIND} share/doc/bind9 -type d -print ) | \
+ ${SED} -e 's/^/@dirrm /' | ${SORT} -r >> ${PLIST_SRC}
+ ${INSTALL_SCRIPT} ${WRKDIR}/named ${PREFIX}/etc/rc.d/named9
+ ${INSTALL_SCRIPT} ${WRKDIR}/lwresd ${PREFIX}/etc/rc.d/lwresd
+
+.include "../../security/openssl/buildlink.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/net/bind9-current/PLIST b/net/bind9-current/PLIST
new file mode 100644
index 00000000000..89e13002f88
--- /dev/null
+++ b/net/bind9-current/PLIST
@@ -0,0 +1,312 @@
+@comment $NetBSD: PLIST,v 1.7 2002/08/26 11:26:04 itojun Exp $
+bin/dig
+bin/host
+bin/isc-config.sh
+bin/nslookup
+bin/nsupdate
+etc/rc.d/lwresd
+etc/rc.d/named9
+include/dns/a6.h
+include/dns/acl.h
+include/dns/adb.h
+include/dns/byaddr.h
+include/dns/cache.h
+include/dns/callbacks.h
+include/dns/cert.h
+include/dns/compress.h
+include/dns/db.h
+include/dns/dbiterator.h
+include/dns/dbtable.h
+include/dns/diff.h
+include/dns/dispatch.h
+include/dns/dnssec.h
+include/dns/ds.h
+include/dns/enumclass.h
+include/dns/enumtype.h
+include/dns/events.h
+include/dns/fixedname.h
+include/dns/journal.h
+include/dns/keyflags.h
+include/dns/keytable.h
+include/dns/keyvalues.h
+include/dns/lib.h
+include/dns/log.h
+include/dns/master.h
+include/dns/masterdump.h
+include/dns/message.h
+include/dns/name.h
+include/dns/ncache.h
+include/dns/nxt.h
+include/dns/peer.h
+include/dns/rbt.h
+include/dns/rcode.h
+include/dns/rdata.h
+include/dns/rdataclass.h
+include/dns/rdatalist.h
+include/dns/rdataset.h
+include/dns/rdatasetiter.h
+include/dns/rdataslab.h
+include/dns/rdatastruct.h
+include/dns/rdatatype.h
+include/dns/request.h
+include/dns/resolver.h
+include/dns/result.h
+include/dns/rootns.h
+include/dns/sdb.h
+include/dns/secalg.h
+include/dns/secproto.h
+include/dns/soa.h
+include/dns/ssu.h
+include/dns/tcpmsg.h
+include/dns/time.h
+include/dns/tkey.h
+include/dns/tsig.h
+include/dns/ttl.h
+include/dns/types.h
+include/dns/validator.h
+include/dns/version.h
+include/dns/view.h
+include/dns/xfrin.h
+include/dns/zone.h
+include/dns/zonekey.h
+include/dns/zt.h
+include/dst/dst.h
+include/dst/lib.h
+include/dst/result.h
+include/isc/app.h
+include/isc/assertions.h
+include/isc/base64.h
+include/isc/bitstring.h
+include/isc/boolean.h
+include/isc/buffer.h
+include/isc/bufferlist.h
+include/isc/commandline.h
+include/isc/condition.h
+include/isc/dir.h
+include/isc/entropy.h
+include/isc/error.h
+include/isc/event.h
+include/isc/eventclass.h
+include/isc/file.h
+include/isc/formatcheck.h
+include/isc/fsaccess.h
+include/isc/heap.h
+include/isc/hex.h
+include/isc/hmacmd5.h
+include/isc/int.h
+include/isc/interfaceiter.h
+${IPV6H}include/isc/ipv6.h
+include/isc/lang.h
+include/isc/lex.h
+include/isc/lfsr.h
+include/isc/lib.h
+include/isc/list.h
+include/isc/log.h
+include/isc/magic.h
+include/isc/md5.h
+include/isc/mem.h
+include/isc/msgcat.h
+include/isc/msgs.h
+include/isc/mutex.h
+include/isc/mutexblock.h
+include/isc/net.h
+include/isc/netaddr.h
+include/isc/netdb.h
+include/isc/offset.h
+include/isc/once.h
+include/isc/ondestroy.h
+include/isc/os.h
+include/isc/parseint.h
+include/isc/platform.h
+include/isc/print.h
+include/isc/quota.h
+include/isc/random.h
+include/isc/ratelimiter.h
+include/isc/refcount.h
+include/isc/region.h
+include/isc/resource.h
+include/isc/result.h
+include/isc/resultclass.h
+include/isc/rwlock.h
+include/isc/serial.h
+include/isc/sha1.h
+include/isc/sockaddr.h
+include/isc/socket.h
+include/isc/stdio.h
+include/isc/stdtime.h
+include/isc/string.h
+include/isc/symtab.h
+include/isc/syslog.h
+include/isc/task.h
+include/isc/taskpool.h
+include/isc/thread.h
+include/isc/time.h
+include/isc/timer.h
+include/isc/types.h
+include/isc/util.h
+include/isc/version.h
+include/isccc/alist.h
+include/isccc/base64.h
+include/isccc/cc.h
+include/isccc/ccmsg.h
+include/isccc/events.h
+include/isccc/lib.h
+include/isccc/result.h
+include/isccc/sexpr.h
+include/isccc/symtab.h
+include/isccc/symtype.h
+include/isccc/types.h
+include/isccc/util.h
+include/isccc/version.h
+include/isccfg/cfg.h
+include/isccfg/log.h
+include/isccfg/version.h
+include/lwres/context.h
+include/lwres/int.h
+include/lwres/ipv6.h
+include/lwres/lang.h
+include/lwres/list.h
+include/lwres/lwbuffer.h
+include/lwres/lwpacket.h
+include/lwres/lwres.h
+include/lwres/net.h
+include/lwres/netdb.h
+include/lwres/platform.h
+include/lwres/result.h
+include/lwres/version.h
+lib/libdns.a
+lib/libdns.la
+lib/libdns.so
+lib/libdns.so.5
+lib/libdns.so.5.0
+lib/libisc.a
+lib/libisc.la
+lib/libisc.so
+lib/libisc.so.4
+lib/libisc.so.4.0
+lib/libisccc.a
+lib/libisccc.la
+lib/libisccc.so
+lib/libisccc.so.0
+lib/libisccc.so.0.0
+lib/libisccfg.a
+lib/libisccfg.la
+lib/libisccfg.so
+lib/libisccfg.so.0
+lib/libisccfg.so.0.0
+lib/liblwres.a
+lib/liblwres.la
+lib/liblwres.so
+lib/liblwres.so.2
+lib/liblwres.so.2.0
+sbin/dnssec-keygen
+sbin/dnssec-signzone
+sbin/lwresd
+sbin/named
+sbin/named-checkconf
+sbin/named-checkzone
+sbin/rndc
+sbin/rndc-confgen
+@dirrm include/lwres
+@dirrm include/isccc
+@dirrm include/isccfg
+@dirrm include/isc
+@dirrm include/dst
+@dirrm include/dns
+man/man1/dig.1
+man/man1/host.1
+man/man3/lwres.3
+man/man3/lwres_addr_parse.3
+man/man3/lwres_buffer.3
+man/man3/lwres_buffer_add.3
+man/man3/lwres_buffer_back.3
+man/man3/lwres_buffer_clear.3
+man/man3/lwres_buffer_first.3
+man/man3/lwres_buffer_forward.3
+man/man3/lwres_buffer_getmem.3
+man/man3/lwres_buffer_getuint16.3
+man/man3/lwres_buffer_getuint32.3
+man/man3/lwres_buffer_getuint8.3
+man/man3/lwres_buffer_init.3
+man/man3/lwres_buffer_invalidate.3
+man/man3/lwres_buffer_putmem.3
+man/man3/lwres_buffer_putuint16.3
+man/man3/lwres_buffer_putuint32.3
+man/man3/lwres_buffer_putuint8.3
+man/man3/lwres_buffer_subtract.3
+man/man3/lwres_conf_clear.3
+man/man3/lwres_conf_get.3
+man/man3/lwres_conf_init.3
+man/man3/lwres_conf_parse.3
+man/man3/lwres_conf_print.3
+man/man3/lwres_config.3
+man/man3/lwres_context.3
+man/man3/lwres_context_allocmem.3
+man/man3/lwres_context_create.3
+man/man3/lwres_context_destroy.3
+man/man3/lwres_context_freemem.3
+man/man3/lwres_context_initserial.3
+man/man3/lwres_context_nextserial.3
+man/man3/lwres_context_sendrecv.3
+man/man3/lwres_endhostent.3
+man/man3/lwres_endhostent_r.3
+man/man3/lwres_freeaddrinfo.3
+man/man3/lwres_freehostent.3
+man/man3/lwres_gabn.3
+man/man3/lwres_gabnrequest_free.3
+man/man3/lwres_gabnrequest_parse.3
+man/man3/lwres_gabnrequest_render.3
+man/man3/lwres_gabnresponse_free.3
+man/man3/lwres_gabnresponse_parse.3
+man/man3/lwres_gabnresponse_render.3
+man/man3/lwres_gai_strerror.3
+man/man3/lwres_getaddrinfo.3
+man/man3/lwres_getaddrsbyname.3
+man/man3/lwres_gethostbyaddr.3
+man/man3/lwres_gethostbyaddr_r.3
+man/man3/lwres_gethostbyname.3
+man/man3/lwres_gethostbyname2.3
+man/man3/lwres_gethostbyname_r.3
+man/man3/lwres_gethostent.3
+man/man3/lwres_gethostent_r.3
+man/man3/lwres_getipnode.3
+man/man3/lwres_getipnodebyaddr.3
+man/man3/lwres_getipnodebyname.3
+man/man3/lwres_getnamebyaddr.3
+man/man3/lwres_getnameinfo.3
+man/man3/lwres_getrrsetbyname.3
+man/man3/lwres_gnba.3
+man/man3/lwres_gnbarequest_free.3
+man/man3/lwres_gnbarequest_parse.3
+man/man3/lwres_gnbarequest_render.3
+man/man3/lwres_gnbaresponse_free.3
+man/man3/lwres_gnbaresponse_parse.3
+man/man3/lwres_gnbaresponse_render.3
+man/man3/lwres_herror.3
+man/man3/lwres_hstrerror.3
+man/man3/lwres_inetntop.3
+man/man3/lwres_lwpacket_parseheader.3
+man/man3/lwres_lwpacket_renderheader.3
+man/man3/lwres_net_ntop.3
+man/man3/lwres_noop.3
+man/man3/lwres_nooprequest_free.3
+man/man3/lwres_nooprequest_parse.3
+man/man3/lwres_nooprequest_render.3
+man/man3/lwres_noopresponse_free.3
+man/man3/lwres_noopresponse_parse.3
+man/man3/lwres_noopresponse_render.3
+man/man3/lwres_packet.3
+man/man3/lwres_resutil.3
+man/man3/lwres_sethostent.3
+man/man3/lwres_sethostent_r.3
+man/man3/lwres_string_parse.3
+man/man5/rndc.conf.5
+man/man8/dnssec-keygen.8
+man/man8/dnssec-signzone.8
+man/man8/lwresd.8
+man/man8/named-checkconf.8
+man/man8/named-checkzone.8
+man/man8/named.8
+man/man8/nsupdate.8
+man/man8/rndc.8
+man/man8/rndc-confgen.8
diff --git a/net/bind9-current/distinfo b/net/bind9-current/distinfo
new file mode 100644
index 00000000000..f5993ada00b
--- /dev/null
+++ b/net/bind9-current/distinfo
@@ -0,0 +1,7 @@
+$NetBSD: distinfo,v 1.20 2002/08/26 11:26:06 itojun Exp $
+
+SHA1 (bind/9.3.0s20020722/bind-9.3.0s20020722.tar.gz) = fcd86c88d0fa95d9647ac9db19d3807c5abe2c56
+Size (bind/9.3.0s20020722/bind-9.3.0s20020722.tar.gz) = 5162667 bytes
+SHA1 (patch-ab) = 1d3d82e3e01ac38e8a1b1d98e018849e8fe071bf
+SHA1 (patch-ac) = 1696adfab7392e0f150d34931b808e51ad017938
+SHA1 (patch-ai) = 916d2cdadd420b34e908f3c128e864bf271ebb6a
diff --git a/net/bind9-current/files/lwresd.sh b/net/bind9-current/files/lwresd.sh
new file mode 100644
index 00000000000..be6edfe1d70
--- /dev/null
+++ b/net/bind9-current/files/lwresd.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# PROVIDE: lwresd
+# REQUIRE: SERVERS
+
+. /etc/rc.subr
+
+name="lwresd"
+rcvar=${name}
+command="@PREFIX@/sbin/${name}"
+pidfile="/var/run/${name}.pid"
+
+extra_commands="reload"
+
+load_rc_config ${name} # check /etc/rc.conf.d/named9
+run_rc_command "$1"
diff --git a/net/bind9-current/files/named.sh b/net/bind9-current/files/named.sh
new file mode 100644
index 00000000000..ed0fb29088b
--- /dev/null
+++ b/net/bind9-current/files/named.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# PROVIDE: named
+# REQUIRE: SERVERS
+
+. /etc/rc.subr
+
+name="named"
+rcvar=${name}9
+command="@PREFIX@/sbin/${name}"
+pidfile="/var/run/${name}.pid"
+
+extra_commands="reload"
+
+load_rc_config ${name}9 # check /etc/rc.conf.d/named9
+
+named_precmd()
+{
+ # Die if $named is also set (i.e. the system's named is not disabled
+ if checkyesno named ; then
+ warn \
+ "disable 'named' when setting 'named9'!"
+ return 1
+ fi
+}
+start_precmd="named_precmd"
+
+run_rc_command "$1"
diff --git a/net/bind9-current/patches/patch-ab b/net/bind9-current/patches/patch-ab
new file mode 100644
index 00000000000..d1789fe1ef3
--- /dev/null
+++ b/net/bind9-current/patches/patch-ab
@@ -0,0 +1,33 @@
+$NetBSD: patch-ab,v 1.5 2002/08/26 11:26:09 itojun Exp $
+
+--- lib/lwres/getnameinfo.c.orig Sat Jul 14 08:34:02 2001
++++ lib/lwres/getnameinfo.c Tue Jul 17 10:14:33 2001
+@@ -66,6 +66,10 @@
+ #include <lwres/net.h>
+ #include <lwres/netdb.h>
+
++#ifdef __KAME__
++#include <net/if.h>
++#endif
++
+ #include "assert_p.h"
+
+ #define SUCCESS 0
+@@ -214,13 +218,11 @@
+ ((const struct sockaddr_in6 *)sa)->sin6_scope_id) {
+ char *p = numaddr + strlen(numaddr);
+ const char *stringscope = NULL;
+-#if 0
++
++#ifdef __KAME__
+ if ((flags & NI_NUMERICSCOPE) == 0) {
+- /*
+- * Vendors may want to add support for
+- * non-numeric scope identifier.
+- */
+- stringscope = foo;
++ stringscope = if_indextoname(
++ ((const struct sockaddr_in6 *)sa)->sin6_scope_id);
+ }
+ #endif
+ if (stringscope == NULL) {
diff --git a/net/bind9-current/patches/patch-ac b/net/bind9-current/patches/patch-ac
new file mode 100644
index 00000000000..25a7857a9f5
--- /dev/null
+++ b/net/bind9-current/patches/patch-ac
@@ -0,0 +1,39 @@
+$NetBSD: patch-ac,v 1.5 2002/08/26 11:26:11 itojun Exp $
+
+--- lib/lwres/getaddrinfo.c.orig Sat Jul 14 08:34:01 2001
++++ lib/lwres/getaddrinfo.c Tue Jul 17 10:15:03 2001
+@@ -31,6 +31,10 @@
+ #include <lwres/net.h>
+ #include <lwres/netdb.h>
+
++#ifdef __KAME__
++#include <net/if.h>
++#endif
++
+ #define SA(addr) ((struct sockaddr *)(addr))
+ #define SIN(addr) ((struct sockaddr_in *)(addr))
+ #define SIN6(addr) ((struct sockaddr_in6 *)(addr))
+@@ -253,14 +257,18 @@
+ p = strchr(ntmp, '%');
+ ep = NULL;
+
+- /*
+- * Vendors may want to support non-numeric
+- * scopeid around here.
+- */
++#ifdef __KAME__
++ if (p != NULL) {
++ scopeid = if_nametoindex(p + 1);
++ if (scopeid)
++ p = NULL;
++ }
++#endif
+
+- if (p != NULL)
++ if (p != NULL) {
+ scopeid = (lwres_uint32_t)strtoul(p + 1,
+ &ep, 10);
++ }
+ if (p != NULL && ep != NULL && ep[0] == '\0')
+ *p = '\0';
+ else {
diff --git a/net/bind9-current/patches/patch-ai b/net/bind9-current/patches/patch-ai
new file mode 100644
index 00000000000..7afdfdd3a10
--- /dev/null
+++ b/net/bind9-current/patches/patch-ai
@@ -0,0 +1,85 @@
+$NetBSD: patch-ai,v 1.3 2002/08/26 11:26:11 itojun Exp $
+
+--- lib/isc/sha1.c.orig Tue Jan 9 22:56:28 2001
++++ lib/isc/sha1.c Thu Jun 27 08:52:59 2002
+@@ -85,6 +85,59 @@
+ unsigned int l[16];
+ } CHAR64LONG16;
+
++#ifdef __sparc_v9__
++void do_R01(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *);
++void do_R2(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *);
++void do_R3(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *);
++void do_R4(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *);
++
++#define nR0(v,w,x,y,z,i) R0(*v,*w,*x,*y,*z,i)
++#define nR1(v,w,x,y,z,i) R1(*v,*w,*x,*y,*z,i)
++#define nR2(v,w,x,y,z,i) R2(*v,*w,*x,*y,*z,i)
++#define nR3(v,w,x,y,z,i) R3(*v,*w,*x,*y,*z,i)
++#define nR4(v,w,x,y,z,i) R4(*v,*w,*x,*y,*z,i)
++
++void
++do_R01(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *block)
++{
++ nR0(a,b,c,d,e, 0); nR0(e,a,b,c,d, 1); nR0(d,e,a,b,c, 2); nR0(c,d,e,a,b, 3);
++ nR0(b,c,d,e,a, 4); nR0(a,b,c,d,e, 5); nR0(e,a,b,c,d, 6); nR0(d,e,a,b,c, 7);
++ nR0(c,d,e,a,b, 8); nR0(b,c,d,e,a, 9); nR0(a,b,c,d,e,10); nR0(e,a,b,c,d,11);
++ nR0(d,e,a,b,c,12); nR0(c,d,e,a,b,13); nR0(b,c,d,e,a,14); nR0(a,b,c,d,e,15);
++ nR1(e,a,b,c,d,16); nR1(d,e,a,b,c,17); nR1(c,d,e,a,b,18); nR1(b,c,d,e,a,19);
++}
++
++void
++do_R2(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *block)
++{
++ nR2(a,b,c,d,e,20); nR2(e,a,b,c,d,21); nR2(d,e,a,b,c,22); nR2(c,d,e,a,b,23);
++ nR2(b,c,d,e,a,24); nR2(a,b,c,d,e,25); nR2(e,a,b,c,d,26); nR2(d,e,a,b,c,27);
++ nR2(c,d,e,a,b,28); nR2(b,c,d,e,a,29); nR2(a,b,c,d,e,30); nR2(e,a,b,c,d,31);
++ nR2(d,e,a,b,c,32); nR2(c,d,e,a,b,33); nR2(b,c,d,e,a,34); nR2(a,b,c,d,e,35);
++ nR2(e,a,b,c,d,36); nR2(d,e,a,b,c,37); nR2(c,d,e,a,b,38); nR2(b,c,d,e,a,39);
++}
++
++void
++do_R3(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *block)
++{
++ nR3(a,b,c,d,e,40); nR3(e,a,b,c,d,41); nR3(d,e,a,b,c,42); nR3(c,d,e,a,b,43);
++ nR3(b,c,d,e,a,44); nR3(a,b,c,d,e,45); nR3(e,a,b,c,d,46); nR3(d,e,a,b,c,47);
++ nR3(c,d,e,a,b,48); nR3(b,c,d,e,a,49); nR3(a,b,c,d,e,50); nR3(e,a,b,c,d,51);
++ nR3(d,e,a,b,c,52); nR3(c,d,e,a,b,53); nR3(b,c,d,e,a,54); nR3(a,b,c,d,e,55);
++ nR3(e,a,b,c,d,56); nR3(d,e,a,b,c,57); nR3(c,d,e,a,b,58); nR3(b,c,d,e,a,59);
++}
++
++void
++do_R4(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d, u_int32_t *e, CHAR64LONG16 *block)
++{
++ nR4(a,b,c,d,e,60); nR4(e,a,b,c,d,61); nR4(d,e,a,b,c,62); nR4(c,d,e,a,b,63);
++ nR4(b,c,d,e,a,64); nR4(a,b,c,d,e,65); nR4(e,a,b,c,d,66); nR4(d,e,a,b,c,67);
++ nR4(c,d,e,a,b,68); nR4(b,c,d,e,a,69); nR4(a,b,c,d,e,70); nR4(e,a,b,c,d,71);
++ nR4(d,e,a,b,c,72); nR4(c,d,e,a,b,73); nR4(b,c,d,e,a,74); nR4(a,b,c,d,e,75);
++ nR4(e,a,b,c,d,76); nR4(d,e,a,b,c,77); nR4(c,d,e,a,b,78); nR4(b,c,d,e,a,79);
++}
++#endif
++
+ /*
+ * Hash a single 512-bit block. This is the core of the algorithm.
+ */
+@@ -108,6 +161,12 @@
+ e = state[4];
+
+ /* 4 rounds of 20 operations each. Loop unrolled. */
++#ifdef __sparc_v9__
++ do_R01(&a, &b, &c, &d, &e, block);
++ do_R2(&a, &b, &c, &d, &e, block);
++ do_R3(&a, &b, &c, &d, &e, block);
++ do_R4(&a, &b, &c, &d, &e, block);
++#else
+ R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
+ R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
+ R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
+@@ -128,6 +187,7 @@
+ R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
+ R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
+ R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
++#endif
+
+ /* Add the working vars back into context.state[] */
+ state[0] += a;