Add start/stop scripts for the rc.d framework used by
pkgsrc (NetBSD and others).  Contributed by Miles Nordin.
diff --git a/Makefile.am b/Makefile.am
index 91b2964..f141f57 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,15 +1,14 @@
 ## Process this file with automake to produce Makefile.in.
 
 SUBDIRS = lib @ZEBRA@ @BGPD@ @RIPD@ @RIPNGD@ @OSPFD@ @OSPF6D@ \
-         @ISISD@ @VTYSH@ @OSPFCLIENT@ redhat doc
+         @ISISD@ @VTYSH@ @OSPFCLIENT@ pkgsrc redhat doc
 
 DIST_SUBDIRS = lib zebra bgpd ripd ripngd ospfd ospf6d \
-	  isisd vtysh ospfclient doc redhat tests
+	  isisd vtysh ospfclient doc pkgsrc redhat tests
 
 EXTRA_DIST = aclocal.m4 SERVICES TODO REPORTING-BUGS vtysh/Makefile.in \
 	vtysh/Makefile.am update-autotools \
 	tools/mrlg.cgi tools/rrcheck.pl tools/rrlookup.pl tools/zc.pl \
 	tools/zebra.el m4
-	
 
 ACLOCAL_AMFLAGS = -I m4
diff --git a/configure.ac b/configure.ac
index 3c03282..df819ed 100755
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 ##  Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
 ##  Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
 ##
-## $Id: configure.ac,v 1.60 2004/08/26 12:21:28 hasso Exp $
+## $Id: configure.ac,v 1.61 2004/08/27 15:57:35 gdt Exp $
 AC_PREREQ(2.53)
 
 AC_INIT(quagga, 0.96.5, [http://bugzilla.quagga.net])
@@ -1123,6 +1123,7 @@
 	  ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile 
 	  ospfclient/Makefile
 	  vtysh/extract.pl
+	  pkgsrc/Makefile
 	  redhat/Makefile redhat/quagga.spec
 	  lib/version.h
 	  tests/Makefile
diff --git a/pkgsrc/Makefile.am b/pkgsrc/Makefile.am
new file mode 100644
index 0000000..4db92ab
--- /dev/null
+++ b/pkgsrc/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = bgpd.sh ospf6d.sh ospfd.sh ripd.sh ripngd.sh zebra.sh
diff --git a/pkgsrc/README.txt b/pkgsrc/README.txt
new file mode 100644
index 0000000..13ec449
--- /dev/null
+++ b/pkgsrc/README.txt
@@ -0,0 +1,7 @@
+$Id: README.txt,v 1.1 2004/08/27 15:57:35 gdt Exp $
+
+This directory contains files for use with the pkgsrc framework
+(http://www.pkgsrc.org) used with NetBSD and other operating systems.
+Eventually it will be hooked into automake such that they can be
+installed in /usr/pkg/etc/rc.d (via configure option, probably).
+
diff --git a/pkgsrc/bgpd.sh b/pkgsrc/bgpd.sh
new file mode 100644
index 0000000..b150e9f
--- /dev/null
+++ b/pkgsrc/bgpd.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# bgpd is part of the quagga routing beast
+#
+# PROVIDE: bgpd
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="bgpd"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/pkgsrc/ospf6d.sh b/pkgsrc/ospf6d.sh
new file mode 100644
index 0000000..b008823
--- /dev/null
+++ b/pkgsrc/ospf6d.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# ospf6d is part of the quagga routing beast
+#
+# PROVIDE: ospf6d
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="ospf6d"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/pkgsrc/ospfd.sh b/pkgsrc/ospfd.sh
new file mode 100644
index 0000000..c852211
--- /dev/null
+++ b/pkgsrc/ospfd.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# ospfd is part of the quagga routing beast
+#
+# PROVIDE: ospfd
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="ospfd"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/pkgsrc/ripd.sh b/pkgsrc/ripd.sh
new file mode 100644
index 0000000..6ba86c4
--- /dev/null
+++ b/pkgsrc/ripd.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# ripd is part of the quagga routing beast
+#
+# PROVIDE: ripd
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="ripd"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/pkgsrc/ripngd.sh b/pkgsrc/ripngd.sh
new file mode 100644
index 0000000..ff45b4e
--- /dev/null
+++ b/pkgsrc/ripngd.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# ripngd is part of the quagga routing beast
+#
+# PROVIDE: ripngd
+# REQUIRE: zebra
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="ripngd"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/pkgsrc/zebra.sh b/pkgsrc/zebra.sh
new file mode 100644
index 0000000..e4750f7
--- /dev/null
+++ b/pkgsrc/zebra.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# zebra is the head of the quagga routing beast
+#
+# PROVIDE: zebra
+# REQUIRE: NETWORKING
+##
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:@PREFIX@/sbin:@PREFIX@/bin
+export PATH
+
+if [ -f /etc/rc.subr ]
+then
+	. /etc/rc.subr
+fi
+
+name="zebra"
+rcvar=$name
+required_files="@PKG_SYSCONFDIR@/${name}.conf"
+command="@PREFIX@/sbin/${name}"
+command_args="-d"
+
+start_precmd="zebra_precmd"
+stop_postcmd="zebra_postcmd"
+socket_dir=/var/run/zebra
+pidfile="${socket_dir}/${name}.pid"
+
+zebra_precmd()
+{
+    mkdir -p "${socket_dir}"
+    chown quagga.quagga "${socket_dir}"
+    chmod 750 "${socket_dir}"
+    rc_flags="$(
+	set -- $rc_flags
+	while [ $# -ne 0 ]; do
+	    if [ X"$1" = X-P -o X"$1" = X-A ]; then
+		break
+	    fi
+	    shift
+	done
+	if [ $# -eq 0 ]; then
+	    echo "-P 0"
+	fi
+	) $rc_flags"
+}
+
+zebra_postcmd()
+{
+    if [ -d "${socketdir}" ]; then
+        rmdir ${socketdir}
+    fi
+}
+
+load_rc_config $name
+run_rc_command "$1"