diff --git a/redhat/quagga.spec.in b/redhat/quagga.spec.in
index b156475..a1263d1 100644
--- a/redhat/quagga.spec.in
+++ b/redhat/quagga.spec.in
@@ -2,6 +2,7 @@
 #
 # Some can be overriden on rpmbuild commandline with:
 # rpmbuild --define 'variable value'
+#   (use any value, ie 1 for flag "with_XXXX" definitions)
 #
 # E.g. rpmbuild --define 'release_rev 02' may be useful if building
 # rpms again and again on the same day, so the newer rpms can be installed.
@@ -9,107 +10,141 @@
 
 ####################### Quagga configure options #########################
 # with-feature options
-%{!?with_snmp:		%define with_snmp	1 }
-%{!?with_vtysh:		%define	with_vtysh	1 }
-%{!?with_ospf_te:	%define	with_ospf_te	1 }
-%{!?with_nssa:		%define	with_nssa	1 }
-%{!?with_opaque_lsa:	%define	with_opaque_lsa 1 }
-%{!?with_tcp_zebra:	%define	with_tcp_zebra	0 }
-%{!?with_vtysh:		%define	with_vtysh	1 }
-%{!?with_pam:		%define	with_pam	1 }
-%{!?with_ospfclient:	%define	with_ospfclient 1 }
-%{!?with_ospfapi:	%define	with_ospfapi	1 }
-%{!?with_irdp:		%define	with_irdp	1 }
-%{!?with_rtadv:		%define	with_rtadv	1 }
-%{!?with_isisd:		%define	with_isisd	1 }
-%{!?with_pimd:		%define	with_pimd	1 }
-%{!?with_shared:	%define	with_shared	1 }
-%{!?with_multipath:	%define	with_multipath	64 }
-%{!?quagga_user:	%define	quagga_user	quagga }
-%{!?vty_group:		%define	vty_group	quaggavty }
+%{!?with_snmp:			%global with_snmp		1 }
+%{!?with_vtysh:			%global	with_vtysh		1 }
+%{!?with_tcp_zebra:		%global	with_tcp_zebra		0 }
+%{!?with_vtysh:			%global	with_vtysh		1 }
+%{!?with_pam:			%global	with_pam		1 }
+%{!?with_ospfclient:		%global	with_ospfclient 	1 }
+%{!?with_ospfapi:		%global	with_ospfapi		1 }
+%{!?with_irdp:			%global	with_irdp		1 }
+%{!?with_rtadv:			%global	with_rtadv		1 }
+%{!?with_isisd:			%global	with_isisd		1 }
+%{!?with_pimd:			%global	with_pimd		1 }
+%{!?with_shared:		%global	with_shared		1 }
+%{!?with_multipath:		%global	with_multipath		64 }
+%{!?quagga_user:		%global	quagga_user		quagga }
+%{!?vty_group:			%global	vty_group		quaggavt }
+%{!?with_fpm:			%global	with_fpm 		0 }
+%{!?with_watchquagga:		%global	with_watchquagga 	1 }
 
 # path defines
 %define		_sysconfdir	/etc/quagga
-%define		zeb_src		%{_builddir}/%{name}-%{version}
+%define		zeb_src		%{_builddir}/%{name}-%{quaggaversion}
 %define		zeb_rh_src	%{zeb_src}/redhat
 %define		zeb_docs	%{zeb_src}/doc
 
 # defines for configure
-%define		_libexecdir	%{_exec_prefix}/libexec/quagga
-%define		_libdir		%{_exec_prefix}/%{_lib}/quagga
-%define		_includedir	%{_prefix}/include
 %define		_localstatedir	/var/run/quagga
 ############################################################################
 
-####################### distro specific tweaks #############################
-# default distro. Override with rpmbuild -D "dist XXX" 
-%{expand: %%define default_dist %(rpm -q --qf 'fc%%{VERSION}' fedora-release | grep -v 'not installed')}
-%{!?dist:		%define		dist	%{default_dist}}
+#### Version String tweak
+# Remove invalid characters form version string and replace with _
+%{expand: %%define rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
+%define         quaggaversion   @VERSION@
 
-# as distros change packages we depend on, our Requires have to change, sadly.
-%define quagga_buildreqs texi2html texinfo autoconf pam-devel
-%define quagga_buildreqs %{expand:%{quagga_buildreqs}} patch libcap-devel
+#### Check version of texi2html 
+# Old versions don't support "--number-footnotes" option.
+%{expand: %%global texi2htmlversion %(rpm -q --qf '%%{VERSION}' texi2html | cut -d. -f1 )}
 
-# FC4 and 5 split texi2html out of tetex package.
-%define quagga_buildreqs %{expand:%{quagga_buildreqs}} texi2html
+#### Check for systemd or init.d (upstart)
+# Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
+%{expand: %%global initsystem %(if [[ `/sbin/init --version 2> /dev/null` =~ upstart ]]; then echo upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; fi)}
+#
+# If init system is systemd, then always disable watchquagga
+#
+%if "%{initsystem}" == "systemd"
+	# Note: For systems with systemd, watchquagga will NOT be built. Systemd
+	# takes over the role of restarting crashed processes. Value will
+	# be overwritten with 0 below for systemd independent on the setting here
+	%global	with_watchquagga 0
+%endif
 
-# man page probably needs groff for groff_ms macros
-%define  quagga_buildreqs %{expand:%{quagga_buildreqs}} groff
-
-############################################################################
+# if FPM is enabled, then enable tcp_zebra as well
+#
+%if %{with_fpm}
+	%global	with_tcp_zebra	1
+%endif
 
 # misc internal defines
 %{!?quagga_uid:		%define         quagga_uid      92 }
 %{!?quagga_gid:		%define         quagga_gid      92 }
+%{!?vty_gid:		%define		vty_gid		85 }
+
 %define		daemon_list	zebra ripd ospfd bgpd
 
 %define		daemonv6_list	ripngd ospf6d
 
 %if %{with_isisd}
-%define		daemon_other	isisd
+%define		daemon_isisd	isisd
 %else
-%define		daemon_other	""
+%define		daemon_isisd	""
 %endif
 
-%define		all_daemons	%{daemon_list} %{daemonv6_list} %{daemon_other} watchquagga
+%if %{with_pimd}
+%define         daemon_pimd	pimd
+%else
+%define		daemon_pimd	""
+%endif
+
+%if %{with_watchquagga}
+%define         daemon_watchquagga	watchquagga
+%else
+%define		daemon_watchquagga	""
+%endif
+
+%define		all_daemons	%{daemon_list} %{daemonv6_list} %{daemon_isisd} %{daemon_pimd} %{daemon_watchquagga}
 
 # allow build dir to be kept
-%{!?keep_build:		%define		keep_build	0 }
+%{!?keep_build:		%global		keep_build	0 }
 
 #release sub-revision (the two digits after the CONFDATE)
 %{!?release_rev:	%define		release_rev	01 }
 
 Summary: Routing daemon
-Name:		quagga
-Version:	@VERSION@
-Release:	@CONFDATE@%{release_rev}
-License:	GPL
-Group: System Environment/Daemons
-Source0:	http://www.quagga.net/snapshots/cvs/%{name}-%{version}.tar.gz
-URL:		http://www.quagga.net
+Name:			quagga
+Version:		%{rpmversion}
+Release:		@CONFDATE@%{release_rev}%{?dist}
+License:		GPLv2+
+Group:			System Environment/Daemons
+Source0:		http://download.savannah.gnu.org/releases/quagga/%{name}-%{quaggaversion}.tar.gz
+URL:			http://www.quagga.net
+Requires:		ncurses
+Requires(pre):	/sbin/install-info
+Requires(preun): /sbin/install-info
+Requires(post):	/sbin/install-info
+BuildRequires:	texi2html texinfo autoconf patch libcap-devel groff
 %if %{with_snmp}
 BuildRequires:	net-snmp-devel
-Requires(pre):		net-snmp
+Requires:		net-snmp
 %endif
 %if %{with_vtysh}
 BuildRequires:	readline readline-devel ncurses ncurses-devel
-Requires(pre):		ncurses
+Requires:		ncurses
 %endif
-BuildRequires:	%{quagga_buildreqs}
+%if %{with_pam}
+BuildRequires:	pam-devel
+Requires:		pam
+%endif
+%if "%{initsystem}" == "systemd"
+BuildRequires:		systemd
+Requires(post):		systemd
+Requires(preun):	systemd
+Requires(postun):	systemd
+%else
 # Initscripts > 5.60 is required for IPv6 support
 Requires(pre):		initscripts >= 5.60
-Requires(pre):		ncurses pam
-Requires(pre):		/sbin/install-info
-Provides:	routingdaemon
-BuildRoot:	%{_tmppath}/%{name}-%{version}-root
-Obsoletes:	bird gated mrt zebra
+%endif
+Provides:			routingdaemon = %{version}-%{release}
+BuildRoot:			%{_tmppath}/%{name}-%{version}-root
+Obsoletes:			bird gated mrt zebra quagga-sysvinit
 
 %description
 Quagga is a free software that manages TCP/IP based routing
 protocol. It takes multi-server and multi-thread approach to resolve
 the current complexity of the Internet.
 
-Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng.
+Quagga supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng and PIM.
 
 Quagga is intended to be used as a Route Server and a Route Reflector. It is
 not a toolkit, it provides full routing power under a new architecture.
@@ -127,13 +162,14 @@
 %package devel
 Summary: Header and object files for quagga development
 Group: System Environment/Daemons
+Requires: %{name} = %{version}-%{release}
 
 %description devel
 The quagga-devel package contains the header and object files neccessary for
 developing OSPF-API and quagga applications.
 
 %prep
-%setup  -q
+%setup  -q -n quagga-%{quaggaversion}
 
 %build
 
@@ -148,6 +184,11 @@
 #CFLAGS="${CFLAGS} -Wpacked -Wpadded"
 
 %configure \
+    --sysconfdir=%{_sysconfdir} \
+    --libdir=%{_libdir} \
+    --libexecdir=%{_libexecdir} \
+    --localstatedir=%{_localstatedir} \
+	--disable-werror \
 %if !%{with_shared}
 	--disable-shared \
 %endif
@@ -160,15 +201,6 @@
 %if %{with_tcp_zebra}
 	--enable-tcp-zebra \
 %endif
-%if %{with_nssa}
-	--enable-nssa \
-%endif
-%if %{with_opaque_lsa}
-	--enable-opaque-lsa \
-%endif
-%if %{with_ospf_te}
-	--enable-ospf-te \
-%endif
 %if %{with_vtysh}
 	--enable-vtysh \
 %endif
@@ -200,57 +232,79 @@
 %if %{with_pam}
 	--with-libpam \
 %endif
-%if %quagga_user
+%if 0%{?quagga_user:1}
 	--enable-user=%quagga_user \
 	--enable-group=%quagga_user \
 %endif
-%if %vty_group
+%if 0%{?vty_group:1}
 	--enable-vty-group=%vty_group \
 %endif
---enable-netlink --enable-gcc-rdynamic
+%if %{with_fpm}
+	--enable-fpm \
+%else
+	--disable-fpm \
+%endif
+%if %{with_watchquagga}
+	--enable-watchquagga \
+%else
+	--disable-watchquagga \
+%endif
+	--enable-gcc-rdynamic
 
 make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
 
 pushd doc
+%if %{texi2htmlversion} < 5
+texi2html --number-sections quagga.texi
+%else
 texi2html --number-footnotes  --number-sections quagga.texi
+%endif
 popd
 
 %install
-rm -rf $RPM_BUILD_ROOT
-
-install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,logrotate.d,pam.d} \
-	$RPM_BUILD_ROOT/var/log/quagga $RPM_BUILD_ROOT%{_infodir}
-
-make install \
-	DESTDIR=$RPM_BUILD_ROOT
+mkdir -p %{buildroot}/etc/{quagga,sysconfig,logrotate.d,pam.d} \
+         %{buildroot}/var/log/quagga %{buildroot}%{_infodir}
+make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
 
 # Remove this file, as it is uninstalled and causes errors when building on RH9
-rm -rf $RPM_BUILD_ROOT/usr/share/info/dir
+rm -rf %{buildroot}/usr/share/info/dir
 
-# install etc sources
+# install /etc sources
+%if "%{initsystem}" == "systemd"
+mkdir -p %{buildroot}%{_unitdir}
+for daemon in %{all_daemons} ; do
+	if [ x"${daemon}" != x"" ] ; then
+		install %{zeb_rh_src}/${daemon}.service \
+			%{buildroot}%{_unitdir}/${daemon}.service
+	fi
+done
+%else
+mkdir -p %{buildroot}/etc/rc.d/init.d
 for daemon in %{all_daemons} ; do
 	if [ x"${daemon}" != x"" ] ; then
 		install %{zeb_rh_src}/${daemon}.init \
-			$RPM_BUILD_ROOT/etc/rc.d/init.d/${daemon}
+			%{buildroot}/etc/rc.d/init.d/${daemon}
 	fi
 done
+%endif
+
 install -m644 %{zeb_rh_src}/quagga.pam \
-	$RPM_BUILD_ROOT/etc/pam.d/quagga
+	%{buildroot}/etc/pam.d/quagga
 install -m644 %{zeb_rh_src}/quagga.logrotate \
-	$RPM_BUILD_ROOT/etc/logrotate.d/quagga
+	%{buildroot}/etc/logrotate.d/quagga
 install -m644 %{zeb_rh_src}/quagga.sysconfig \
-	$RPM_BUILD_ROOT/etc/sysconfig/quagga
-install -d -m750  $RPM_BUILD_ROOT/var/run/quagga
+	%{buildroot}/etc/sysconfig/quagga
+install -d -m750  %{buildroot}/var/run/quagga
 
 %pre
 # add vty_group
-%if %vty_group
+%if 0%{?vty_group:1}
 if getent group %vty_group > /dev/null ; then : ; else \
- /usr/sbin/groupadd -r %vty_group > /dev/null || : ; fi
+ /usr/sbin/groupadd -r -g %vty_gid %vty_group > /dev/null || : ; fi
 %endif
 
 # add quagga user and group
-%if %quagga_user
+%if 0%{?quagga_user:1}
 # Ensure that quagga_gid gets correctly allocated
 if getent group %quagga_user >/dev/null; then : ; else \
  /usr/sbin/groupadd -g %quagga_gid %quagga_user > /dev/null || : ; \
@@ -292,77 +346,145 @@
 zebra_spec_add_service pimd     2611/tcp "PIMd vty"
 %endif
 
-for daemon in %daemon_list ; do
+%if "%{initsystem}" == "systemd"
+for daemon in %all_daemons ; do
+	%systemd_post ${daemon}.service
+done
+%else
+for daemon in %all_daemons ; do
 	/sbin/chkconfig --add ${daemon}
 done
+%endif
 
 /sbin/install-info %{_infodir}/quagga.info.gz %{_infodir}/dir
 
 # Create dummy files if they don't exist so basic functions can be used.
 if [ ! -e %{_sysconfdir}/zebra.conf ]; then
 	echo "hostname `hostname`" > %{_sysconfdir}/zebra.conf
-%if %{quagga_user}
-	chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf
+%if 0%{?quagga_user:1}
+	chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf*
 %endif
 	chmod 640 %{_sysconfdir}/zebra.conf
 fi
+for daemon in %{all_daemons} ; do
+	if [ ! -e %{_sysconfdir}/${daemon}.conf ]; then
+		touch %{_sysconfdir}/${daemon}.conf
+		%if 0%{?quagga_user:1}
+			chown %quagga_user:%quagga_user %{_sysconfdir}/${daemon}.conf*
+		%endif
+	fi
+done
+%if %{with_watchquagga}
+	# No config for watchquagga - this is part of /etc/sysconfig/quagga
+	rm -f %{_sysconfdir}/watchquagga.*
+%endif
+
 if [ ! -e %{_sysconfdir}/vtysh.conf ]; then
 	touch %{_sysconfdir}/vtysh.conf
 	chmod 640 %{_sysconfdir}/vtysh.conf
+%if 0%{?vty_group:1}
+    chown quagga:%{vty_group} %{_sysconfdir}/vtysh.conf*
+%endif
 fi
 
 %postun
 if [ "$1" -ge 1 ]; then
 	# Find out which daemons need to be restarted.
 	for daemon in %all_daemons ; do
-		if [ -f /var/lock/subsys/$daemon ]; then
-			eval restart_$daemon=yes
+		if [ -f /var/lock/subsys/${daemon} ]; then
+			eval restart_${daemon}=yes
 		else
-			eval restart_$daemon=no
+			eval restart_${daemon}=no
 		fi
 	done
 	# Rename restart flags for daemons handled specially.
 	running_zebra="$restart_zebra"
 	restart_zebra=no
-	running_watchquagga="$restart_watchquagga"
-	restart_watchquagga=no
-	# Stop watchquagga first.
-	[ "$running_watchquagga" = yes ] && \
-		/etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1
-	# Stop all daemons other than zebra and watchquagga.
-	for daemon in %all_daemons ; do
-		eval restart=\$restart_${daemon}
-		[ "$restart" = yes ] && \
-			/etc/rc.d/init.d/$daemon stop >/dev/null 2>&1
-	done
-	# Restart zebra.
-	[ "$running_zebra" = yes ] && \
-		/etc/rc.d/init.d/zebra restart >/dev/null 2>&1
-	# Start all daemons other than zebra and watchquagga.
-	for daemon in %all_daemons ; do
-		eval restart=\$restart_${daemon}
-		[ "$restart" = yes ] && \
-			/etc/rc.d/init.d/$daemon start >/dev/null 2>&1
-	done
-	# Start watchquagga last.
-	# Avoid postun scriptlet error if watchquagga is not running. 
-	[ "$running_watchquagga" = yes ] && \
-		/etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
+	%if %{with_watchquagga}
+		running_watchquagga="$restart_watchquagga"
+		restart_watchquagga=no
+	%endif
+	
+	%if "%{initsystem}" == "systemd"
+		##
+		## Systemd Version
+		##
+		# No watchquagga for systemd version
+		#
+		# Stop all daemons other than zebra.
+		for daemon in %all_daemons ; do
+			eval restart=\$restart_${daemon}
+			[ "$restart" = yes ] && \
+				%systemd_postun ${daemon}.service
+		done
+		# Restart zebra.
+		[ "$running_zebra" = yes ] && \
+			%systemd_postun_with_restart $daemon.service
+		# Start all daemons other than zebra.
+		for daemon in %all_daemons ; do
+			eval restart=\$restart_${daemon}
+			[ "$restart" = yes ] && \
+				%systemd_post ${daemon}.service
+		done
+	%else
+		##
+		## init.d Version
+		##
+		%if %{with_watchquagga}
+			# Stop watchquagga first.
+			[ "$running_watchquagga" = yes ] && \
+				/etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1
+		%endif
+		# Stop all daemons other than zebra and watchquagga.
+		for daemon in %all_daemons ; do
+			eval restart=\$restart_${daemon}
+			[ "$restart" = yes ] && \
+				/etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1
+		done
+		# Restart zebra.
+		[ "$running_zebra" = yes ] && \
+			/etc/rc.d/init.d/zebra restart >/dev/null 2>&1
+		# Start all daemons other than zebra and watchquagga.
+		for daemon in %all_daemons ; do
+			eval restart=\$restart_${daemon}
+			[ "$restart" = yes ] && \
+				/etc/rc.d/init.d/${daemon} start >/dev/null 2>&1
+		done
+		%if %{with_watchquagga}
+			# Start watchquagga last.
+			# Avoid postun scriptlet error if watchquagga is not running. 
+			[ "$running_watchquagga" = yes ] && \
+				/etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
+		%endif	
+	%endif
 fi
-/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
 
 %preun
-if [ "$1" = "0" ]; then
-	for daemon in %all_daemons ; do
-		/etc/rc.d/init.d/${daemon} stop  >/dev/null 2>&1
-		/sbin/chkconfig --del ${daemon}
-	done
-	/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
-fi
+%if "%{initsystem}" == "systemd"
+	##
+	## Systemd Version
+	##
+	if [ "$1" = "0" ]; then
+		for daemon in %all_daemons ; do
+			%systemd_preun ${daemon}.service
+		done
+	fi
+%else
+	##
+	## init.d Version
+	##
+	if [ "$1" = "0" ]; then
+		for daemon in %all_daemons ; do
+			/etc/rc.d/init.d/${daemon} stop  >/dev/null 2>&1
+			/sbin/chkconfig --del ${daemon}
+		done
+	fi
+%endif
+/sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
 
 %clean
-%if !%{keep_build}
-rm -rf $RPM_BUILD_ROOT
+%if !0%{?keep_build:1}
+rm -rf %{buildroot}
 %endif
 
 %files
@@ -371,26 +493,27 @@
 %doc doc/quagga.html
 %doc doc/mpls
 %doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO
-%if %{quagga_user}
+%if 0%{?quagga_user:1}
 %dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir}
 %dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga 
 %dir %attr(751,%quagga_user,%quagga_user) /var/run/quagga
 %else
 %dir %attr(750,root,root) %{_sysconfdir}
 %dir %attr(750,root,root) /var/log/quagga
-%dir %attr(755,root,root) /usr/share/info
 %dir %attr(750,root,root) /var/run/quagga
 %endif
-%if %{vty_group}
+%if 0%{?vty_group:1}
 %attr(750,%quagga_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample
 %endif
-%{_infodir}/*info*
+%{_infodir}/quagga.info.gz
 %{_mandir}/man*/*
 %{_sbindir}/zebra
 %{_sbindir}/ospfd
 %{_sbindir}/ripd
 %{_sbindir}/bgpd
-%{_sbindir}/watchquagga
+%if %{with_watchquagga}
+	%{_sbindir}/watchquagga
+%endif
 %{_sbindir}/ripngd
 %{_sbindir}/ospf6d
 %if %{with_pimd}
@@ -399,17 +522,33 @@
 %if %{with_isisd}
 %{_sbindir}/isisd
 %endif
-%dir %attr(755,root,root) %{_libdir}
 %if %{with_shared}
-%dir %{_libdir}
-%{_libdir}/lib*.so
-%{_libdir}/lib*.so.*
+%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_libdir}/lib*.so.*
 %endif
 %if %{with_vtysh}
 %{_bindir}/*
 %endif
 %config /etc/quagga/[!v]*
-%config /etc/rc.d/init.d/*
+%if "%{initsystem}" == "systemd"
+	%config %{_unitdir}/*.service
+%else
+	%config /etc/rc.d/init.d/zebra
+	%if %{with_watchquagga}
+		%config /etc/rc.d/init.d/watchquagga
+	%endif
+	%config /etc/rc.d/init.d/ripd
+	%config /etc/rc.d/init.d/ospfd
+	%config /etc/rc.d/init.d/bgpd
+	%config /etc/rc.d/init.d/ripngd
+	%config /etc/rc.d/init.d/ospf6d
+	%if %{with_isisd}
+		%config /etc/rc.d/init.d/isisd
+	%endif
+	%if %{with_pimd}
+		%config /etc/rc.d/init.d/pimd
+	%endif
+%endif
 %config(noreplace) /etc/sysconfig/quagga
 %config(noreplace) /etc/pam.d/quagga
 %config(noreplace) %attr(640,root,root) /etc/logrotate.d/*
@@ -435,17 +574,27 @@
 %endif
 
 %changelog
-* Fri Sep 4 2015 Paul Jakma <paul@jakma.org> - %{version}
-- package the pimd binary
+* Thu Feb 11 2016 Paul Jakma <paul@jakma.org> - %{version}
 - remove with_ipv6 conditionals, always build v6
 - Fix UTF-8 char in spec changelog
 - remove quagga.pam.stack, long deprecated.
 
-* Fri Sep 4 2015 Paul Jakma <paul@jakma.org> - %{version}
+* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
+- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
+    --enable-netlink
+- Remove support for old fedora 4/5
+- Fix for package nameing
+- Fix Weekdays of previous changelogs (bogus dates)
+- Add conditional logic to only build tex footnotes with supported texi2html 
+- Added pimd to files section and fix double listing of /var/lib*/quagga
+- Numerous fixes to unify upstart/systemd startup into same spec file
+- Only allow use of watchquagga for non-systemd systems. no need with systemd
+
+* Fri Sep  4 2015 Paul Jakma <paul@jakma.org>
 - buildreq updates
 - add a default define for with_pimd
 
-* Thu Sep 12 2005 Paul Jakma <paul@dishone.st>
+* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
 - Steal some changes from Fedora spec file:
 - Add with_rtadv variable
 - Test for groups/users with getent before group/user adding
@@ -498,7 +647,7 @@
 - add user with fixed UID/GID (RH)
 - create user with shell /sbin/nologin rather than /bin/false (RH)
 - stop daemons on uninstall (RH)
-- delete info file on %preun, not %postun to avoid deletion on upgrade. (RH)
+- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
 - isisd added
 - cleanup tasks carried out for every daemon
 
@@ -510,10 +659,10 @@
 - Renamed to Quagga
 - Sync to Quagga release 0.96
 
-* Tue Mar 20 2003 Paul Jakma <paul@dishone.st>
+* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
 - zebra privileges support
 
-* Mon Mar 18 2003 Paul Jakma <paul@dishone.st>
+* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
 - Fix mem leak in 'show thread cpu'
 - Ralph Keller's OSPF-API
 - Amir: Fix configure.ac for net-snmp
@@ -537,7 +686,7 @@
 - Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
 - Fixed up some build requirements (patch)
 - Added conditional build requirements for vtysh / snmp
-- Added conditional to %files for %_bindir depending on vtysh
+- Added conditional to files for _bindir depending on vtysh
 
 * Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
 - update to latest CVS
@@ -577,7 +726,7 @@
 * Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
 - Fix bug #51336
 
-* Wed Aug  1 2001 Trond Eivind Glomsrød  <teg@redhat.com> 0.91a-5
+* Wed Aug  1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
 - Use generic initscript strings instead of initscript specific
   ( "Starting foo: " -> "Starting $prog:" )
 
