]> git.proxmox.com Git - mirror_frr.git/blob - redhat/frr.spec.in
redhat: remove macro from changelog
[mirror_frr.git] / redhat / frr.spec.in
1 # configure options
2 #
3 # Some can be overriden on rpmbuild commandline with:
4 # rpmbuild --define 'variable value'
5 # (use any value, ie 1 for flag "with_XXXX" definitions)
6 #
7 # E.g. rpmbuild --define 'release_rev 02' may be useful if building
8 # rpms again and again on the same day, so the newer rpms can be installed.
9 # bumping the number each time.
10
11 #################### FRRouting (FRR) configure options #####################
12 # with-feature options
13 %{!?with_babeld: %global with_babeld 1 }
14 %{!?with_bgp_vnc: %global with_bgp_vnc 0 }
15 %{!?with_eigrpd: %global with_eigrpd 1 }
16 %{!?with_fpm: %global with_fpm 1 }
17 %{!?with_ldpd: %global with_ldpd 1 }
18 %{!?with_multipath: %global with_multipath 256 }
19 %{!?with_nhrpd: %global with_nhrpd 1 }
20 %{!?with_ospfapi: %global with_ospfapi 1 }
21 %{!?with_ospfclient: %global with_ospfclient 1 }
22 %{!?with_pam: %global with_pam 0 }
23 %{!?with_pbrd: %global with_pbrd 1 }
24 %{!?with_pimd: %global with_pimd 1 }
25 %{!?with_rpki: %global with_rpki 0 }
26 %{!?with_rtadv: %global with_rtadv 1 }
27 %{!?with_watchfrr: %global with_watchfrr 1 }
28
29 # user and group
30 %{!?frr_user: %global frr_user frr }
31 %{!?vty_group: %global vty_group frrvty }
32
33 # path defines
34 %define configdir %{_sysconfdir}/%{name}
35 %define _sbindir /usr/lib/frr
36 %define zeb_src %{_builddir}/%{name}-%{frrversion}
37 %define zeb_rh_src %{zeb_src}/redhat
38 %define zeb_docs %{zeb_src}/doc
39 %define frr_tools %{zeb_src}/tools
40
41 # defines for configure
42 %define rundir %{_localstatedir}/run/%{name}
43
44 # define for sphinx-build binary
45 %if 0%{?rhel} && 0%{?rhel} < 7
46 %define sphinx sphinx-build2.7
47 %else
48 %define sphinx sphinx-build
49 %endif
50 ############################################################################
51
52 #### Version String tweak
53 # Remove invalid characters form version string and replace with _
54 %{expand: %%global rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
55 %define frrversion @VERSION@
56
57 #### Check for systemd or init.d (upstart)
58 # Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
59 %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
60 %global initsystem systemd
61 %else
62 %if 0%{?rhel} && 0%{?rhel} < 7
63 %global initsystem upstart
64 %else
65 %{expand: %%global initsystem %(if [[ `/sbin/init --version 2> /dev/null` =~ upstart ]]; then echo upstart; elif [[ `readlink -f /sbin/init` = /usr/lib/systemd/systemd ]]; then echo systemd; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; fi)}
66 %endif
67 %endif
68
69 # If init system is systemd, then always enable watchfrr
70 %if "%{initsystem}" == "systemd"
71 %global with_watchfrr 1
72 %endif
73
74 #### Check for RedHat 6.x or CentOS 6.x - they are too old to support PIM.
75 #### Always disable it on these old systems unconditionally
76 #
77 # if CentOS / RedHat and version < 7, then disable PIMd (too old, won't work)
78 %if 0%{?rhel} && 0%{?rhel} < 7
79 %global with_pimd 0
80 %endif
81
82 # misc internal defines
83 %{!?frr_uid: %global frr_uid 92 }
84 %{!?frr_gid: %global frr_gid 92 }
85 %{!?vty_gid: %global vty_gid 85 }
86
87 %define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd
88
89 %if %{with_ldpd}
90 %define daemon_ldpd ldpd
91 %else
92 %define daemon_ldpd ""
93 %endif
94
95 %if %{with_pimd}
96 %define daemon_pimd pimd
97 %else
98 %define daemon_pimd ""
99 %endif
100
101 %if %{with_pbrd}
102 %define daemon_pbrd pbrd
103 %else
104 %define daemon_pbrd ""
105 %endif
106
107 %if %{with_nhrpd}
108 %define daemon_nhrpd nhrpd
109 %else
110 %define daemon_nhrpd ""
111 %endif
112
113 %if %{with_eigrpd}
114 %define daemon_eigrpd eigrpd
115 %else
116 %define daemon_eigrpd ""
117 %endif
118
119 %if %{with_babeld}
120 %define daemon_babeld babeld
121 %else
122 %define daemon_babeld ""
123 %endif
124
125 %if %{with_watchfrr}
126 %define daemon_watchfrr watchfrr
127 %else
128 %define daemon_watchfrr ""
129 %endif
130
131 %define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd}
132
133 #release sub-revision (the two digits after the CONFDATE)
134 %{!?release_rev: %global release_rev 01 }
135
136 Summary: Routing daemon
137 Name: frr
138 Version: %{rpmversion}
139 Release: @CONFDATE@%{release_rev}%{?dist}
140 License: GPLv2+
141 Group: System Environment/Daemons
142 Source0: https://github.com/FRRouting/frr/archive/%{name}-%{frrversion}.tar.gz
143 URL: https://www.frrouting.org
144 Requires(preun): info
145 Requires(post): info
146 BuildRequires: bison >= 2.7
147 BuildRequires: c-ares-devel
148 BuildRequires: flex
149 BuildRequires: gcc
150 BuildRequires: json-c-devel
151 BuildRequires: libcap-devel
152 BuildRequires: make
153 BuildRequires: ncurses-devel
154 BuildRequires: readline-devel
155 BuildRequires: texinfo
156 %if 0%{?rhel} && 0%{?rhel} < 7
157 #python27-devel is available from ius community repo for RedHat/CentOS 6
158 BuildRequires: python27-devel
159 BuildRequires: python27-sphinx
160 %else
161 BuildRequires: python-devel >= 2.7
162 BuildRequires: python-sphinx
163 %endif
164 %if %{with_pam}
165 BuildRequires: pam-devel
166 %endif
167 %if %{with_rpki}
168 BuildRequires: librtr-devel >= 0.5
169 %endif
170 %if "%{initsystem}" == "systemd"
171 BuildRequires: systemd
172 BuildRequires: systemd-devel
173 Requires(post): systemd
174 Requires(preun): systemd
175 Requires(postun): systemd
176 %else
177 Requires(post): chkconfig
178 Requires(preun): chkconfig
179 # Initscripts > 5.60 is required for IPv6 support
180 Requires(pre): initscripts >= 5.60
181 Requires: initscripts
182 %endif
183 Provides: routingdaemon = %{version}-%{release}
184 Obsoletes: gated mrt zebra frr-sysvinit
185 Conflicts: bird
186
187
188 %description
189 FRRouting is a free software that manages TCP/IP based routing
190 protocol. It takes multi-server and multi-thread approach to resolve
191 the current complexity of the Internet.
192
193 FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP
194 NHRP, Babel, PBR and EIGRP.
195
196 FRRouting is a fork of Quagga.
197
198
199 %package contrib
200 Summary: contrib tools for frr
201 Group: System Environment/Daemons
202
203 %description contrib
204 Contributed/3rd party tools which may be of use with frr.
205
206
207 %package pythontools
208 Summary: python tools for frr
209 BuildRequires: python
210 Requires: python-ipaddr
211 Group: System Environment/Daemons
212
213 %description pythontools
214 Contributed python 2.7 tools which may be of use with frr.
215
216
217 %package devel
218 Summary: Header and object files for frr development
219 Group: System Environment/Daemons
220 Requires: %{name} = %{version}-%{release}
221
222 %description devel
223 The frr-devel package contains the header and object files neccessary for
224 developing OSPF-API and frr applications.
225
226
227 %prep
228 %setup -q -n frr-%{frrversion}
229
230
231 %build
232
233 # For standard gcc verbosity, uncomment these lines:
234 #CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
235 #CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
236
237 # For ultra gcc verbosity, uncomment these lines also:
238 #CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
239 #CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
240 #CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
241 #CFLAGS="${CFLAGS} -Wpacked -Wpadded"
242
243 %configure \
244 --sbindir=%{_sbindir} \
245 --sysconfdir=%{configdir} \
246 --localstatedir=%{rundir} \
247 --disable-static \
248 --disable-werror \
249 --enable-irdp \
250 %if %{with_multipath}
251 --enable-multipath=%{with_multipath} \
252 %endif
253 --enable-vtysh \
254 %if %{with_ospfclient}
255 --enable-ospfclient \
256 %else
257 --disable-ospfclient\
258 %endif
259 %if %{with_ospfapi}
260 --enable-ospfapi \
261 %else
262 --disable-ospfapi \
263 %endif
264 %if %{with_rtadv}
265 --enable-rtadv \
266 %else
267 --disable-rtadv \
268 %endif
269 %if %{with_ldpd}
270 --enable-ldpd \
271 %else
272 --disable-ldpd \
273 %endif
274 %if %{with_pimd}
275 --enable-pimd \
276 %else
277 --disable-pimd \
278 %endif
279 %if %{with_pbrd}
280 --enable-pbrd \
281 %else
282 --disable-pbrd \
283 %endif
284 %if %{with_nhrpd}
285 --enable-nhrpd \
286 %else
287 --disable-nhrpd \
288 %endif
289 %if %{with_eigrpd}
290 --enable-eigrpd \
291 %else
292 --disable-eigrpd \
293 %endif
294 %if %{with_babeld}
295 --enable-babeld \
296 %else
297 --disable-babeld \
298 %endif
299 %if %{with_pam}
300 --with-libpam \
301 %endif
302 %if 0%{?frr_user:1}
303 --enable-user=%{frr_user} \
304 --enable-group=%{frr_user} \
305 %endif
306 %if 0%{?vty_group:1}
307 --enable-vty-group=%{vty_group} \
308 %endif
309 %if %{with_fpm}
310 --enable-fpm \
311 %else
312 --disable-fpm \
313 %endif
314 %if %{with_watchfrr}
315 --enable-watchfrr \
316 %else
317 --disable-watchfrr \
318 %endif
319 %if %{with_bgp_vnc}
320 --enable-bgp-vnc \
321 %else
322 --disable-bgp-vnc \
323 %endif
324 --enable-isisd \
325 %if "%{initsystem}" == "systemd"
326 --enable-systemd \
327 %endif
328 %if %{with_rpki}
329 --enable-rpki
330 %else
331 --disable-rpki
332 %endif
333
334 make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" SPHINXBUILD=%{sphinx}
335
336 pushd doc
337 make SPHINXBUILD=%{sphinx} info
338 popd
339
340
341 %install
342 mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
343 %{buildroot}/var/log/frr %{buildroot}%{_infodir}
344 make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" SPHINXBUILD=%{sphinx} install
345
346 # Remove this file, as it is uninstalled and causes errors when building on RH9
347 rm -rf %{buildroot}/usr/share/info/dir
348
349 # Remove debian init script if it was installed
350 rm -f %{buildroot}%{_sbindir}/frr
351
352 # kill bogus libtool files
353 rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
354 rm -vf %{buildroot}%{_libdir}/*.la
355
356 # install /etc sources
357 %if "%{initsystem}" == "systemd"
358 mkdir -p %{buildroot}%{_unitdir}
359 install -m644 %{zeb_rh_src}/frr.service %{buildroot}%{_unitdir}/frr.service
360 install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr
361 %else
362 mkdir -p %{buildroot}%{_initddir}
363 install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr
364 ln -s %{_sbindir}/frr %{buildroot}%{_initddir}/frr
365 %endif
366
367 install %{zeb_rh_src}/daemons %{buildroot}%{_sysconfdir}/frr
368 install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
369 install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr
370 install -d -m750 %{buildroot}%{rundir}
371
372
373 %pre
374 # add vty_group
375 %if 0%{?vty_group:1}
376 if getent group %{vty_group} > /dev/null ; then : ; else \
377 /usr/sbin/groupadd -r -g %vty_gid %{vty_group} > /dev/null || : ; fi
378 %endif
379
380 # add frr user and group
381 %if 0%{?frr_user:1}
382 # Ensure that frr_gid gets correctly allocated
383 if getent group %{frr_user} >/dev/null; then : ; else \
384 /usr/sbin/groupadd -g %frr_gid %{frr_user} > /dev/null || : ; \
385 fi
386 if getent passwd %{frr_user} >/dev/null ; then : ; else \
387 /usr/sbin/useradd -u %frr_uid -g %frr_gid \
388 -M -r -s /sbin/nologin -c "FRRouting suite" \
389 -d %{rundir} %{frr_user} 2> /dev/null || : ; \
390 fi
391 %if 0%{?vty_group:1}
392 /usr/sbin/usermod -a -G %{vty_group} %{frr_user}
393 %endif
394 %endif
395
396
397 %post
398 # zebra_spec_add_service <service name> <port/proto> <comment>
399 # e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
400
401 zebra_spec_add_service ()
402 {
403 # Add port /etc/services entry if it isn't already there
404 if [ -f %{_sysconfdir}/services ] && \
405 ! %__sed -e 's/#.*$//' %{_sysconfdir}/services | %__grep -wq $1 ; then
406 echo "$1 $2 # $3" >> %{_sysconfdir}/services
407 fi
408 }
409
410 zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
411 zebra_spec_add_service zebra 2601/tcp "zebra vty"
412 zebra_spec_add_service ripd 2602/tcp "RIPd vty"
413 zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
414 zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
415 zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
416 zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
417 zebra_spec_add_service isisd 2608/tcp "ISISd vty"
418 %if %{with_ospfapi}
419 zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
420 %endif
421 %if %{with_babeld}
422 zebra_spec_add_service babeld 2609/tcp "BABELd vty"
423 %endif
424 %if %{with_nhrpd}
425 zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
426 %endif
427 %if %{with_pimd}
428 zebra_spec_add_service pimd 2611/tcp "PIMd vty"
429 %endif
430 %if %{with_pbrd}
431 zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
432 %endif
433 %if %{with_ldpd}
434 zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
435 %endif
436 %if %{with_eigrpd}
437 zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty"
438 %endif
439
440 %if "%{initsystem}" == "systemd"
441 for daemon in %all_daemons ; do
442 %systemd_post frr.service
443 done
444 %else
445 /sbin/chkconfig --add frr
446 %endif
447
448 # Fix bad path in previous config files
449 # Config files won't get replaced by default, so we do this ugly hack to fix it
450 %__sed -i 's|/etc/init.d/|%{_sbindir}/|g' %{configdir}/daemons 2> /dev/null || true
451
452 # With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if
453 # we install or upgrade to a frr built with systemd
454 %if "%{initsystem}" == "systemd"
455 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
456 %endif
457
458 /sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
459
460 # Create dummy files if they don't exist so basic functions can be used.
461 if [ ! -e %{configdir}/zebra.conf ]; then
462 echo "hostname `hostname`" > %{configdir}/zebra.conf
463 %if 0%{?frr_user:1}
464 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
465 %endif
466 chmod 640 %{configdir}/zebra.conf*
467 fi
468 for daemon in %{all_daemons} ; do
469 if [ x"${daemon}" != x"" ] ; then
470 if [ ! -e %{configdir}/${daemon}.conf ]; then
471 touch %{configdir}/${daemon}.conf
472 %if 0%{?frr_user:1}
473 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
474 %endif
475 fi
476 fi
477 done
478 %if 0%{?frr_user:1}
479 chown %{frr_user}:%{frr_user} %{configdir}/daemons
480 %endif
481
482 %if %{with_watchfrr}
483 # No config for watchfrr - this is part of /etc/sysconfig/frr
484 rm -f %{configdir}/watchfrr.*
485 %endif
486
487 if [ ! -e %{configdir}/vtysh.conf ]; then
488 touch %{configdir}/vtysh.conf
489 chmod 640 %{configdir}/vtysh.conf
490 %if 0%{?frr_user:1}
491 %if 0%{?vty_group:1}
492 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
493 %endif
494 %endif
495 fi
496
497
498 %postun
499 if [ "$1" -ge 1 ]; then
500 #
501 # Upgrade from older version
502 #
503 %if "%{initsystem}" == "systemd"
504 ##
505 ## Systemd Version
506 ##
507 %systemd_postun_with_restart frr.service
508 %else
509 ##
510 ## init.d Version
511 ##
512 service frr restart >/dev/null 2>&1
513 %endif
514 :
515 fi
516
517
518 %preun
519 %if "%{initsystem}" == "systemd"
520 ##
521 ## Systemd Version
522 ##
523 if [ $1 -eq 0 ] ; then
524 %systemd_preun frr.service
525 fi
526 %else
527 ##
528 ## init.d Version
529 ##
530 if [ $1 -eq 0 ] ; then
531 service frr stop >/dev/null 2>&1
532 /sbin/chkconfig --del frr
533 fi
534 %endif
535 /sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
536
537
538 %files
539 %doc */*.sample* AUTHORS COPYING
540 %doc doc/mpls
541 %doc ChangeLog NEWS README
542 %if 0%{?frr_user:1}
543 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
544 %dir %attr(750,%{frr_user},%{frr_user}) /var/log/frr
545 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
546 %else
547 %dir %attr(750,root,root) %{configdir}
548 %dir %attr(750,root,root) /var/log/frr
549 %dir %attr(750,root,root) %{rundir}
550 %endif
551 %if 0%{?vty_group:1}
552 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
553 %endif
554 %{_infodir}/frr.info.gz
555 %{_mandir}/man*/*
556 %{_sbindir}/zebra
557 %{_sbindir}/ospfd
558 %{_sbindir}/ripd
559 %{_sbindir}/bgpd
560 %exclude %{_sbindir}/ssd
561 %if %{with_watchfrr}
562 %{_sbindir}/watchfrr
563 %endif
564 %{_sbindir}/ripngd
565 %{_sbindir}/ospf6d
566 %if %{with_pimd}
567 %{_sbindir}/pimd
568 %endif
569 %if %{with_pbrd}
570 %{_sbindir}/pbrd
571 %endif
572 %{_sbindir}/isisd
573 %if %{with_ldpd}
574 %{_sbindir}/ldpd
575 %endif
576 %if %{with_eigrpd}
577 %{_sbindir}/eigrpd
578 %endif
579 %if %{with_nhrpd}
580 %{_sbindir}/nhrpd
581 %endif
582 %if %{with_babeld}
583 %{_sbindir}/babeld
584 %endif
585 %{_libdir}/lib*.so.0
586 %attr(755,root,root) %{_libdir}/lib*.so.0.*
587 %if %{with_fpm}
588 %attr(755,root,root) %{_libdir}/frr/modules/zebra_fpm.so
589 %endif
590 %if %{with_rpki}
591 %attr(755,root,root) %{_libdir}/frr/modules/bgpd_rpki.so
592 %endif
593 %attr(755,root,root) %{_libdir}/frr/modules/zebra_irdp.so
594 %{_bindir}/*
595 %config(noreplace) %{configdir}/[!v]*.conf*
596 %config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
597 %if "%{initsystem}" == "systemd"
598 %{_unitdir}/frr.service
599 %else
600 %{_initddir}/frr
601 %endif
602 %{_sbindir}/frr
603 %config(noreplace) %{_sysconfdir}/pam.d/frr
604 %config(noreplace) %{_sysconfdir}/logrotate.d/frr
605 %{_sbindir}/frr-reload
606
607
608 %files contrib
609 %doc tools
610
611
612 %files pythontools
613 %{_sbindir}/frr-reload.py
614 %{_sbindir}/frr-reload.pyc
615 %{_sbindir}/frr-reload.pyo
616
617
618 %files devel
619 %{_libdir}/lib*.so
620 %if %{with_ospfclient}
621 %{_sbindir}/ospfclient
622 %endif
623 %dir %attr(755,root,root) %{_includedir}/%{name}
624 %{_includedir}/%name/*.h
625 %dir %attr(755,root,root) %{_includedir}/%{name}/ospfd
626 %{_includedir}/%name/ospfd/*.h
627 %if %{with_ospfapi}
628 %dir %attr(755,root,root) %{_includedir}/%{name}/ospfapi
629 %{_includedir}/%name/ospfapi/*.h
630 %endif
631 %if %{with_eigrpd}
632 %dir %attr(755,root,root) %{_includedir}/%{name}/eigrpd
633 %{_includedir}/%name/eigrpd/*.h
634 %endif
635
636
637 %changelog
638 * Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org>
639 - Fixed RPKI RPM build
640
641 * Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
642 - Add option to build with RPKI (default: disabled)
643
644 * Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
645 - Adapt to new documentation structure based on Sphinx
646
647 * Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
648 - Fix script location for watchfrr restart functions in daemon config
649 - Fix postun script to restart frr during upgrade
650
651 * Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
652 - added NHRP and EIGRP daemon
653
654 * Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
655 - new subpackage frr-pythontools with python 2.7 restart script
656 - remove PIMd from CentOS/RedHat 6 RPM packages (won't work - too old)
657 - converted to single frr init script (not per daemon) based on debian init script
658 - created systemd service file for systemd based systems (which uses init script)
659 - Various other RPM package fixes for FRR 2.0
660
661 * Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
662 - Renamed to frr for FRRouting fork of Quagga
663
664 * Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
665 - remove with_ipv6 conditionals, always build v6
666 - Fix UTF-8 char in spec changelog
667 - remove quagga.pam.stack, long deprecated.
668
669 * Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
670 - Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
671 --enable-netlink
672 - Remove support for old fedora 4/5
673 - Fix for package nameing
674 - Fix Weekdays of previous changelogs (bogus dates)
675 - Add conditional logic to only build tex footnotes with supported texi2html
676 - Added pimd to files section and fix double listing of /var/lib*/quagga
677 - Numerous fixes to unify upstart/systemd startup into same spec file
678 - Only allow use of watchfrr for non-systemd systems. no need with systemd
679
680 * Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
681 - buildreq updates
682 - add a default define for with_pimd
683
684 * Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
685 - Steal some changes from Fedora spec file:
686 - Add with_rtadv variable
687 - Test for groups/users with getent before group/user adding
688 - Readline need not be an explicit prerequisite
689 - install-info delete should be postun, not preun
690
691 * Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
692 - on package upgrade, implement careful, phased restart logic
693 - use gcc -rdynamic flag when linking for better backtraces
694
695 * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
696 - daemonv6_list should contain only IPv6 daemons
697
698 * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
699 - watchfrr added
700 - on upgrade, all daemons should be condrestart'ed
701 - on removal, all daemons should be stopped
702
703 * Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
704 - Use makeinfo --html to generate quagga.html
705
706 * Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
707 - Fix with_ipv6 set to 0 build
708
709 * Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
710 - Update to 0.97.2
711
712 * Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
713 - Make directories be owned by the packages concerned
714 - Update logrotate scripts to use correct path to killall and use pid files
715
716 * Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
717 - Update to 0.97.0
718
719 * Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
720 - build snmp support by default
721 - build irdp support
722 - build with shared libs
723 - devel subpackage for archives and headers
724
725 * Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
726 - updated sysconfig files to specify local dir
727 - added ospf_dump.c crash quick fix patch
728 - added ospfd persistent interface configuration patch
729
730 * Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
731 - sync to CVS
732 - integrate RH sysconfig patch to specify daemon options (RH)
733 - default to have vty listen only to 127.1 (RH)
734 - add user with fixed UID/GID (RH)
735 - create user with shell /sbin/nologin rather than /bin/false (RH)
736 - stop daemons on uninstall (RH)
737 - delete info file on preun, not postun to avoid deletion on upgrade. (RH)
738 - isisd added
739 - cleanup tasks carried out for every daemon
740
741 * Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
742 - Fix -devel package to include all files
743 - Sync to 0.96.4
744
745 * Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
746 - Renamed to Quagga
747 - Sync to Quagga release 0.96
748
749 * Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
750 - zebra privileges support
751
752 * Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
753 - Fix mem leak in 'show thread cpu'
754 - Ralph Keller's OSPF-API
755 - Amir: Fix configure.ac for net-snmp
756
757 * Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
758 - ospfd IOS prefix to interface matching for 'network' statement
759 - temporary fix for PtP and IPv6
760 - sync to zebra.org CVS
761
762 * Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
763 - update to latest cvs
764 - Yon's "show thread cpu" patch - 17217
765 - walk up tree - 17218
766 - ospfd NSSA fixes - 16681
767 - ospfd nsm fixes - 16824
768 - ospfd OLSA fixes and new feature - 16823
769 - KAME and ifindex fixes - 16525
770 - spec file changes to allow redhat files to be in tree
771
772 * Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
773 - Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
774 - Fixed up some build requirements (patch)
775 - Added conditional build requirements for vtysh / snmp
776 - Added conditional to files for _bindir depending on vtysh
777
778 * Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
779 - update to latest CVS
780 - add Greg Troxel's md5 buffer copy/dup fix
781 - add RIPv1 fix
782 - add Frank's multicast flag fix
783
784 * Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
785 - update to latest CVS
786 - timestamped crypt_seqnum patch
787 - oi->on_write_q fix
788
789 * Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
790 - update to latest CVS
791 - add vtysh 'write-config (integrated|daemon)' patch
792 - always 'make rebuild' in vtysh/ to catch new commands
793
794 * Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
795 - update to 0.93b
796
797 * Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
798 - update to latest CVS
799 - add "/sbin/ip route flush proto zebra" to zebra RH init on startup
800
801 * Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
802 - update to current CVS
803 - add OSPF point to multipoint patch
804 - add OSPF bugfixes
805 - add BGP hash optimisation patch
806
807 * Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
808 - update to 0.93-pre1 / CVS
809 - add link state detection support
810 - add generic PtP and RFC3021 support
811 - various bug fixes
812
813 * Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
814 - Fix bug #51336
815
816 * Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
817 - Use generic initscript strings instead of initscript specific
818 ( "Starting foo: " -> "Starting $prog:" )
819
820 * Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
821 - Bump the release when rebuilding into the dist.
822
823 * Tue Feb 6 2001 Tim Powers <timp@redhat.com>
824 - built for Powertools
825
826 * Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
827 - Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
828 - Update to 0.91a
829 - Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
830 - Should be quite Red Hat'isque now.