Merge remote-tracking branch 'ms/frr' into next
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 31 Oct 2018 09:31:38 +0000 (09:31 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 31 Oct 2018 09:31:38 +0000 (09:31 +0000)
config/backup/includes/frr [new file with mode: 0644]
config/rootfiles/common/json-c [new file with mode: 0644]
config/rootfiles/packages/frr [new file with mode: 0644]
lfs/frr [new file with mode: 0644]
lfs/json-c [new file with mode: 0644]
make.sh
src/initscripts/packages/frr [new file with mode: 0755]
src/paks/frr/install.sh [new file with mode: 0644]
src/paks/frr/uninstall.sh [new file with mode: 0644]
src/paks/frr/update.sh [new file with mode: 0644]

diff --git a/config/backup/includes/frr b/config/backup/includes/frr
new file mode 100644 (file)
index 0000000..ca74d48
--- /dev/null
@@ -0,0 +1 @@
+/etc/frr
diff --git a/config/rootfiles/common/json-c b/config/rootfiles/common/json-c
new file mode 100644 (file)
index 0000000..6be4bbe
--- /dev/null
@@ -0,0 +1,21 @@
+#usr/include/json-c
+#usr/include/json-c/arraylist.h
+#usr/include/json-c/bits.h
+#usr/include/json-c/debug.h
+#usr/include/json-c/json.h
+#usr/include/json-c/json_c_version.h
+#usr/include/json-c/json_config.h
+#usr/include/json-c/json_inttypes.h
+#usr/include/json-c/json_object.h
+#usr/include/json-c/json_object_iterator.h
+#usr/include/json-c/json_pointer.h
+#usr/include/json-c/json_tokener.h
+#usr/include/json-c/json_util.h
+#usr/include/json-c/json_visit.h
+#usr/include/json-c/linkhash.h
+#usr/include/json-c/printbuf.h
+#usr/lib/libjson-c.la
+#usr/lib/libjson-c.so
+usr/lib/libjson-c.so.4
+usr/lib/libjson-c.so.4.0.0
+#usr/lib/pkgconfig/json-c.pc
diff --git a/config/rootfiles/packages/frr b/config/rootfiles/packages/frr
new file mode 100644 (file)
index 0000000..8aafc7c
--- /dev/null
@@ -0,0 +1,129 @@
+#etc/frr
+etc/frr/bgpd.conf.sample
+etc/frr/bgpd.conf.sample2
+etc/frr/bgpd.conf.vnc.sample
+etc/frr/ospfd.conf.sample
+etc/frr/ripngd.conf.sample
+etc/frr/staticd.conf.sample
+etc/frr/vtysh.conf.sample
+etc/frr/zebra.conf.sample
+etc/rc.d/init.d/frr
+usr/bin/bgp_btoa
+usr/bin/vtysh
+#usr/include/frr
+#usr/include/frr/bfd.h
+#usr/include/frr/bitfield.h
+#usr/include/frr/buffer.h
+#usr/include/frr/checksum.h
+#usr/include/frr/command.h
+#usr/include/frr/command_graph.h
+#usr/include/frr/command_match.h
+#usr/include/frr/compiler.h
+#usr/include/frr/csv.h
+#usr/include/frr/debug.h
+#usr/include/frr/distribute.h
+#usr/include/frr/eigrpd
+#usr/include/frr/eigrpd/eigrp_dump.h
+#usr/include/frr/eigrpd/eigrp_topology.h
+#usr/include/frr/eigrpd/eigrpd.h
+#usr/include/frr/event_counter.h
+#usr/include/frr/ferr.h
+#usr/include/frr/fifo.h
+#usr/include/frr/filter.h
+#usr/include/frr/freebsd-queue.h
+#usr/include/frr/frr_pthread.h
+#usr/include/frr/frratomic.h
+#usr/include/frr/frrstr.h
+#usr/include/frr/getopt.h
+#usr/include/frr/graph.h
+#usr/include/frr/hash.h
+#usr/include/frr/hook.h
+#usr/include/frr/if.h
+#usr/include/frr/if_rmap.h
+#usr/include/frr/imsg.h
+#usr/include/frr/ipaddr.h
+#usr/include/frr/jhash.h
+#usr/include/frr/json.h
+#usr/include/frr/keychain.h
+#usr/include/frr/lib_errors.h
+#usr/include/frr/libfrr.h
+#usr/include/frr/libospf.h
+#usr/include/frr/linklist.h
+#usr/include/frr/log.h
+#usr/include/frr/logicalrouter.h
+#usr/include/frr/md5.h
+#usr/include/frr/memory.h
+#usr/include/frr/memory_vty.h
+#usr/include/frr/module.h
+#usr/include/frr/monotime.h
+#usr/include/frr/mpls.h
+#usr/include/frr/network.h
+#usr/include/frr/nexthop.h
+#usr/include/frr/nexthop_group.h
+#usr/include/frr/ns.h
+#usr/include/frr/openbsd-queue.h
+#usr/include/frr/openbsd-tree.h
+#usr/include/frr/ospfd
+#usr/include/frr/ospfd/ospf_api.h
+#usr/include/frr/ospfd/ospf_asbr.h
+#usr/include/frr/ospfd/ospf_dump.h
+#usr/include/frr/ospfd/ospf_dump_api.h
+#usr/include/frr/ospfd/ospf_ism.h
+#usr/include/frr/ospfd/ospf_lsa.h
+#usr/include/frr/ospfd/ospf_lsdb.h
+#usr/include/frr/ospfd/ospf_nsm.h
+#usr/include/frr/ospfd/ospf_opaque.h
+#usr/include/frr/ospfd/ospfd.h
+#usr/include/frr/pbr.h
+#usr/include/frr/plist.h
+#usr/include/frr/pqueue.h
+#usr/include/frr/prefix.h
+#usr/include/frr/privs.h
+#usr/include/frr/ptm_lib.h
+#usr/include/frr/pw.h
+#usr/include/frr/qobj.h
+#usr/include/frr/queue.h
+#usr/include/frr/ringbuf.h
+#usr/include/frr/route_types.h
+#usr/include/frr/routemap.h
+#usr/include/frr/sbuf.h
+#usr/include/frr/sha256.h
+#usr/include/frr/sigevent.h
+#usr/include/frr/skiplist.h
+#usr/include/frr/sockopt.h
+#usr/include/frr/sockunion.h
+#usr/include/frr/spf_backoff.h
+#usr/include/frr/srcdest_table.h
+#usr/include/frr/stream.h
+#usr/include/frr/systemd.h
+#usr/include/frr/table.h
+#usr/include/frr/termtable.h
+#usr/include/frr/thread.h
+#usr/include/frr/vector.h
+#usr/include/frr/version.h
+#usr/include/frr/vlan.h
+#usr/include/frr/vrf.h
+#usr/include/frr/vrf_int.h
+#usr/include/frr/vty.h
+#usr/include/frr/vxlan.h
+#usr/include/frr/wheel.h
+#usr/include/frr/workqueue.h
+#usr/include/frr/zassert.h
+#usr/include/frr/zclient.h
+#usr/include/frr/zebra.h
+#usr/lib/libfrr.a
+#usr/lib/libfrr.la
+#usr/lib/libfrr.so
+usr/lib/libfrr.so.0
+usr/lib/libfrr.so.0.0.0
+usr/sbin/bgpd
+usr/sbin/frr
+usr/sbin/frr-reload
+usr/sbin/frr-reload.py
+usr/sbin/ospfd
+usr/sbin/rfptest
+usr/sbin/ssd
+usr/sbin/staticd
+usr/sbin/watchfrr
+usr/sbin/zebra
+var/ipfire/backup/addons/includes/frr
diff --git a/lfs/frr b/lfs/frr
new file mode 100644 (file)
index 0000000..a14dc59
--- /dev/null
+++ b/lfs/frr
@@ -0,0 +1,114 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 6.0
+
+THISAPP    = frr-$(VER)
+DL_FILE    = $(THISAPP).tar.xz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = frr
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = d725c08e0093f58e5fcac0969c781813
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc/frr \
+               --localstatedir=/var/run/frr \
+               --enable-user="frr" \
+               --enable-group="frr" \
+               --enable-vty-group="frrvty" \
+               --enable-multipath=64 \
+               --disable-doc \
+               --disable-babeld \
+               --disable-bfdd \
+               --disable-eigrpd \
+               --disable-irdp \
+               --disable-isisd \
+               --disable-ldpd \
+               --disable-nhrpd \
+               --disable-ospf6d \
+               --disable-ospfapi \
+               --disable-pbrd \
+               --disable-pimd \
+               --disable-ripd \
+               --disable-ripngd
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+
+       # Install backup include
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/frr \
+                /var/ipfire/backup/addons/includes/frr
+
+       # Install initscript
+       $(call INSTALL_INITSCRIPT,frr)
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
+
diff --git a/lfs/json-c b/lfs/json-c
new file mode 100644 (file)
index 0000000..51a20cc
--- /dev/null
@@ -0,0 +1,80 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.13.1
+
+THISAPP    = json-c-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 04969ad59cc37bddd83741a08b98f350
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index c5cfab1..129bf6f 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -1176,6 +1176,7 @@ buildipfire() {
   lfsmake2 libgcrypt
   lfsmake2 libassuan
   lfsmake2 nettle
+  lfsmake2 json-c
   lfsmake2 libevent
   lfsmake2 libevent2
   lfsmake2 expat
@@ -1556,6 +1557,7 @@ buildipfire() {
   lfsmake2 lua
   lfsmake2 dnsdist
   lfsmake2 bird
+  lfsmake2 frr
   lfsmake2 dmidecode
   lfsmake2 mcelog
   lfsmake2 rtpproxy
diff --git a/src/initscripts/packages/frr b/src/initscripts/packages/frr
new file mode 100755 (executable)
index 0000000..5fa4e9f
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/frr
+#
+# Description : FRRouting Suite
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+DAEMONS="zebra bgpd ospfd staticd"
+
+case "${1}" in
+       start)
+               # Fix permissions of configuration directory
+               if [ -d "/etc/frr" ]; then
+                       chown root.frr /etc/frr
+                       chmod 775 /etc/frr
+               fi
+
+               for daemon in ${DAEMONS}; do
+                       if [ -f "/etc/frr/${daemon}.conf" ]; then
+                               # Set permissions
+                               chown frr.frr "/etc/frr/${daemon}.conf"
+
+                               boot_mesg "Starting FRRouting ${daemon}..."
+                               loadproc "/usr/sbin/${daemon}" --daemon
+                       fi
+               done
+               ;;
+
+       stop)
+               for daemon in ${DAEMONS}; do
+                       boot_mesg "Stopping FRRouting ${daemon}..."
+                       killproc "/usr/sbin/${daemon}"
+               done
+               ;;
+
+       reload)
+               boot_mesg "Reloading FRRouting..."
+               reloadproc /usr/sbin/frr-reload
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               for daemon in ${DAEMONS}; do
+                       statusproc "/usr/sbin/${daemon}"
+               done
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|reload|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/frr
diff --git a/src/paks/frr/install.sh b/src/paks/frr/install.sh
new file mode 100644 (file)
index 0000000..7e02222
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+
+if ! getent group frr &>/dev/null; then
+       groupadd -r frr
+fi
+
+if ! getent group frrvty &>/dev/null; then
+       groupadd -r frrvty
+fi
+
+if ! getent passwd frr &>/dev/null; then
+       useradd -r frr -g frr -s /bin/false -b /var/empty -G frrvty
+fi
+
+# Extract files
+extract_files
+
+# Restore any backups
+restore_backup "${NAME}"
+
+# Start services
+start_service "${NAME}"
+
+# Enable autostart
+ln -svf ../init.d/frr /etc/rc.d/rc0.d/K40frr
+ln -svf ../init.d/frr /etc/rc.d/rc3.d/S50frr
+ln -svf ../init.d/frr /etc/rc.d/rc6.d/K40frr
+
+exit 0
diff --git a/src/paks/frr/uninstall.sh b/src/paks/frr/uninstall.sh
new file mode 100644 (file)
index 0000000..49e3fdd
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+
+# Stop services
+stop_service "${NAME}"
+
+# Create backup
+extract_backup_includes
+make_backup "${NAME}"
+
+# Remove all files
+rm -rfv /etc/rc.d/rc*.d/*frr
+remove_files
diff --git a/src/paks/frr/update.sh b/src/paks/frr/update.sh
new file mode 100644 (file)
index 0000000..89c40d0
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 2 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+./uninstall.sh
+./install.sh