From 7134904b1fe1475da5ca9667e47407e8e1ce35a9 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Wed, 27 Jun 2018 12:24:51 -0300 Subject: [PATCH] bfdd: wire to the build process Add BFD daemon to the build process and packaging instructions. Currently the bfdd daemon does nothing, this is just to document how the daemon insertion step occured. Signed-off-by: Rafael Zalamena --- Makefile.am | 1 + configure.ac | 27 +++++++++++++++++ debianpkg/backports/ubuntu12.04/debian/rules | 1 + debianpkg/backports/ubuntu14.04/debian/rules | 8 +++++ debianpkg/rules | 8 +++++ redhat/daemons | 3 ++ redhat/frr.init | 6 ++-- redhat/frr.logrotate | 7 +++++ redhat/frr.spec.in | 31 ++++++++++++++++---- tools/etc/frr/daemons | 1 + tools/etc/frr/daemons.conf | 1 + tools/frr | 2 +- 12 files changed, 87 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8c96f39f3..3e268f703 100644 --- a/Makefile.am +++ b/Makefile.am @@ -56,6 +56,7 @@ include sharpd/subdir.am include pimd/subdir.am include pbrd/subdir.am include staticd/subdir.am +include bfdd/subdir.am SUBDIRS = . @LIBRFP@ @RFPTEST@ \ @BGPD@ \ diff --git a/configure.ac b/configure.ac index f65b1640d..9e7ca2f7e 100755 --- a/configure.ac +++ b/configure.ac @@ -452,6 +452,8 @@ AC_ARG_ENABLE([numeric_version], AS_HELP_STRING([--enable-numeric-version], [Only numeric digits allowed in version (for Alpine)])) AC_ARG_ENABLE([gcov], AS_HELP_STRING([--enable-gcov], [Add code coverage information])) +AC_ARG_ENABLE(bfdd, + AS_HELP_STRING([--disable-bfdd], [do not build bfdd])) AS_IF([test "${enable_clippy_only}" != "yes"], [ AC_CHECK_HEADERS(json-c/json.h) @@ -1368,6 +1370,30 @@ AS_IF([test "${enable_ldpd}" != "no"], [ AC_DEFINE(HAVE_LDPD, 1, ldpd) ]) +if test "$enable_bfdd" = "no"; then + AC_DEFINE(HAVE_BFDD, 0, bfdd) + BFDD="" +else + AC_DEFINE(HAVE_BFDD, 1, bfdd) + BFDD="bfdd" + + case $host_os in + linux*) + AC_DEFINE(BFD_LINUX, 1, bfdd) + ;; + + *) + AC_DEFINE(BFD_BSD, 1, bfdd) + ;; + esac +fi + +AM_CONDITIONAL(BFDD, [test "x$BFDD" = "xbfdd"]) + +if test $ac_cv_lib_json_c_json_object_get = no -a "x$BFDD" = "xbfdd"; then + AC_MSG_ERROR(["you must use json-c library to use bfdd"]) +fi + NHRPD="" case "$host_os" in linux*) @@ -1880,6 +1906,7 @@ AC_SUBST(frr_statedir) AC_DEFINE_UNQUOTED(LDPD_SOCKET, "$frr_statedir/ldpd.sock",ldpd control socket) AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$frr_statedir/zserv.api",zebra api socket) +AC_DEFINE_UNQUOTED(BFDD_CONTROL_SOCKET, "$frr_statedir/bfdd.sock", bfdd control socket) AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$frr_statedir",daemon vty directory) dnl autoconf does this, but it does it too late... diff --git a/debianpkg/backports/ubuntu12.04/debian/rules b/debianpkg/backports/ubuntu12.04/debian/rules index 01ad81d37..3a6c80297 100755 --- a/debianpkg/backports/ubuntu12.04/debian/rules +++ b/debianpkg/backports/ubuntu12.04/debian/rules @@ -134,6 +134,7 @@ override_dh_auto_configure: --enable-poll=yes \ $(USE_CUMULUS) \ $(USE_PIM) \ + --disable-bfdd \ --enable-dependency-tracking \ $(USE_BGP_VNC) \ $(shell dpkg-buildflags --export=configure); \ diff --git a/debianpkg/backports/ubuntu14.04/debian/rules b/debianpkg/backports/ubuntu14.04/debian/rules index f7b942865..f7468d6f7 100755 --- a/debianpkg/backports/ubuntu14.04/debian/rules +++ b/debianpkg/backports/ubuntu14.04/debian/rules @@ -16,6 +16,7 @@ WANT_CUMULUS_MODE ?= 0 WANT_MULTIPATH ?= 1 WANT_SNMP ?= 0 WANT_RPKI ?= 0 +WANT_BFD ?= 1 # NOTES: # @@ -108,6 +109,12 @@ else USE_RPKI=--disable-rpki endif +ifeq ($(WANT_BFD), 1) + USE_BFD=--enable-bfdd +else + USE_BFD=--disable-bfdd +endif + ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) DEBIAN_JOBS := $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) endif @@ -159,6 +166,7 @@ override_dh_auto_configure: --enable-dependency-tracking \ $(USE_BGP_VNC) \ $(USE_RPKI) \ + $(USE_BFD) \ $(shell dpkg-buildflags --export=configure); \ fi diff --git a/debianpkg/rules b/debianpkg/rules index 9c84c0651..c1cb86549 100755 --- a/debianpkg/rules +++ b/debianpkg/rules @@ -16,6 +16,7 @@ WANT_CUMULUS_MODE ?= 0 WANT_MULTIPATH ?= 1 WANT_SNMP ?= 0 WANT_RPKI ?= 0 +WANT_BFD ?= 1 # NOTES: # @@ -108,6 +109,12 @@ else USE_RPKI=--disable-rpki endif +ifeq ($(WANT_BFD), 1) + USE_BFD=--enable-bfdd +else + USE_BFD=--disable-bfdd +endif + ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) DEBIAN_JOBS := $(subst parallel=,,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) endif @@ -160,6 +167,7 @@ override_dh_auto_configure: --enable-dependency-tracking \ $(USE_BGP_VNC) \ $(USE_RPKI) \ + $(USE_BFD) \ $(shell dpkg-buildflags --export=configure); \ fi diff --git a/redhat/daemons b/redhat/daemons index f9dbffea4..de708cf4f 100644 --- a/redhat/daemons +++ b/redhat/daemons @@ -52,6 +52,8 @@ babeld=no sharpd=no pbrd=no staticd=no +bfdd=no + # # Command line options for the daemons # @@ -70,6 +72,7 @@ babeld_options=("-A 127.0.0.1") sharpd_options=("-A 127.0.0.1") pbrd_options=("-A 127.0.0.1") staticd_options=("-A 127.0.0.1") +bfdd_options=("-A 127.0.0.1") # # If the vtysh_enable is yes, then the unified config is read diff --git a/redhat/frr.init b/redhat/frr.init index 740aa5b64..2e33aee17 100755 --- a/redhat/frr.init +++ b/redhat/frr.init @@ -7,7 +7,7 @@ # # chkconfig: 2345 15 85 # -# description: FRRouting (FRR) is a routing suite for IP routing protocols +# description: FRRouting (FRR) is a routing suite for IP routing protocols # like BGP, OSPF, RIP and others. This script contols the main # daemon "frr" as well as the individual protocol daemons. # @@ -20,7 +20,7 @@ # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop the FRR Routing daemons -# Description: FRRouting (FRR) is a routing suite for IP routing protocols +# Description: FRRouting (FRR) is a routing suite for IP routing protocols # like BGP, OSPF, RIP and others. This script contols the main # daemon "frr" as well as the individual protocol daemons. ### END INIT INFO @@ -33,7 +33,7 @@ V_PATH=/var/run/frr # Local Daemon selection may be done by using /etc/frr/daemons. # See /usr/share/doc/frr/README.Debian.gz for further information. # Keep zebra first and do not list watchfrr! -DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd pimd pbrd ldpd nhrpd eigrpd babeld staticd sharpd" +DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd pimd pbrd ldpd nhrpd eigrpd babeld staticd sharpd bfdd" MAX_INSTANCES=5 RELOAD_SCRIPT=/usr/lib/frr/frr-reload.py diff --git a/redhat/frr.logrotate b/redhat/frr.logrotate index 25a558778..654d355fd 100644 --- a/redhat/frr.logrotate +++ b/redhat/frr.logrotate @@ -86,3 +86,10 @@ endscript } +/var/log/frr/bfdd.log { + notifempty + missingok + postrotate + /bin/kill -USR1 `cat /var/run/frr/bfdd.pid 2> /dev/null` 2> /dev/null || true + endscript +} diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index f5b116978..25b48506a 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -11,6 +11,7 @@ #################### FRRouting (FRR) configure options ##################### # with-feature options %{!?with_babeld: %global with_babeld 1 } +%{!?with_bfdd: %global with_bfdd 1 } %{!?with_bgp_vnc: %global with_bgp_vnc 0 } %{!?with_cumulus: %global with_cumulus 0 } %{!?with_eigrpd: %global with_eigrpd 1 } @@ -85,7 +86,7 @@ %{!?frr_gid: %global frr_gid 92 } %{!?vty_gid: %global vty_gid 85 } -%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd +%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd %if %{with_ldpd} %define daemon_ldpd ldpd @@ -129,7 +130,13 @@ %define daemon_watchfrr "" %endif -%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} +%if %{with_bfdd} + %define daemon_bfdd bfdd +%else + %define daemon_bfdd "" +%endif + +%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} %{daemon_bfdd} #release sub-revision (the two digits after the CONFDATE) %{!?release_rev: %global release_rev 01 } @@ -193,7 +200,7 @@ protocol. It takes multi-server and multi-thread approach to resolve the current complexity of the Internet. FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP -NHRP, Babel, PBR and EIGRP. +NHRP, Babel, PBR, EIGRP and BFD. FRRouting is a fork of Quagga. @@ -331,9 +338,14 @@ developing OSPF-API and frr applications. --enable-systemd \ %endif %if %{with_rpki} - --enable-rpki + --enable-rpki \ +%else + --disable-rpki \ +%endif +%if %{with_bfdd} + --enable-bfdd %else - --disable-rpki + --disable-bfdd %endif make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" SPHINXBUILD=%{sphinx} @@ -444,6 +456,9 @@ zebra_spec_add_service isisd 2608/tcp "ISISd vty" %if %{with_eigrpd} zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty" %endif +%if %{with_bfdd} + zebra_spec_add_service bfdd 2617/tcp "BFDd vty" +%endif %if "%{initsystem}" == "systemd" for daemon in %all_daemons ; do @@ -591,6 +606,9 @@ fi %if %{with_babeld} %{_sbindir}/babeld %endif +%if %{with_bfdd} + %{_sbindir}/bfdd +%endif %{_libdir}/lib*.so.0 %{_libdir}/lib*.so.0.* %if %{with_fpm} @@ -644,6 +662,9 @@ fi %changelog +* Sun May 28 2018 Rafael Zalamena - %{version} +- Add BFDd support + * Sun May 20 2018 Martin Winter - Fixed RPKI RPM build diff --git a/tools/etc/frr/daemons b/tools/etc/frr/daemons index 9a96c0490..474b299d9 100644 --- a/tools/etc/frr/daemons +++ b/tools/etc/frr/daemons @@ -35,3 +35,4 @@ eigrpd=no babeld=no sharpd=no pbrd=no +bfdd=no diff --git a/tools/etc/frr/daemons.conf b/tools/etc/frr/daemons.conf index 04a857f47..640437f44 100644 --- a/tools/etc/frr/daemons.conf +++ b/tools/etc/frr/daemons.conf @@ -19,6 +19,7 @@ babeld_options=" --daemon -A 127.0.0.1" sharpd_options=" --daemon -A 127.0.0.1" pbrd_options=" --daemon -A 127.0.0.1" staticd_options=" --daemon -A 127.0.0.1" +bfdd_options=" --daemon -A 127.0.0.1" # The list of daemons to watch is automatically generated by the init script. watchfrr_enable=yes diff --git a/tools/frr b/tools/frr index 91c909144..0b170d33f 100755 --- a/tools/frr +++ b/tools/frr @@ -21,7 +21,7 @@ V_PATH=/var/run/frr # Local Daemon selection may be done by using /etc/frr/daemons. # See /usr/share/doc/frr/README.Debian.gz for further information. # Keep zebra first and do not list watchfrr! -DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld pimd ldpd nhrpd eigrpd sharpd pbrd staticd" +DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld pimd ldpd nhrpd eigrpd sharpd pbrd staticd bfdd" MAX_INSTANCES=5 RELOAD_SCRIPT=/usr/lib/frr/frr-reload.py -- 2.39.5