Date: Mon, 3 Jun 2019 20:08:37 +0000 (UTC) From: Kurt Jaeger <pi@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r503421 - in head/net/openbgpd: . files Message-ID: <201906032008.x53K8bMb023528@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: pi Date: Mon Jun 3 20:08:36 2019 New Revision: 503421 URL: https://svnweb.freebsd.org/changeset/ports/503421 Log: net/openbgpd: revert upgrade from 6.5p0 to 5.2.20121209 - openbgpd version 6.5p0 was the "portable" version, which specifically does *not* support kernel routing updates. - Therefore this is only suitable for route servers/collectors, not for production use in routers. This significantly violates POLA :) PR: 213445 Submitted by: Oliver H <oliver@watershed.co.uk> Added: head/net/openbgpd/files/patch-Makefile - copied unchanged from r503177, head/net/openbgpd/files/patch-Makefile head/net/openbgpd/files/patch-Makefile.inc - copied unchanged from r503177, head/net/openbgpd/files/patch-Makefile.inc head/net/openbgpd/files/patch-bgpctl_Makefile - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_Makefile head/net/openbgpd/files/patch-bgpctl_bgpctl.8 - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.8 head/net/openbgpd/files/patch-bgpctl_bgpctl.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.c head/net/openbgpd/files/patch-bgpctl_irr_asset.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irr_asset.c head/net/openbgpd/files/patch-bgpctl_irr_output.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irr_output.c head/net/openbgpd/files/patch-bgpctl_irr_parser.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irr_parser.c head/net/openbgpd/files/patch-bgpctl_irr_prefix.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irr_prefix.c head/net/openbgpd/files/patch-bgpctl_irrfilter.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irrfilter.c head/net/openbgpd/files/patch-bgpctl_irrfilter.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_irrfilter.h head/net/openbgpd/files/patch-bgpctl_mrtparser.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_mrtparser.c head/net/openbgpd/files/patch-bgpctl_mrtparser.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_mrtparser.h head/net/openbgpd/files/patch-bgpctl_parser.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_parser.c head/net/openbgpd/files/patch-bgpctl_parser.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_parser.h head/net/openbgpd/files/patch-bgpctl_whois.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpctl_whois.c head/net/openbgpd/files/patch-bgpd_Makefile - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_Makefile head/net/openbgpd/files/patch-bgpd_bgpd.8 - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_bgpd.8 head/net/openbgpd/files/patch-bgpd_bgpd.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_bgpd.c head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_bgpd.conf.5 head/net/openbgpd/files/patch-bgpd_bgpd.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_bgpd.h head/net/openbgpd/files/patch-bgpd_buffer.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_buffer.c head/net/openbgpd/files/patch-bgpd_carp.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_carp.c head/net/openbgpd/files/patch-bgpd_config.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_config.c head/net/openbgpd/files/patch-bgpd_control.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_control.c head/net/openbgpd/files/patch-bgpd_imsg.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_imsg.c head/net/openbgpd/files/patch-bgpd_imsg.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_imsg.h head/net/openbgpd/files/patch-bgpd_kroute.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_kroute.c head/net/openbgpd/files/patch-bgpd_log.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_log.c head/net/openbgpd/files/patch-bgpd_log.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_log.h head/net/openbgpd/files/patch-bgpd_mrt.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_mrt.c head/net/openbgpd/files/patch-bgpd_mrt.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_mrt.h head/net/openbgpd/files/patch-bgpd_name2id.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_name2id.c head/net/openbgpd/files/patch-bgpd_parse.y - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_parse.y head/net/openbgpd/files/patch-bgpd_pfkey.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_pfkey.c head/net/openbgpd/files/patch-bgpd_pftable.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_pftable.c head/net/openbgpd/files/patch-bgpd_printconf.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_printconf.c head/net/openbgpd/files/patch-bgpd_rde.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde.c head/net/openbgpd/files/patch-bgpd_rde.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde.h head/net/openbgpd/files/patch-bgpd_rde_attr.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_attr.c head/net/openbgpd/files/patch-bgpd_rde_decide.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_decide.c head/net/openbgpd/files/patch-bgpd_rde_filter.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_filter.c head/net/openbgpd/files/patch-bgpd_rde_prefix.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_prefix.c head/net/openbgpd/files/patch-bgpd_rde_rib.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_rib.c head/net/openbgpd/files/patch-bgpd_rde_update.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_rde_update.c head/net/openbgpd/files/patch-bgpd_session.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_session.c head/net/openbgpd/files/patch-bgpd_session.h - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_session.h head/net/openbgpd/files/patch-bgpd_timer.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_timer.c head/net/openbgpd/files/patch-bgpd_util.c - copied unchanged from r503177, head/net/openbgpd/files/patch-bgpd_util.c head/net/openbgpd/files/patch-openbsd-compat_fmt_scaled.c - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_fmt_scaled.c head/net/openbgpd/files/patch-openbsd-compat_hash.h - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_hash.h head/net/openbgpd/files/patch-openbsd-compat_if_media.h - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_if_media.h head/net/openbgpd/files/patch-openbsd-compat_imsg-buffer.c - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_imsg-buffer.c head/net/openbgpd/files/patch-openbsd-compat_imsg.c - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_imsg.c head/net/openbgpd/files/patch-openbsd-compat_imsg.h - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_imsg.h head/net/openbgpd/files/patch-openbsd-compat_openbsd-compat.h - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_openbsd-compat.h head/net/openbgpd/files/patch-openbsd-compat_util.h - copied unchanged from r503177, head/net/openbgpd/files/patch-openbsd-compat_util.h Deleted: head/net/openbgpd/files/patch-Makefile.am head/net/openbgpd/pkg-plist Modified: head/net/openbgpd/Makefile head/net/openbgpd/distinfo Modified: head/net/openbgpd/Makefile ============================================================================== --- head/net/openbgpd/Makefile Mon Jun 3 20:03:12 2019 (r503420) +++ head/net/openbgpd/Makefile Mon Jun 3 20:08:36 2019 (r503421) @@ -1,9 +1,13 @@ # $FreeBSD$ PORTNAME= openbgpd -PORTVERSION= 6.5p0 +PORTVERSION= 5.2.20121209 +PORTREVISION= 3 +PORTEPOCH= 1 CATEGORIES= net MASTER_SITES= OPENBSD/OpenBGPD +DISTNAME= ${PORTNAME}-4.6 +DIST_SUBDIR= ${PORTNAME} MAINTAINER= hrs@FreeBSD.org COMMENT= Free implementation of the Border Gateway Protocol, Version 4 @@ -11,21 +15,27 @@ COMMENT= Free implementation of the Border Gateway Pro LICENSE= ISCL LICENSE_FILE= ${FILESDIR}/COPYING -USES= autoreconf libtool uidfix +CONFLICTS= zebra-[0-9]* quagga-[0-9]* + +USES= tar:tgz uidfix USE_RC_SUBR= ${PORTNAME} -GNU_CONFIGURE= yes - +NO_WRKSUBDIR= yes +PLIST_FILES= sbin/bgpctl sbin/bgpd man/man5/bgpd.conf.5.gz \ + man/man8/bgpctl.8.gz man/man8/bgpd.8.gz SUB_FILES= pkg-message - USERS= _bgpd GROUPS= _bgpd -CONFLICTS= zebra-[0-9]* quagga-[0-9]* - -OPTIONS_DEFINE= IPV6LLPEER -OPTIONS_DEFAULT= IPV6LLPEER -IPV6LLPEER_DESC= Support nexthop using IPv6 link-local address +OPTIONS_DEFINE= IPV6LLPEER +OPTIONS_DEFAULT=IPV6LLPEER +IPV6LLPEER_DESC=Support nexthop using IPv6 link-local address IPV6LLPEER_MAKE_ARGS= -DIPV6_LINKLOCAL_PEER + +post-patch: + @${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" \ + ${WRKSRC}/bgpd/bgpd.8 \ + ${WRKSRC}/bgpd/bgpd.conf.5 \ + ${WRKSRC}/bgpctl/bgpctl.8 .include <bsd.port.mk> Modified: head/net/openbgpd/distinfo ============================================================================== --- head/net/openbgpd/distinfo Mon Jun 3 20:03:12 2019 (r503420) +++ head/net/openbgpd/distinfo Mon Jun 3 20:08:36 2019 (r503421) @@ -1,3 +1,3 @@ TIMESTAMP = 1556692508 -SHA256 (openbgpd-6.5p0.tar.gz) = 20c1a40bafcbbea60c4ecc6dd2e87fcba6847bfad62739b705a3806b6b442a56 -SIZE (openbgpd-6.5p0.tar.gz) = 677691 +SHA256 (openbgpd/openbgpd-4.6.tgz) = d9a0a3542e5ec744889ca12871f01aa1d86f12844e093010f37d0601796e15cf +SIZE (openbgpd/openbgpd-4.6.tgz) = 168197 Copied: head/net/openbgpd/files/patch-Makefile (from r503177, head/net/openbgpd/files/patch-Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/openbgpd/files/patch-Makefile Mon Jun 3 20:08:36 2019 (r503421, copy of r503177, head/net/openbgpd/files/patch-Makefile) @@ -0,0 +1,12 @@ +Index: Makefile +=================================================================== +RCS file: Makefile +diff -N Makefile +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ Makefile 30 Jun 2009 07:07:55 -0000 1.2 +@@ -0,0 +1,5 @@ ++# $hrs: openbgpd/Makefile,v 1.2 2009/06/30 07:07:55 hrs Exp $ ++ ++SUBDIR= bgpd bgpctl ++ ++.include <bsd.subdir.mk> Copied: head/net/openbgpd/files/patch-Makefile.inc (from r503177, head/net/openbgpd/files/patch-Makefile.inc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/openbgpd/files/patch-Makefile.inc Mon Jun 3 20:08:36 2019 (r503421, copy of r503177, head/net/openbgpd/files/patch-Makefile.inc) @@ -0,0 +1,12 @@ +Index: Makefile.inc +=================================================================== +RCS file: Makefile.inc +diff -N Makefile.inc +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ Makefile.inc 16 May 2014 01:06:14 -0000 1.5 +@@ -0,0 +1,5 @@ ++# $hrs: openbgpd/Makefile.inc,v 1.5 2014/05/16 01:06:14 hrs Exp $ ++ ++PREFIX?= /usr/local ++BINDIR?= ${PREFIX}/sbin ++MANDIR?= ${PREFIX}/man/man Copied: head/net/openbgpd/files/patch-bgpctl_Makefile (from r503177, head/net/openbgpd/files/patch-bgpctl_Makefile) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/openbgpd/files/patch-bgpctl_Makefile Mon Jun 3 20:08:36 2019 (r503421, copy of r503177, head/net/openbgpd/files/patch-bgpctl_Makefile) @@ -0,0 +1,31 @@ +Index: bgpctl/Makefile +=================================================================== +RCS file: /home/cvs/private/hrs/openbgpd/bgpctl/Makefile,v +retrieving revision 1.1.1.1 +retrieving revision 1.4 +diff -u -p -r1.1.1.1 -r1.4 +--- bgpctl/Makefile 30 Jun 2009 05:46:15 -0000 1.1.1.1 ++++ bgpctl/Makefile 13 Oct 2012 18:35:56 -0000 1.4 +@@ -1,17 +1,18 @@ + # $OpenBSD: Makefile,v 1.10 2007/12/20 17:08:48 henning Exp $ + +-.PATH: ${.CURDIR}/../bgpd ++.PATH: ${.CURDIR}/../bgpd ${.CURDIR}/../openbsd-compat + + PROG= bgpctl +-SRCS= bgpctl.c parser.c buffer.c imsg.c util.c timer.c ++SRCS= bgpctl.c parser.c util.c timer.c + SRCS+= irrfilter.c whois.c irr_asset.c irr_prefix.c irr_output.c +-SRCS+= irr_parser.c ++SRCS+= irr_parser.c mrtparser.c ++SRCS+= fmt_scaled.c imsg.c imsg-buffer.c + CFLAGS+= -Wall + CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes + CFLAGS+= -Wmissing-declarations + CFLAGS+= -Wshadow -Wpointer-arith -Wcast-qual + CFLAGS+= -Wsign-compare +-CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../bgpd ++CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../bgpd -I${.CURDIR}/../openbsd-compat + MAN= bgpctl.8 + LDADD= -lutil + DPADD+= ${LIBUTIL} Copied: head/net/openbgpd/files/patch-bgpctl_bgpctl.8 (from r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.8) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/openbgpd/files/patch-bgpctl_bgpctl.8 Mon Jun 3 20:08:36 2019 (r503421, copy of r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.8) @@ -0,0 +1,287 @@ +Index: bgpctl/bgpctl.8 +=================================================================== +RCS file: /home/cvs/private/hrs/openbgpd/bgpctl/bgpctl.8,v +retrieving revision 1.1.1.6 +retrieving revision 1.6 +diff -u -p -r1.1.1.6 -r1.6 +--- bgpctl/bgpctl.8 14 Feb 2010 20:20:13 -0000 1.1.1.6 ++++ bgpctl/bgpctl.8 13 Oct 2012 18:35:56 -0000 1.6 +@@ -1,4 +1,4 @@ +-.\" $OpenBSD: bgpctl.8,v 1.49 2009/06/06 06:11:17 claudio Exp $ ++.\" $OpenBSD: bgpctl.8,v 1.59 2012/05/27 20:49:42 jmc Exp $ + .\" + .\" Copyright (c) 2003 Henning Brauer <henning@openbsd.org> + .\" +@@ -14,7 +14,7 @@ + .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.Dd $Mdocdate: June 6 2009 $ ++.Dd $Mdocdate: May 27 2012 $ + .Dt BGPCTL 8 + .Os + .Sh NAME +@@ -32,8 +32,7 @@ The + program controls the + .Xr bgpd 8 + daemon. +-Commands to switch between displays may be abbreviated to the +-minimum unambiguous prefix; for example, ++Commands may be abbreviated to the minimum unambiguous prefix; for example, + .Cm s s + for + .Cm show summary . +@@ -53,11 +52,19 @@ to communicate with + .Pp + The commands are as follows: + .Bl -tag -width xxxxxx +-.It Cm fib couple +-Insert the learned routes into the Forwarding Information Base ++.It Xo ++.Cm fib ++.Op Cm table Ar number ++.Cm couple ++.Xc ++Insert the learned routes into the specified Forwarding Information Base + a.k.a. the kernel routing table. +-.It Cm fib decouple +-Remove the learned routes from the Forwarding Information Base ++.It Xo ++.Cm fib ++.Op Cm table Ar number ++.Cm decouple ++.Xc ++Remove the learned routes from the specified Forwarding Information Base + a.k.a. the kernel routing table. + .It Xo + .Cm irrfilter +@@ -79,7 +86,15 @@ The options are as follows: + Use + .Ar directory + to write the filter files to. ++.It Fl 4 ++Fetch only IPv4 prefixes from the registry. ++.It Fl 6 ++Fetch only IPv6 prefixes from the registry. + .El ++.It Cm log brief ++Disable verbose debug logging. ++.It Cm log verbose ++Enable verbose debug logging. + .It Cm neighbor Ar peer Cm up + Take the BGP session to the specified neighbor up. + .Ar peer +@@ -98,12 +113,21 @@ Note that the neighbor is not obliged to + all, even if it announced the route refresh capability. + .Ar peer + may be the neighbor's address or description. +-.It Cm network add Ar prefix ++.It Cm network add Ar prefix Op Ar arguments + Add the specified prefix to the list of announced networks. ++It is possible to set various path attributes with additional ++.Ar arguments . + .It Cm network delete Ar prefix + Remove the specified prefix from the list of announced networks. + .It Cm network flush + Remove all dynamically added prefixes from the list of announced networks. ++.It Cm network mrt file Ar file filter ++Import networks from an MRT table dump for debugging purposes. ++.Ar filter ++can be specified similarly to the ++.Ar show mrt ++command. ++Only networks matching the filter will be imported. + .It Cm network show Ar family + Show all announced networks. + .Ar family , +@@ -122,7 +146,7 @@ view of the Forwarding Information Base. + can be an IP address, in which case the route to this address is shown, + or a flag: + .Pp +-.Bl -tag -width connected -compact ++.Bl -tag -width tableXnumber -compact + .It Cm connected + Show only connected routes. + .It Cm static +@@ -133,9 +157,81 @@ Show only routes originating from + itself. + .It Cm nexthop + Show only routes required to reach a BGP nexthop. ++.It Cm inet ++Show only IPv4 routes. ++.It Cm inet6 ++Show only IPv6 routes. ++.It Cm table Ar number ++Show the routing table with ID ++.Ar number ++instead of the default routing table with ID 0. + .El + .It Cm show interfaces + Show the interface states. ++.It Xo ++.Cm show mrt ++.Op Ar options ++.Ar filter ++.Xc ++Show routes from an MRT table dump file. ++.Ar filter ++can be an IP address, a CIDR prefix, an AS filter, a combination or nothing: ++.Pp ++.Bl -tag -width "address/len all" -compact ++.It Ar address ++Show best matching route for address. ++.It Ar address Ns Li / Ns Ar len ++Show RIB entry for this CIDR prefix. ++.It Xo ++.Ar address Ns Li / Ns Ar len ++.Cm all ++.Xc ++Show all entries in the specified range. ++.\".It Ar address/len Cm longer-prefixes ++.It Cm as Ar as ++Show all entries with ++.Ar as ++anywhere in the AS path. ++.It Cm empty-as ++Show all entries that are internal routes with no AS's in the AS path. ++.It Cm neighbor Ar ip ++Show only entries from the specified peer. ++.It Cm peer-as Ar as ++Show all entries with ++.Ar as ++as leftmost AS. ++.It Cm source-as Ar as ++Show all entries with ++.Ar as ++as rightmost AS. ++.It Cm transit-as Ar as ++Show all entries with ++.Ar as ++anywhere but rightmost. ++.El ++.Pp ++Additionally, the following ++.Ar options ++are defined: ++.Pp ++.Bl -tag -width "file name" -compact ++.It Cm detail ++Show more detailed output for matching routes. ++.It Ar family ++Limit the output to the given address family. ++.It Cm file Ar name ++Read the MRT dump from file ++.Ar name ++instead of using stdin. ++.El ++.Pp ++Multiple options and filters can be used at the same time. ++.It Cm show summary ++Show a list of all neighbors, including information about the session state ++and message counters. ++.It Cm show summary terse ++Show a list of all neighbors, including information about the session state, ++in a terse format. + .It Cm show neighbor Ar peer modifier + Show detailed information about the neighbor identified by + .Ar peer , +@@ -183,33 +279,33 @@ Show all entries in the specified range. + Show all entries with + .Ar as + anywhere in the AS path. +-.It Cm source-as Ar as +-Show all entries with +-.Ar as +-as rightmost AS. +-.It Cm transit-as Ar as +-Show all entries with +-.Ar as +-anywhere but rightmost. +-.It Cm peer-as Ar as +-Show all entries with +-.Ar as +-as leftmost AS. +-.It Cm empty-as +-Show all entries that are internal routes with no AS's in the AS path. + .It Cm community Ar community + Show all entries with community + .Ar community . ++.It Cm empty-as ++Show all entries that are internal routes with no AS's in the AS path. ++.It Cm memory ++Show RIB memory statistics. + .It Cm neighbor Ar peer + Show only entries from the specified peer. +-.It Cm table Ar rib +-Show only entries from the specified RIB table. ++.It Cm peer-as Ar as ++Show all entries with ++.Ar as ++as leftmost AS. ++.It Cm source-as Ar as ++Show all entries with ++.Ar as ++as rightmost AS. + .It Cm summary + This is the same as the + .Ic show summary + command. +-.It Cm memory +-Show RIB memory statistics. ++.It Cm table Ar rib ++Show only entries from the specified RIB table. ++.It Cm transit-as Ar as ++Show all entries with ++.Ar as ++anywhere but rightmost. + .El + .Pp + Additionally, the following +@@ -217,8 +313,10 @@ Additionally, the following + are defined: + .Pp + .Bl -tag -width "detail" -compact ++.It Cm selected ++Show only selected routes. + .It Cm detail +-Show more detailed output for matched routes. ++Show more detailed output for matching routes. + .It Ar family + Limit the output to the given address family. + .It Cm in +@@ -243,10 +341,12 @@ and message counters. + .It Cm show summary terse + Show a list of all neighbors, including information about the session state, + in a terse format. ++.It Cm show tables ++Show a list of all currently loaded fib routing tables. + .El + .Sh FILES + .Bl -tag -width "/var/run/bgpd.sockXXX" -compact +-.It Pa /etc/bgpd.conf ++.It Pa %%PREFIX%%/etc/bgpd.conf + default + .Xr bgpd 8 + configuration file +@@ -260,10 +360,19 @@ control socket + .Xr bgpd 8 , + .Xr bgplg 8 , + .Xr bgplgsh 8 ++.Sh STANDARDS + .Rs +-.%R RFC 2622 +-.%T "Routing Policy Specification Language (RPSL)" ++.%A C. Alaettinoglu ++.%A C. Villamizar ++.%A E. Gerich ++.%A D. Kessens ++.%A D. Meyer ++.%A T. Bates ++.%A D. Karrenberg ++.%A M. Terpstra + .%D June 1999 ++.%R RFC 2622 ++.%T Routing Policy Specification Language (RPSL) + .Re + .Sh HISTORY + The Copied: head/net/openbgpd/files/patch-bgpctl_bgpctl.c (from r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/openbgpd/files/patch-bgpctl_bgpctl.c Mon Jun 3 20:08:36 2019 (r503421, copy of r503177, head/net/openbgpd/files/patch-bgpctl_bgpctl.c) @@ -0,0 +1,1529 @@ +Index: bgpctl/bgpctl.c +=================================================================== +RCS file: /home/cvs/private/hrs/openbgpd/bgpctl/bgpctl.c,v +retrieving revision 1.1.1.7 +retrieving revision 1.10 +diff -u -p -r1.1.1.7 -r1.10 +--- bgpctl/bgpctl.c 14 Feb 2010 20:20:14 -0000 1.1.1.7 ++++ bgpctl/bgpctl.c 8 Dec 2012 20:17:55 -0000 1.10 +@@ -1,4 +1,4 @@ +-/* $OpenBSD: bgpctl.c,v 1.142 2009/06/06 06:33:15 eric Exp $ */ ++/* $OpenBSD: bgpctl.c,v 1.167 2012/11/15 19:55:08 sthen Exp $ */ + + /* + * Copyright (c) 2003 Henning Brauer <henning@openbsd.org> +@@ -16,11 +16,19 @@ + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + ++#if defined(__FreeBSD__) /* compat */ ++#include "openbsd-compat.h" ++#endif /* defined(__FreeBSD__) */ ++ + #include <sys/types.h> + #include <sys/socket.h> + #include <sys/un.h> + #include <net/if.h> ++#if defined(__FreeBSD__) /* net/if_media.h */ ++#include "if_media.h" ++#else + #include <net/if_media.h> ++#endif /* defined(__FreeBSD__) */ + #include <net/if_types.h> + + #include <err.h> +@@ -29,7 +37,11 @@ + #include <stdlib.h> + #include <string.h> + #include <unistd.h> ++#if defined(__FreeBSD__) /* util.h */ ++#include "util.h" ++#else + #include <util.h> ++#endif /* defined(__FreeBSD__) */ + + #include "bgpd.h" + #include "session.h" +@@ -37,6 +49,11 @@ + #include "log.h" + #include "parser.h" + #include "irrfilter.h" ++#include "mrtparser.h" ++ ++#if defined(__FreeBSD__) /* FreeBSD has no LINK_STATE_IS_UP macro. */ ++#define LINK_STATE_IS_UP(_s) ((_s) >= LINK_STATE_UP) ++#endif /* defined(__FreeBSD__) */ + + enum neighbor_views { + NV_DEFAULT, +@@ -50,12 +67,14 @@ int show_summary_msg(struct imsg *, in + int show_summary_terse_msg(struct imsg *, int); + int show_neighbor_terse(struct imsg *); + int show_neighbor_msg(struct imsg *, enum neighbor_views); +-void print_neighbor_capa_mp_safi(u_int8_t); ++void print_neighbor_capa_mp(struct peer *); ++void print_neighbor_capa_restart(struct peer *); + void print_neighbor_msgstats(struct peer *); + void print_timer(const char *, time_t); + static char *fmt_timeframe(time_t t); + static char *fmt_timeframe_core(time_t t); + void show_fib_head(void); ++void show_fib_tables_head(void); + void show_network_head(void); + void show_fib_flags(u_int16_t); + int show_fib_msg(struct imsg *); +@@ -65,7 +84,7 @@ void show_interface_head(void); + int ift2ifm(int); + const char * get_media_descr(int); + const char * get_linkstate(int, int); +-void print_baudrate(u_int64_t); ++const char * get_baudrate(u_int64_t, char *); + int show_interface_msg(struct imsg *); + void show_rib_summary_head(void); + void print_prefix(struct bgpd_addr *, u_int8_t, u_int8_t); +@@ -73,16 +92,25 @@ const char * print_origin(u_int8_t, int + void print_flags(u_int8_t, int); + int show_rib_summary_msg(struct imsg *); + int show_rib_detail_msg(struct imsg *, int); ++void show_rib_brief(struct ctl_show_rib *, u_char *); ++void show_rib_detail(struct ctl_show_rib *, u_char *, int); ++void show_attr(void *, u_int16_t); + void show_community(u_char *, u_int16_t); +-const char *get_ext_subtype(u_int8_t); + void show_ext_community(u_char *, u_int16_t); + char *fmt_mem(int64_t); + int show_rib_memory_msg(struct imsg *); + void send_filterset(struct imsgbuf *, struct filter_set_head *); + static const char *get_errstr(u_int8_t, u_int8_t); + int show_result(struct imsg *); ++void show_mrt_dump(struct mrt_rib *, struct mrt_peer *, void *); ++void network_mrt_dump(struct mrt_rib *, struct mrt_peer *, void *); ++void show_mrt_state(struct mrt_bgp_state *, void *); ++void show_mrt_msg(struct mrt_bgp_msg *, void *); ++void mrt_to_bgpd_addr(union mrt_addr *, struct bgpd_addr *); + + struct imsgbuf *ibuf; ++struct mrt_parser show_mrt = { show_mrt_dump, show_mrt_state, show_mrt_msg }; ++struct mrt_parser net_mrt = { network_mrt_dump, NULL, NULL }; + + __dead void + usage(void) +@@ -98,7 +126,7 @@ int + main(int argc, char *argv[]) + { + struct sockaddr_un sun; +- int fd, n, done, ch, nodescr = 0; ++ int fd, n, done, ch, nodescr = 0, verbose = 0; + struct imsg imsg; + struct network_config net; + struct parse_result *res; +@@ -128,8 +156,11 @@ main(int argc, char *argv[]) + if ((res = parse(argc, argv)) == NULL) + exit(1); + +- if (res->action == IRRFILTER) ++ if (res->action == IRRFILTER) { ++ if (!(res->flags & (F_IPV4|F_IPV6))) ++ res->flags |= (F_IPV4|F_IPV6); + irr_main(res->as.as, res->flags, res->irr_outdir); ++ } + + memcpy(&neighbor.addr, &res->peeraddr, sizeof(neighbor.addr)); + strlcpy(neighbor.descr, res->peerdesc, sizeof(neighbor.descr)); +@@ -154,7 +185,7 @@ main(int argc, char *argv[]) + case NONE: + case IRRFILTER: + usage(); +- /* not reached */ ++ /* NOTREACHED */ + case SHOW: + case SHOW_SUMMARY: + imsg_compose(ibuf, IMSG_CTL_SHOW_NEIGHBOR, 0, 0, -1, NULL, 0); +@@ -164,24 +195,32 @@ main(int argc, char *argv[]) + imsg_compose(ibuf, IMSG_CTL_SHOW_TERSE, 0, 0, -1, NULL, 0); + break; + case SHOW_FIB: +- if (!res->addr.af) { +- struct buf *msg; +- +- if ((msg = imsg_create(ibuf, IMSG_CTL_KROUTE, 0, 0, +- sizeof(res->flags) + sizeof(res->af))) == NULL) ++ if (!res->addr.aid) { ++ struct ibuf *msg; ++ sa_family_t af; ++ ++ af = aid2af(res->aid); ++ if ((msg = imsg_create(ibuf, IMSG_CTL_KROUTE, ++ res->rtableid, 0, sizeof(res->flags) + ++ sizeof(af))) == NULL) + errx(1, "imsg_create failure"); + if (imsg_add(msg, &res->flags, sizeof(res->flags)) == + -1 || +- imsg_add(msg, &res->af, sizeof(res->af)) == -1) ++ imsg_add(msg, &af, sizeof(af)) == -1) + errx(1, "imsg_add failure"); + imsg_close(ibuf, msg); + } else +- imsg_compose(ibuf, IMSG_CTL_KROUTE_ADDR, 0, 0, -1, +- &res->addr, sizeof(res->addr)); ++ imsg_compose(ibuf, IMSG_CTL_KROUTE_ADDR, res->rtableid, ++ 0, -1, &res->addr, sizeof(res->addr)); + show_fib_head(); + break; ++ case SHOW_FIB_TABLES: ++ imsg_compose(ibuf, IMSG_CTL_SHOW_FIB_TABLES, 0, 0, -1, NULL, 0); ++ show_fib_tables_head(); ++ break; + case SHOW_NEXTHOP: +- imsg_compose(ibuf, IMSG_CTL_SHOW_NEXTHOP, 0, 0, -1, NULL, 0); ++ imsg_compose(ibuf, IMSG_CTL_SHOW_NEXTHOP, res->rtableid, 0, -1, ++ NULL, 0); + show_nexthop_head(); + break; + case SHOW_INTERFACE: +@@ -192,7 +231,7 @@ main(int argc, char *argv[]) + case SHOW_NEIGHBOR_TIMERS: + case SHOW_NEIGHBOR_TERSE: + neighbor.show_timers = (res->action == SHOW_NEIGHBOR_TIMERS); +- if (res->peeraddr.af || res->peerdesc[0]) ++ if (res->peeraddr.aid || res->peerdesc[0]) + imsg_compose(ibuf, IMSG_CTL_SHOW_NEIGHBOR, 0, 0, -1, + &neighbor, sizeof(neighbor)); + else +@@ -206,7 +245,7 @@ main(int argc, char *argv[]) + memcpy(&ribreq.as, &res->as, sizeof(res->as)); + type = IMSG_CTL_SHOW_RIB_AS; + } +- if (res->addr.af) { ++ if (res->addr.aid) { + memcpy(&ribreq.prefix, &res->addr, sizeof(res->addr)); + ribreq.prefixlen = res->prefixlen; + type = IMSG_CTL_SHOW_RIB_PREFIX; +@@ -217,15 +256,35 @@ main(int argc, char *argv[]) + sizeof(res->community)); + type = IMSG_CTL_SHOW_RIB_COMMUNITY; + } +- memcpy(&ribreq.neighbor, &neighbor, +- sizeof(ribreq.neighbor)); ++ memcpy(&ribreq.neighbor, &neighbor, sizeof(ribreq.neighbor)); + strlcpy(ribreq.rib, res->rib, sizeof(ribreq.rib)); +- ribreq.af = res->af; ++ ribreq.aid = res->aid; + ribreq.flags = res->flags; + imsg_compose(ibuf, type, 0, 0, -1, &ribreq, sizeof(ribreq)); + if (!(res->flags & F_CTL_DETAIL)) + show_rib_summary_head(); + break; ++ case SHOW_MRT: ++ close(fd); ++ bzero(&ribreq, sizeof(ribreq)); ++ if (res->as.type != AS_NONE) ++ memcpy(&ribreq.as, &res->as, sizeof(res->as)); ++ if (res->addr.aid) { ++ memcpy(&ribreq.prefix, &res->addr, sizeof(res->addr)); ++ ribreq.prefixlen = res->prefixlen; ++ } ++ if (res->community.as != COMMUNITY_UNSET && ++ res->community.type != COMMUNITY_UNSET) ++ memcpy(&ribreq.community, &res->community, ++ sizeof(res->community)); ++ memcpy(&ribreq.neighbor, &neighbor, sizeof(ribreq.neighbor)); ++ ribreq.aid = res->aid; ++ ribreq.flags = res->flags; ++ show_mrt.arg = &ribreq; ++ if (!(res->flags & F_CTL_DETAIL)) ++ show_rib_summary_head(); ++ mrt_parse(res->mrtfd, &show_mrt, 1); ++ exit(0); + case SHOW_RIB_MEM: + imsg_compose(ibuf, IMSG_CTL_SHOW_RIB_MEM, 0, 0, -1, NULL, 0); + break; +@@ -237,12 +296,14 @@ main(int argc, char *argv[]) + errx(1, "action==FIB"); + break; + case FIB_COUPLE: +- imsg_compose(ibuf, IMSG_CTL_FIB_COUPLE, 0, 0, -1, NULL, 0); ++ imsg_compose(ibuf, IMSG_CTL_FIB_COUPLE, res->rtableid, 0, -1, ++ NULL, 0); + printf("couple request sent.\n"); + done = 1; + break; + case FIB_DECOUPLE: +- imsg_compose(ibuf, IMSG_CTL_FIB_DECOUPLE, 0, 0, -1, NULL, 0); ++ imsg_compose(ibuf, IMSG_CTL_FIB_DECOUPLE, res->rtableid, 0, -1, ++ NULL, 0); + printf("decouple request sent.\n"); + done = 1; + break; +@@ -290,12 +351,40 @@ main(int argc, char *argv[]) + break; + case NETWORK_SHOW: + bzero(&ribreq, sizeof(ribreq)); +- ribreq.af = res->af; ++ ribreq.aid = res->aid; + strlcpy(ribreq.rib, res->rib, sizeof(ribreq.rib)); + imsg_compose(ibuf, IMSG_CTL_SHOW_NETWORK, 0, 0, -1, + &ribreq, sizeof(ribreq)); + show_network_head(); + break; ++ case NETWORK_MRT: ++ bzero(&ribreq, sizeof(ribreq)); ++ if (res->as.type != AS_NONE) ++ memcpy(&ribreq.as, &res->as, sizeof(res->as)); ++ if (res->addr.aid) { ++ memcpy(&ribreq.prefix, &res->addr, sizeof(res->addr)); ++ ribreq.prefixlen = res->prefixlen; ++ } ++ if (res->community.as != COMMUNITY_UNSET && ++ res->community.type != COMMUNITY_UNSET) ++ memcpy(&ribreq.community, &res->community, ++ sizeof(res->community)); ++ memcpy(&ribreq.neighbor, &neighbor, sizeof(ribreq.neighbor)); ++ ribreq.aid = res->aid; ++ ribreq.flags = res->flags; ++ net_mrt.arg = &ribreq; ++ mrt_parse(res->mrtfd, &net_mrt, 1); ++ done = 1; ++ break; ++ case LOG_VERBOSE: ++ verbose = 1; ++ /* FALLTHROUGH */ ++ case LOG_BRIEF: ++ imsg_compose(ibuf, IMSG_CTL_LOG_VERBOSE, 0, 0, -1, ++ &verbose, sizeof(verbose)); ++ printf("logging request sent.\n"); ++ done = 1; ++ break; + } + + while (ibuf->w.queued) +@@ -304,13 +393,13 @@ main(int argc, char *argv[]) + + while (!done) { + if ((n = imsg_read(ibuf)) == -1) +- errx(1, "imsg_read error"); ++ err(1, "imsg_read error"); + if (n == 0) + errx(1, "pipe closed"); + + while (!done) { + if ((n = imsg_get(ibuf, &imsg)) == -1) +- errx(1, "imsg_get error"); ++ err(1, "imsg_get error"); + if (n == 0) + break; + +@@ -329,6 +418,8 @@ main(int argc, char *argv[]) + done = show_summary_terse_msg(&imsg, nodescr); + break; + case SHOW_FIB: ++ case SHOW_FIB_TABLES: ++ case NETWORK_SHOW: + done = show_fib_msg(&imsg); + break; + case SHOW_NEXTHOP: +@@ -356,9 +447,6 @@ main(int argc, char *argv[]) + case SHOW_RIB_MEM: + done = show_rib_memory_msg(&imsg); + break; +- case NETWORK_SHOW: +- done = show_fib_msg(&imsg); +- break; + case NEIGHBOR: + case NEIGHBOR_UP: + case NEIGHBOR_DOWN: +@@ -373,6 +461,10 @@ main(int argc, char *argv[]) + case NETWORK_REMOVE: + case NETWORK_FLUSH: + case IRRFILTER: ++ case LOG_VERBOSE: ++ case LOG_BRIEF: ++ case SHOW_MRT: ++ case NETWORK_MRT: + break; + } + imsg_free(&imsg); +@@ -398,8 +490,8 @@ fmt_peer(const char *descr, const struct + } + + ip = log_addr(remote_addr); +- if (masklen != -1 && ((remote_addr->af == AF_INET && masklen != 32) || +- (remote_addr->af == AF_INET6 && masklen != 128))) { ++ if (masklen != -1 && ((remote_addr->aid == AID_INET && masklen != 32) || ++ (remote_addr->aid == AID_INET6 && masklen != 128))) { + if (asprintf(&p, "%s/%u", ip, masklen) == -1) + err(1, NULL); + } else { +@@ -430,7 +522,7 @@ show_summary_msg(struct imsg *imsg, int + p->conf.remote_masklen, nodescr); + if (strlen(s) >= 20) + s[20] = 0; +- printf("%-20s %8s %10llu %10llu %5u %-8s ", ++ printf("%-20s %8s %10" PRIu64 " %10" PRIu64 " %5u %-8s ", + s, log_as(p->conf.remote_as), + p->stats.msg_rcvd_open + p->stats.msg_rcvd_notification + + p->stats.msg_rcvd_update + p->stats.msg_rcvd_keepalive + +@@ -492,8 +584,8 @@ show_neighbor_terse(struct imsg *imsg) + switch (imsg->hdr.type) { + case IMSG_CTL_SHOW_NEIGHBOR: + p = imsg->data; +- printf("%llu %llu %llu %llu %llu %llu %llu " +- "%llu %llu %llu %u %u %llu %llu %llu %llu\n", ++ printf("%" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " " ++ "%" PRIu64 " %" PRIu64 " %" PRIu64 " %u %u %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", + p->stats.msg_sent_open, p->stats.msg_rcvd_open, + p->stats.msg_sent_notification, + p->stats.msg_rcvd_notification, +@@ -521,13 +613,15 @@ show_neighbor_msg(struct imsg *imsg, enu + struct ctl_timer *t; + struct in_addr ina; + char buf[NI_MAXHOST], pbuf[NI_MAXSERV], *s; ++ int hascapamp = 0; ++ u_int8_t i; + + switch (imsg->hdr.type) { + case IMSG_CTL_SHOW_NEIGHBOR: + p = imsg->data; +- if ((p->conf.remote_addr.af == AF_INET && ++ if ((p->conf.remote_addr.aid == AID_INET && + p->conf.remote_masklen != 32) || +- (p->conf.remote_addr.af == AF_INET6 && ++ (p->conf.remote_addr.aid == AID_INET6 && + p->conf.remote_masklen != 128)) { + if (asprintf(&s, "%s/%u", + log_addr(&p->conf.remote_addr), +@@ -549,9 +643,20 @@ show_neighbor_msg(struct imsg *imsg, enu + printf(", Template"); + if (p->conf.cloned) + printf(", Cloned"); ++ if (p->conf.passive) ++ printf(", Passive"); ++ if (p->conf.ebgp && p->conf.distance > 1) ++ printf(", Multihop (%u)", (int)p->conf.distance); + printf("\n"); + if (p->conf.descr[0]) + printf(" Description: %s\n", p->conf.descr); ++ if (p->conf.max_prefix) { ++ printf(" Max-prefix: %u", p->conf.max_prefix); ++ if (p->conf.max_prefix_restart) ++ printf(" (restart %u)", ++ p->conf.max_prefix_restart); ++ printf("\n"); ++ } + printf(" BGP version 4, remote router-id %s\n", + inet_ntoa(ina)); + printf(" BGP state = %s", statenames[p->state]); +@@ -563,22 +668,24 @@ show_neighbor_msg(struct imsg *imsg, enu + printf(" Last read %s, holdtime %us, keepalive interval %us\n", + fmt_timeframe(p->stats.last_read), + p->holdtime, p->holdtime/3); +- if (p->capa.peer.mp_v4 || p->capa.peer.mp_v6 || +- p->capa.peer.refresh || p->capa.peer.restart || +- p->capa.peer.as4byte) { ++ for (i = 0; i < AID_MAX; i++) ++ if (p->capa.peer.mp[i]) ++ hascapamp = 1; ++ if (hascapamp || p->capa.peer.refresh || ++ p->capa.peer.grestart.restart || p->capa.peer.as4byte) { + printf(" Neighbor capabilities:\n"); +- if (p->capa.peer.mp_v4) { +- printf(" Multiprotocol extensions: IPv4"); +- print_neighbor_capa_mp_safi(p->capa.peer.mp_v4); +- } +- if (p->capa.peer.mp_v6) { +- printf(" Multiprotocol extensions: IPv6"); +- print_neighbor_capa_mp_safi(p->capa.peer.mp_v6); ++ if (hascapamp) { ++ printf(" Multiprotocol extensions: "); ++ print_neighbor_capa_mp(p); ++ printf("\n"); + } + if (p->capa.peer.refresh) + printf(" Route Refresh\n"); +- if (p->capa.peer.restart) +- printf(" Graceful Restart\n"); ++ if (p->capa.peer.grestart.restart) { ++ printf(" Graceful Restart"); ++ print_neighbor_capa_restart(p); ++ printf("\n"); ++ } + if (p->capa.peer.as4byte) + printf(" 4-byte AS numbers\n"); + } +@@ -633,20 +740,38 @@ show_neighbor_msg(struct imsg *imsg, enu + } + + void +-print_neighbor_capa_mp_safi(u_int8_t safi) ++print_neighbor_capa_mp(struct peer *p) + { +- switch (safi) { +- case SAFI_UNICAST: +- printf(" Unicast"); +- break; +- case SAFI_MULTICAST: +- printf(" Multicast"); +- break; +- default: +- printf(" unknown (%u)", safi); +- break; +- } +- printf("\n"); ++ int comma; ++ u_int8_t i; ++ ++ for (i = 0, comma = 0; i < AID_MAX; i++) ++ if (p->capa.peer.mp[i]) { ++ printf("%s%s", comma ? ", " : "", aid2str(i)); ++ comma = 1; ++ } ++} ++ ++void ++print_neighbor_capa_restart(struct peer *p) ++{ ++ int comma; ++ u_int8_t i; ++ ++ if (p->capa.peer.grestart.timeout) ++ printf(": Timeout: %d, ", p->capa.peer.grestart.timeout); ++ for (i = 0, comma = 0; i < AID_MAX; i++) ++ if (p->capa.peer.grestart.flags[i] & CAPA_GR_PRESENT) { ++ if (!comma && ++ p->capa.peer.grestart.flags[i] & CAPA_GR_RESTART) ++ printf("restarted, "); ++ if (comma) ++ printf(", "); ++ printf("%s", aid2str(i)); ++ if (p->capa.peer.grestart.flags[i] & CAPA_GR_FORWARD) ++ printf(" (preserved)"); ++ comma = 1; ++ } + } + + void +@@ -654,17 +779,17 @@ print_neighbor_msgstats(struct peer *p) + { + printf(" Message statistics:\n"); + printf(" %-15s %-10s %-10s\n", "", "Sent", "Received"); +- printf(" %-15s %10llu %10llu\n", "Opens", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Opens", + p->stats.msg_sent_open, p->stats.msg_rcvd_open); +- printf(" %-15s %10llu %10llu\n", "Notifications", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Notifications", + p->stats.msg_sent_notification, p->stats.msg_rcvd_notification); +- printf(" %-15s %10llu %10llu\n", "Updates", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Updates", + p->stats.msg_sent_update, p->stats.msg_rcvd_update); +- printf(" %-15s %10llu %10llu\n", "Keepalives", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Keepalives", + p->stats.msg_sent_keepalive, p->stats.msg_rcvd_keepalive); +- printf(" %-15s %10llu %10llu\n", "Route Refresh", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Route Refresh", + p->stats.msg_sent_rrefresh, p->stats.msg_rcvd_rrefresh); +- printf(" %-15s %10llu %10llu\n\n", "Total", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n\n", "Total", + p->stats.msg_sent_open + p->stats.msg_sent_notification + + p->stats.msg_sent_update + p->stats.msg_sent_keepalive + + p->stats.msg_sent_rrefresh, +@@ -673,14 +798,16 @@ print_neighbor_msgstats(struct peer *p) + p->stats.msg_rcvd_rrefresh); + printf(" Update statistics:\n"); + printf(" %-15s %-10s %-10s\n", "", "Sent", "Received"); +- printf(" %-15s %10llu %10llu\n", "Updates", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Updates", + p->stats.prefix_sent_update, p->stats.prefix_rcvd_update); +- printf(" %-15s %10llu %10llu\n", "Withdraws", ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "Withdraws", + p->stats.prefix_sent_withdraw, p->stats.prefix_rcvd_withdraw); ++ printf(" %-15s %10" PRIu64 " %10" PRIu64 "\n", "End-of-Rib", ++ p->stats.prefix_sent_eor, p->stats.prefix_rcvd_eor); + } + + void +-print_timer(const char *name, timer_t d) ++print_timer(const char *name, time_t d) + { + printf(" %-20s ", name); + +@@ -745,6 +872,12 @@ show_fib_head(void) + } + + void ++show_fib_tables_head(void) ++{ ++ printf("%-5s %-20s %-8s\n", "Table", "Description", "State"); ++} ++ ++void + show_network_head(void) + { + printf("flags: S = Static\n"); +@@ -788,56 +921,44 @@ show_fib_flags(u_int16_t flags) + int + show_fib_msg(struct imsg *imsg) + { +- struct kroute *k; +- struct kroute6 *k6; ++ struct kroute_full *kf; ++ struct ktable *kt; + char *p; + + switch (imsg->hdr.type) { + case IMSG_CTL_KROUTE: + case IMSG_CTL_SHOW_NETWORK: +- if (imsg->hdr.len < IMSG_HEADER_SIZE + sizeof(struct kroute)) ++ if (imsg->hdr.len < IMSG_HEADER_SIZE + sizeof(*kf)) + errx(1, "wrong imsg len"); +- k = imsg->data; ++ kf = imsg->data; + +- show_fib_flags(k->flags); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201906032008.x53K8bMb023528>