%define version @VERSION@

Summary:	Zebra routing engine
Name:		zebra
Version:	%{version}
Release:	1
Source:		zebra-%{version}.tar.gz
URL:		http://www.zebra.org
Copyright:	GPL
Group:		System Environment/Daemons
BuildRoot:	/tmp/zebra-%{version}-root

%description
GNU Zebra is free software (distributed under GNU Generic Public License)
that manages TCP/IP based routing protocols. It supports BGP-4 protocol as
described in RFC1771 (A Border Gateway Protocol 4) as well as RIPv1, RIPv2
and OSPFv2. Unlike traditional, Gated based, monolithic architectures and
even the so-called "new modular architectures" that remove the burden of
processing routing functions from the cpu and utilize special ASIC chips
instead, Zebra software offers true modularity.

%prep
%setup

%build
#./configure --enable-snmp --prefix=/usr --sysconfdir=/etc
./configure --prefix=/usr --sysconfdir=/etc
make

%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
rm -f $RPM_BUILD_ROOT/usr/info/dir
rm -f $RPM_BUILD_ROOT/usr/man/man8/ospf6*
rm -f $RPM_BUILD_ROOT/usr/man/man8/ripng*
rm -f $RPM_BUILD_ROOT/usr/sbin/ospf6d
rm -f $RPM_BUILD_ROOT/usr/sbin/ripngd
strip $RPM_BUILD_ROOT/usr/sbin/*

mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
install -m755 init/redhat/bgpd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/bgpd
#install -m755 init/redhat/ospf6d.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ospf6d
install -m755 init/redhat/ospfd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ospfd
install -m755 init/redhat/ripd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ripd
#install -m755 init/redhat/ripngd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/ripngd
install -m755 init/redhat/zebra.init $RPM_BUILD_ROOT/etc/rc.d/init.d/zebra 

mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
install -m644 init/redhat/zebra.logrotate $RPM_BUILD_ROOT/etc/logrotate.d/zebra


%post
# zebra_spec_add_service <sercice name> <port/proto> <comment>
# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"

zebra_spec_add_service ()
{
  # Add port /etc/services entry if it isn't already there 
  if [ -f /etc/services ] && ! grep -q "^$1[^a-zA-Z0-9]" /etc/services ; then
    echo "$1            $2              # $3"  >> /etc/services
  fi
}

zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
zebra_spec_add_service zebra    2601/tcp "zebra vty"
zebra_spec_add_service ripd     2602/tcp "RIPd vty"
zebra_spec_add_service ripngd   2603/tcp "RIPngd vty"
zebra_spec_add_service ospfd    2604/tcp "OSPFd vty"
zebra_spec_add_service bgpd     2605/tcp "BGPd vty"
zebra_spec_add_service ospf6d   2606/tcp "OSPF6d vty"

#Install info
/sbin/install-info /usr/info/zebra.info /usr/info/dir

if [ -x /sbin/chkconfig ]; then
  chkconfig --add bgpd
#  chkconfig --add ospf6d
  chkconfig --add ospfd
  chkconfig --add ripd
#  chkconfig --add ripngd
  chkconfig --add zebra
fi


%preun
if [ "$1" = 0 ] ; then
  /sbin/install-info --delete /usr/info/zebra.info /usr/info/dir

  if [ -x /sbin/chkconfig ]; then
    chkconfig --del bgpd
#    chkconfig --del ospf6d
    chkconfig --del ospfd
    chkconfig --del ripd
#    chkconfig --del ripngd
    chkconfig --del zebra
  fi
fi

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{name}-%{version}

%files
%attr(-,root,root) %doc AUTHORS COPYING ChangeLog INSTALL NEWS README SERVICES TODO bgpd/bgpd.conf.sample ospfd/ospfd.conf.sample ripd/ripd.conf.sample zebra/zebra.conf.sample
%attr(-,root,root) %config /etc/rc.d/init.d/*
%attr(-,root,root) %config /etc/logrotate.d/*
%attr(-,root,root) /usr/info/*
#%attr(-,root,root) /usr/man/*      # Not man1 to exclude vtysh man page as
                                    # it is not build by default (for now)
%attr(-,root,root) /usr/man/man8/*
%attr(-,root,root) /usr/sbin/*

%changelog
* Mon Nov 6 2000 Lennert Buytenhek <buytenh@gnu.org>
- Don't include ospf6d and ripngd in package.
- Fix logrotate file (add ospf.log).
* Mon Oct 2 2000 Horms <horms@valinux.com>
- Install and uninstall info in %post and %preun respectively
- Moved chkconfig --del operations from %postun to %preun, as
  chkconfig needs to run while the init files are still present on
  the system.
- Don't install vtysh man page as vtysh is not build by default
- Added logrotate script so logs won't grow without bound
* Wed Sep 27 2000 Horms <horms@vergenet.net>
- Add ports to /etc/services if they aren't there
- forcibly remove $RPM_BUILD_ROOT/usr/info/dir and friends so
  there is no error if it does not exist when rm is run.
- Clean up the zebra build dir 
