From owner-svn-ports-all@freebsd.org Thu Jun 29 21:05:36 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 25E18DA5A05; Thu, 29 Jun 2017 21:05:36 +0000 (UTC) (envelope-from olivier@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CB86C73C65; Thu, 29 Jun 2017 21:05:35 +0000 (UTC) (envelope-from olivier@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v5TL5Zaw007936; Thu, 29 Jun 2017 21:05:35 GMT (envelope-from olivier@FreeBSD.org) Received: (from olivier@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v5TL5YWH007922; Thu, 29 Jun 2017 21:05:34 GMT (envelope-from olivier@FreeBSD.org) Message-Id: <201706292105.v5TL5YWH007922@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: olivier set sender to olivier@FreeBSD.org using -f From: Olivier Cochard Date: Thu, 29 Jun 2017 21:05:34 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r444689 - in head: . net net/frr net/frr/files X-SVN-Group: ports-head X-SVN-Commit-Author: olivier X-SVN-Commit-Paths: in head: . net net/frr net/frr/files X-SVN-Commit-Revision: 444689 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jun 2017 21:05:36 -0000 Author: olivier Date: Thu Jun 29 21:05:33 2017 New Revision: 444689 URL: https://svnweb.freebsd.org/changeset/ports/444689 Log: New port: net/frr FRRouting (FRR) is an IP routing protocol suite for Linux and Unix platforms which includes protocol daemons for BGP, IS-IS, OSPF and RIP. FRR has its roots in the Quagga project. WWW: https://frrouting.org/ Sponsored by: Orange Added: head/net/frr/ head/net/frr/Makefile (contents, props changed) head/net/frr/distinfo (contents, props changed) head/net/frr/files/ head/net/frr/files/frr.in (contents, props changed) head/net/frr/files/patch-Makefile.am (contents, props changed) head/net/frr/files/patch-vtysh_vtysh.c (contents, props changed) head/net/frr/files/watchfrr.in (contents, props changed) head/net/frr/pkg-descr (contents, props changed) head/net/frr/pkg-plist (contents, props changed) Modified: head/GIDs head/UIDs head/net/Makefile Modified: head/GIDs ============================================================================== --- head/GIDs Thu Jun 29 20:52:29 2017 (r444688) +++ head/GIDs Thu Jun 29 21:05:33 2017 (r444689) @@ -93,7 +93,7 @@ ipv6mon:*:148: avenger:*:149: cbsd:*:150: # free: 151 -# free: 152 +frrvty:*:152:frr rbldns:*:153: trircd:*:154: xorp:*:155: @@ -109,7 +109,7 @@ lightdm:*:164: uwsgi:*:165: yule:*:166: ceph:*:167: -# free: 168 +frr:*:168: acme:*:169: tile38:*:170: sfs:*:171: Modified: head/UIDs ============================================================================== --- head/UIDs Thu Jun 29 20:52:29 2017 (r444688) +++ head/UIDs Thu Jun 29 21:05:33 2017 (r444689) @@ -114,7 +114,7 @@ lightdm:*:164:164::0:0:Light Display Manager:/var/lib/ uwsgi:*:165:165::0:0:uwsgi Daemon:/nonexistent:/usr/sbin/nologin yule:*:166:166::0:0:Samhain Daemon:/nonexistent:/usr/sbin/nologin ceph:*:167:167::0:0:Ceph Daemons:/var/lib/ceph:/usr/sbin/nologin -# free: 168 +frr:*:168:168::0:0:FRRouting user:/var/empty:/usr/sbin/nologin acme:*:169:169::0:0:ACME protocol client:/var/db/acme:/bin/sh tile38:*:170:170::0:0:Tile38 User:/var/db/tile38:/usr/sbin/nologin sfs:*:171:171::0:0:Self-Certifying File System:/nonexistent:/usr/sbin/nologin Modified: head/net/Makefile ============================================================================== --- head/net/Makefile Thu Jun 29 20:52:29 2017 (r444688) +++ head/net/Makefile Thu Jun 29 21:05:33 2017 (r444689) @@ -151,6 +151,7 @@ SUBDIR += freerdp1 SUBDIR += freeswitch SUBDIR += freevrrpd + SUBDIR += frr SUBDIR += fspclient SUBDIR += fspd SUBDIR += fsplib Added: head/net/frr/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/Makefile Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,81 @@ +# $FreeBSD$ + +PORTNAME= frr +PORTVERSION= 2.0 +CATEGORIES= net ipv6 + +MAINTAINER= olivier@FreeBSD.org +COMMENT= IP routing protocol suite including BGP, IS-IS, OSPF and RIP + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= gawk:lang/gawk +LIB_DEPENDS= libjson-c.so:devel/json-c + +CONFLICTS= openbgpd-[0-9]* openospfd-[0-9]* zebra-0* quagga-re-[0-9]* quagga-[0-9]* + +USE_GITHUB= yes +GH_ACCOUNT= FRRouting +GH_PROJECT= frr +GH_TAGNAME= frr-2.0 + +GNU_CONFIGURE= yes +INSTALL_TARGET= install-strip +USES= autoreconf gmake pkgconfig libtool makeinfo readline +USE_LDCONFIG= yes + +INFO= frr + +OPTIONS_DEFINE= FPM LDPD PAM SHELLACCESS TCPSOCKETS VTYSH MULTIPATH TCMALLOC +OPTIONS_DEFAULT= VTYSH +OPTIONS_SUB= yes +# SNMP option build failed +# checksum.c:79:21: warning: implicit declaration of function 'typeof' is +# invalid in C99 [-Wimplicit-function-declaration] +# IRDP option needs something freebsd does not seem to have: +# configure: error: 'IRDP requires in_pktinfo at the moment!' + +FPM_DESC= Enable Forwarding Plane Manager support +LDPD_DESC= Build ldpd +MULTIPATH_DESC= Enable multipath function +PAM_DESC= Use libpam for PAM support in vtysh +SHELLACCESS_DESC= Allow users to access shell/telnet/ssh +SNMP_DESC= SNMP support +TCMALLOC_DESC= Use tcmalloc +TCPSOCKETS_DESC= Use TCP/IP sockets for protocol daemons +VTYSH_DESC= Build integrated vty shell + +USERS= frr +GROUPS= frr frrvty + +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +INSTALL_TARGET= install-strip + +# PIM compile but didn't work on FreeBSD +CONFIGURE_ARGS= --enable-user=frr \ + --enable-group=frr \ + --enable-vty-group=frrvty \ + --sysconfdir=${ETCDIR} \ + --localstatedir=/var/run/frr \ + --disable-pimd + +SHELLACCESS_CONFIGURE_ENABLE= shell-access +FPM_CONFIGURE_ENABLE= fpm +PAM_CONFIGURE_WITH= libpam +LDPD_CONFIGURE_ENABLE= ldpd +MULTIPATH_CONFIGURE_ON= --enable-multipath=64 +TCMALLOC_CONFIGURE_ENABLE= tcmalloc +TCMALLOC_LIB_DEPENDS= libtcmalloc.so:devel/google-perftools +SNMP_CONFIGURE_ENABLE= snmp +SNMP_LIB_DEPENDS= libnetsnmp.so:net-mgmt/net-snmp +TCPSOCKETS_CONFIGURE_ENABLE= tcp-zebra +VTYSH_CONFIGURE_ENABLE= vtysh + +USE_RC_SUBR= frr watchfrr + +post-install: + ${MKDIR} ${STAGEDIR}/var/run/frr + +.include Added: head/net/frr/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/distinfo Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,3 @@ +TIMESTAMP = 1497785263 +SHA256 (FRRouting-frr-2.0-frr-2.0_GH0.tar.gz) = 70259dc379678a7b0c32abd30173034f31876612451e2ffd7d09c52ab22ac05b +SIZE (FRRouting-frr-2.0-frr-2.0_GH0.tar.gz) = 3025536 Added: head/net/frr/files/frr.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/files/frr.in Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,154 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: frr +# REQUIRE: netif routing +# KEYWORD: nojail shutdown + +# Add the following line to /etc/rc.conf to enable frr: +# frr_enable="YES" +# +# You may also wish to use the following variables to fine-tune startup: +# frr_flags="" +# frr_daemons="zebra ripd ripngd ospfd ospf6d bgpd isisd" +# frr_vysh_boot="YES" +# Per daemon tuning may be done with daemon_name_flags +# zebra_flags="-P 0" +# bgpd_flags="-nrP 0" and so on +# If you want to give the routing deamons a chance to catchup before +# continueing, set frr_wait_for to a "default" or certain prefix. +# frr_wait_for="default" +# Set the time limit for the wait. +# frr_wait_seconds="90" +# +# If the frr daemons require additional shared libraries to start, +# use the following variable to run ldconfig(8) in advance: +# frr_extralibs_path="/usr/local/lib ..." +# +# This RC script was adapted from the net/quagga port + +. /etc/rc.subr + +name=frr +rcvar=$name_enable + +start_postcmd=start_postcmd +stop_postcmd="rm -f $pidfile" +configtest_cmd=check_config +extra_commands=configtest +command_args="-d" + +load_rc_config $name +: ${frr_enable:="NO"} +: ${frr_flags:=""} +: ${frr_daemons:="zebra ripd ripngd ospfd ospf6d bgpd isisd"} +: ${frr_vtysh_boot:="NO"} +: ${frr_wait_for:=""} +: ${frr_wait_seconds:="90"} + +check_config() +{ + echo "Checking $daemon.conf" + # pimd doesn't support -C + if [ "$daemon" == "pimd" ]; then + echo "Ignored" + else + $command $daemon_flags -C + result=$? + if [ "$result" -eq "0" ]; then + echo "OK" + else + echo "FAILED" + exit + fi + fi +} + +start_postcmd() +{ + local waited_for + waited_for=0 + # Wait only when last daemon has started. + if [ "${frr_daemons}" = "${frr_daemons% ${name}}" ]; then + return; + fi + if [ -n "${frr_wait_for}" ]; then + echo Waiting for ${frr_wait_for} route... + while [ ${waited_for} -lt ${frr_wait_seconds} ]; do + /sbin/route -n get ${frr_wait_for} >/dev/null 2>&1 && break; + waited_for=$((${waited_for}+1)) + sleep 1; + done + [ ${waited_for} -lt ${frr_wait_seconds} ] || echo Giving up... + fi +} + +do_cmd() +{ + local ret + ret=0 + for daemon in ${frr_daemons}; do + command=%%PREFIX%%/sbin/${daemon} + required_files=%%ETCDIR%%/${daemon}.conf + pidfile=/var/run/frr/${daemon}.pid + if [ ${frr_cmd} = "restart" -o ${frr_cmd} = "start" ]; then + check_config + fi + if [ ${frr_cmd} = "start" -a ! -f ${required_files} ]; then + continue + fi + if [ ${frr_cmd} = "stop" -a -z $(check_process ${command}) ]; then + continue + fi + eval flags=\$\{${daemon}_flags:-\"${frr_flags}\"\} + name=${daemon} + _rc_restart_done=false + run_rc_command "$1" || ret=1 + done + if checkyesno frr_vtysh_boot; then + echo "Booting for integrated-vtysh-config..." + %%PREFIX%%/bin/vtysh -b + fi + return ${ret} +} + +frr_cmd=$1 + +case "$1" in + force*) + frr_cmd=${frr_cmd#force} + ;; + fast*) + frr_cmd=${frr_cmd#fast} + ;; +esac +shift + +if [ $# -ge 1 ]; then + frr_daemons="$*" +fi + +case "${frr_cmd}" in + start) + if [ -n "${frr_extralibs_path}" ]; then + /sbin/ldconfig -m ${frr_extralibs_path} + fi + # Why should I need to add this check ? + checkyesno frr_enable && do_cmd "start" + ;; + stop) + frr_daemons=$(reverse_list ${frr_daemons}) + do_cmd "stop" + ;; + restart) + frr_daemons=$(reverse_list ${frr_daemons}) + do_cmd "stop" + frr_daemons=$(reverse_list ${frr_daemons}) + checkyesno frr_enable && do_cmd "start" + ;; + *) + do_cmd "${frr_cmd}" + ;; +esac Added: head/net/frr/files/patch-Makefile.am ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/files/patch-Makefile.am Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,11 @@ +--- Makefile.am.orig 2017-04-02 05:22:47 UTC ++++ Makefile.am +@@ -3,7 +3,7 @@ + SUBDIRS = lib qpb fpm @ZEBRA@ @LIBRFP@ @RFPTEST@ \ + @BGPD@ @RIPD@ @RIPNGD@ @OSPFD@ @OSPF6D@ @LDPD@ \ + @ISISD@ @PIMD@ @WATCHFRR@ @VTYSH@ @OSPFCLIENT@ @DOC@ m4 @pkgsrcdir@ \ +- redhat @SOLARIS@ tests tools cumulus snapcraft ++ redhat @SOLARIS@ tests cumulus snapcraft + + DIST_SUBDIRS = lib qpb fpm zebra bgpd ripd ripngd ospfd ospf6d ldpd \ + isisd watchfrr vtysh ospfclient doc m4 pkgsrc redhat tests \ Added: head/net/frr/files/patch-vtysh_vtysh.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/files/patch-vtysh_vtysh.c Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,11 @@ +--- vtysh/vtysh.c.orig 2017-06-27 14:48:26 UTC ++++ vtysh/vtysh.c +@@ -261,7 +261,7 @@ vtysh_pager_init (void) + if (pager_defined) + vtysh_pager_name = strdup (pager_defined); + else +- vtysh_pager_name = strdup ("more"); ++ vtysh_pager_name = strdup ("cat"); + } + + /* Command execution over the vty interface. */ Added: head/net/frr/files/watchfrr.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/files/watchfrr.in Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,30 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: watchfrr +# REQUIRE: NETWORKING frr +# KEYWORD: shutdown + +# Add the following line to /etc/rc.conf to enable watchfrr: +# watchfrr_enable="YES" +# +# You may also wish to use the following variables to fine-tune startup: +# watchquagga_flags + +. /etc/rc.subr + +name=watchfrr +rcvar=${name}_enable + +load_rc_config $name + +stop_postcmd="rm -f $pidfile" + +watchfrr_enable=${watchfrr_enable:-"NO"} + +command=%%PREFIX%%/sbin/watchfrr +pidfile=%%LOCALSTATE_DIR%%/watchfrr.pid + +run_rc_command "$1" Added: head/net/frr/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/pkg-descr Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,5 @@ +FRRouting (FRR) is an IP routing protocol suite for Linux and Unix platforms +which includes protocol daemons for BGP, IS-IS, OSPF and RIP. FRR has its roots +in the Quagga project. + +WWW: https://frrouting.org/ Added: head/net/frr/pkg-plist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/frr/pkg-plist Thu Jun 29 21:05:33 2017 (r444689) @@ -0,0 +1,120 @@ +bin/bgp_btoa +%%VTYSH%%bin/vtysh +include/frr/bfd.h +include/frr/bitfield.h +include/frr/buffer.h +include/frr/checksum.h +include/frr/command.h +include/frr/csv.h +include/frr/distribute.h +include/frr/event_counter.h +include/frr/fifo.h +include/frr/filter.h +include/frr/getopt.h +include/frr/hash.h +include/frr/if.h +include/frr/if_rmap.h +include/frr/imsg.h +include/frr/jhash.h +include/frr/json.h +include/frr/keychain.h +include/frr/libospf.h +include/frr/linklist.h +include/frr/log.h +include/frr/md5.h +include/frr/memory.h +include/frr/memory_vty.h +include/frr/mpls.h +include/frr/network.h +include/frr/nexthop.h +include/frr/ns.h +include/frr/openbsd-queue.h +include/frr/openbsd-tree.h +include/frr/ospfapi/ospf_apiclient.h +include/frr/ospfd/ospf_api.h +include/frr/ospfd/ospf_asbr.h +include/frr/ospfd/ospf_dump.h +include/frr/ospfd/ospf_dump_api.h +include/frr/ospfd/ospf_ism.h +include/frr/ospfd/ospf_lsa.h +include/frr/ospfd/ospf_lsdb.h +include/frr/ospfd/ospf_nsm.h +include/frr/ospfd/ospf_opaque.h +include/frr/ospfd/ospfd.h +include/frr/plist.h +include/frr/pqueue.h +include/frr/prefix.h +include/frr/privs.h +include/frr/ptm_lib.h +include/frr/qobj.h +include/frr/route_types.h +include/frr/routemap.h +include/frr/sigevent.h +include/frr/skiplist.h +include/frr/smux.h +include/frr/sockopt.h +include/frr/sockunion.h +include/frr/stream.h +include/frr/systemd.h +include/frr/table.h +include/frr/thread.h +include/frr/vector.h +include/frr/version.h +include/frr/vrf.h +include/frr/vty.h +include/frr/workqueue.h +include/frr/zassert.h +include/frr/zclient.h +include/frr/zebra.h +lib/libfrr.a +lib/libfrr.so +lib/libfrr.so.0 +lib/libfrr.so.0.0.0 +lib/libfrr_pb.a +lib/libfrr_pb.so +lib/libfrr_pb.so.0 +lib/libfrr_pb.so.0.0.0 +lib/libfrrfpm_pb.a +lib/libfrrfpm_pb.so +lib/libfrrfpm_pb.so.0 +lib/libfrrfpm_pb.so.0.0.0 +lib/libfrrospfapiclient.a +lib/libfrrospfapiclient.so +lib/libfrrospfapiclient.so.0 +lib/libfrrospfapiclient.so.0.0.0 +man/man1/frr.1.gz +man/man8/isisd.8.gz +man/man8/watchfrr.8.gz +%%VTYSH%%man/man1/vtysh.1.gz +man/man8/bgpd.8.gz +%%LDPD%%man/man8/ldpd.8.gz +man/man8/ospf6d.8.gz +man/man8/ospfclient.8.gz +man/man8/ospfd.8.gz +man/man8/ripd.8.gz +man/man8/ripngd.8.gz +man/man8/zebra.8.gz +sbin/bgpd +%%LDPD%%sbin/ldpd +sbin/ospf6d +sbin/ospfclient +sbin/ospfd +sbin/ripd +sbin/ripngd +sbin/zebra +sbin/isisd +sbin/rfptest +sbin/ssd +sbin/watchfrr +%%ETCDIR%%/bgpd.conf.sample +%%ETCDIR%%/bgpd.conf.sample2 +%%ETCDIR%%/bgpd.conf.vnc.sample +%%ETCDIR%%/isisd.conf.sample +%%LDPD%%%%ETCDIR%%/ldpd.conf.sample +%%ETCDIR%%/ospf6d.conf.sample +%%ETCDIR%%/ospfd.conf.sample +%%ETCDIR%%/ripd.conf.sample +%%ETCDIR%%/ripngd.conf.sample +%%VTYSH%%%%ETCDIR%%/vtysh.conf.sample +%%ETCDIR%%/zebra.conf.sample +@dir(frr,frr,750) /var/run/frr