diff --git a/config/backup/includes/frr b/config/backup/includes/frr new file mode 100644 index 000000000..ca74d4891 --- /dev/null +++ b/config/backup/includes/frr @@ -0,0 +1 @@ +/etc/frr diff --git a/config/rootfiles/common/json-c b/config/rootfiles/common/json-c new file mode 100644 index 000000000..6be4bbe68 --- /dev/null +++ b/config/rootfiles/common/json-c @@ -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 index 000000000..8aafc7c6c --- /dev/null +++ b/config/rootfiles/packages/frr @@ -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 index 000000000..a14dc5981 --- /dev/null +++ b/lfs/frr @@ -0,0 +1,114 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2018 IPFire Team # +# # +# 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 . # +# # +############################################################################### + +############################################################################### +# 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 index 000000000..51a20ccbf --- /dev/null +++ b/lfs/json-c @@ -0,0 +1,80 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2018 IPFire Team # +# # +# 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 . # +# # +############################################################################### + +############################################################################### +# 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 c5cfab151..129bf6f7b 100755 --- 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 index 000000000..5fa4e9fa8 --- /dev/null +++ b/src/initscripts/packages/frr @@ -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 index 000000000..7e0222246 --- /dev/null +++ b/src/paks/frr/install.sh @@ -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 . # +# # +############################################################################ +# +. /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 index 000000000..49e3fdd7d --- /dev/null +++ b/src/paks/frr/uninstall.sh @@ -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 . # +# # +############################################################################ +# +. /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 index 000000000..89c40d0d7 --- /dev/null +++ b/src/paks/frr/update.sh @@ -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 . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +./uninstall.sh +./install.sh