pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

exabgp4: Initial import



Module Name:	pkgsrc-wip
Committed By:	Jørn Åne de Jong <git%jornane.no@localhost>
Pushed By:	jornane
Date:		Thu Jan 28 20:59:17 2021 +0100
Changeset:	43370765d5a31cf604bfa1981b032f2a630b9d4c

Added Files:
	exabgp4/DESCR
	exabgp4/Makefile
	exabgp4/PLIST
	exabgp4/distinfo
	exabgp4/files/exabgp.env
	exabgp4/files/exabgp.sh
	exabgp4/patches/patch-lib_exabgp_reactor_daemon.py
	exabgp4/patches/patch-setup.py

Log Message:
exabgp4: Initial import

An upgrade to the existing net/exabgp port.  However, since the
configuration format has been changed between ExaBGP 3 and 4, this is a
new port, as not to break running configurations.

This is my first port to pkgsrc, I went to some lengths to fix pkglint
issues, but I was unable to find a replacement for "${CP} should not be
used to install files", so that is still there.

The latest release contains a bug that prevents the code from running on
Python 3.8, a patch is included.  The bug is already fixed upstream.

Additionally, the manpage is patched to account for the prefix, and the
installation script is patched in order to not install things in /etc.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=43370765d5a31cf604bfa1981b032f2a630b9d4c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 exabgp4/DESCR                                      |  13 +
 exabgp4/Makefile                                   |  89 ++
 exabgp4/PLIST                                      | 948 +++++++++++++++++++++
 exabgp4/distinfo                                   |   8 +
 exabgp4/files/exabgp.env                           |  58 ++
 exabgp4/files/exabgp.sh                            |  35 +
 exabgp4/patches/patch-lib_exabgp_reactor_daemon.py |  16 +
 exabgp4/patches/patch-setup.py                     |  15 +
 8 files changed, 1182 insertions(+)

diffs:
diff --git a/exabgp4/DESCR b/exabgp4/DESCR
new file mode 100644
index 0000000000..e08c5d59e9
--- /dev/null
+++ b/exabgp4/DESCR
@@ -0,0 +1,13 @@
+Unlike BIRD or Quagga, ExaBGP was not designed to transform a general purpose
+server into a router, but to allow engineers to control their BGP (rfc4271)
+network easily. Think of it as Software Defined Networking for people with
+"commodity" routers.
+
+ExaBGP transform BGP (rfc4271) messages into friendly plain text or JSON
+which can be easily manipulate by scripts.
+
+It allows the creation of tools such as:
+ * advanced looking glass graphically display the routing of prefix
+ * high availability tool which automatically isolate broken services
+ * DDOS mitigation
+ * an anycasted server
diff --git a/exabgp4/Makefile b/exabgp4/Makefile
new file mode 100644
index 0000000000..ef8a1f4dce
--- /dev/null
+++ b/exabgp4/Makefile
@@ -0,0 +1,89 @@
+# $NetBSD$
+
+VERSION=		4.2.11
+DISTNAME=		${VERSION}
+PKGNAME=		exabgp4-${VERSION}
+PKGREVISION=		1
+EGG_NAME=		exabgp-${VERSION}
+CATEGORIES=		net
+MASTER_SITES=		${MASTER_SITE_GITHUB:=Exa-Networks/exabgp/archive/}
+DIST_SUBDIR=		exabgp
+
+MAINTAINER=		jorn.dejong%uninett.no@localhost
+HOMEPAGE=		https://github.com/Exa-Networks/exabgp/
+COMMENT=		Userspace BGP daemon written in python
+LICENSE=		modified-bsd
+CONFLICTS=		exabgp-[0-9]* # the exabgp3 package is simply called exabgp
+
+WRKSRC=			${WRKDIR}/exabgp-${VERSION}
+
+# Unclear if this is needed;
+# perl is used in two example scripts,
+# which need their shebang fixed,
+# but is not needed to build or to run the software
+#USE_TOOLS+=		perl:run
+
+#PYTHON_VERSIONED_DEPENDENCIES+=	setuptools
+BUILD_DEPENDS+=		${PYPKGPREFIX}-setuptools-[0-9]*:../../devel/py-setuptools
+
+REPLACE_PERL+=		etc/exabgp/examples/dynamic-1.pl
+REPLACE_PERL+=		etc/exabgp/examples/watchdog-1.pl
+
+REPLACE_PYTHON+=	etc/exabgp/examples/api-add-remove.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-announce.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-announcement.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-api.nothing.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-api.receive.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-attributes-vpn.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-attributes.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-broken-flow.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-check.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-eor.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-fast.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-flow.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-manual-eor.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-multi-neighbor.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-multisession.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-nexthop-self.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-nexthop.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-no-respawn-1.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-no-respawn-2.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-notification.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-open.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-reload.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-teardown.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-vpls.run
+REPLACE_PYTHON+=	etc/exabgp/examples/api-vpnv4.run
+REPLACE_PYTHON+=	etc/exabgp/examples/stderr-1.py
+REPLACE_PYTHON+=	etc/exabgp/examples/syslog-1.py
+REPLACE_PYTHON+=	etc/exabgp/examples/watchdog.run
+
+PYTHON_VERSIONS_ACCEPTED=	39 38 37 36
+
+USE_LANGUAGES=		# none
+
+RCD_SCRIPTS+=		exabgp
+
+CONF_FILES+=		${PREFIX}/share/examples/exabgp/exabgp.env ${PREFIX}/etc/exabgp/exabgp.env
+
+INSTALLATION_DIRS+=	share/exabgp share/examples/exabgp bin etc/exabgp
+INSTALLATION_DIRS+=	${PKGMANDIR}/man1 ${PKGMANDIR}/man5
+
+FILES_SUBST+=		PYTHONBIN=${PYTHONBIN}
+
+post-patch:
+	${SED} -e s,/etc/,${PREFIX}/etc/, ${WRKSRC}/doc/man/exabgp.1 > ${WRKSRC}/doc/man/exabgp.1.sed
+	${CP} ${WRKSRC}/doc/man/exabgp.1.sed ${WRKSRC}/doc/man/exabgp.1
+
+post-install:
+	${INSTALL_MAN} ${WRKSRC}/doc/man/exabgp.1 \
+		${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
+	${INSTALL_MAN} ${WRKSRC}/doc/man/exabgp.conf.5 \
+		${DESTDIR}${PREFIX}/${PKGMANDIR}/man5
+	${CP} ${FILESDIR}/exabgp.env ${DESTDIR}${PREFIX}/share/examples/exabgp/
+
+.include "../../lang/python/distutils.mk"
+.include "../../lang/python/application.mk"
+.include "../../lang/python/pyversion.mk"
+.include "../../lang/python/versioned_dependencies.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/exabgp4/PLIST b/exabgp4/PLIST
new file mode 100644
index 0000000000..fd6e3c09cd
--- /dev/null
+++ b/exabgp4/PLIST
@@ -0,0 +1,948 @@
+@comment $NetBSD$
+bin/exabgp
+bin/exabgp-cli
+bin/exabgp-healthcheck
+bin/exabgpcli
+${PYSITELIB}/${EGG_FILE}/PKG-INFO
+${PYSITELIB}/${EGG_FILE}/SOURCES.txt
+${PYSITELIB}/${EGG_FILE}/dependency_links.txt
+${PYSITELIB}/${EGG_FILE}/entry_points.txt
+${PYSITELIB}/${EGG_FILE}/not-zip-safe
+${PYSITELIB}/${EGG_FILE}/requires.txt
+${PYSITELIB}/${EGG_FILE}/top_level.txt
+${PYSITELIB}/exabgp/__init__.py
+${PYSITELIB}/exabgp/__init__.pyc
+${PYSITELIB}/exabgp/__init__.pyo
+${PYSITELIB}/exabgp/__main__.py
+${PYSITELIB}/exabgp/__main__.pyc
+${PYSITELIB}/exabgp/__main__.pyo
+${PYSITELIB}/exabgp/application/__init__.py
+${PYSITELIB}/exabgp/application/__init__.pyc
+${PYSITELIB}/exabgp/application/__init__.pyo
+${PYSITELIB}/exabgp/application/bgp.py
+${PYSITELIB}/exabgp/application/bgp.pyc
+${PYSITELIB}/exabgp/application/bgp.pyo
+${PYSITELIB}/exabgp/application/cli.py
+${PYSITELIB}/exabgp/application/cli.pyc
+${PYSITELIB}/exabgp/application/cli.pyo
+${PYSITELIB}/exabgp/application/control.py
+${PYSITELIB}/exabgp/application/control.pyc
+${PYSITELIB}/exabgp/application/control.pyo
+${PYSITELIB}/exabgp/application/flow.py
+${PYSITELIB}/exabgp/application/flow.pyc
+${PYSITELIB}/exabgp/application/flow.pyo
+${PYSITELIB}/exabgp/application/healthcheck.py
+${PYSITELIB}/exabgp/application/healthcheck.pyc
+${PYSITELIB}/exabgp/application/healthcheck.pyo
+${PYSITELIB}/exabgp/application/main.py
+${PYSITELIB}/exabgp/application/main.pyc
+${PYSITELIB}/exabgp/application/main.pyo
+${PYSITELIB}/exabgp/application/netlink.py
+${PYSITELIB}/exabgp/application/netlink.pyc
+${PYSITELIB}/exabgp/application/netlink.pyo
+${PYSITELIB}/exabgp/application/tojson.py
+${PYSITELIB}/exabgp/application/tojson.pyc
+${PYSITELIB}/exabgp/application/tojson.pyo
+${PYSITELIB}/exabgp/bgp/__init__.py
+${PYSITELIB}/exabgp/bgp/__init__.pyc
+${PYSITELIB}/exabgp/bgp/__init__.pyo
+${PYSITELIB}/exabgp/bgp/fsm.py
+${PYSITELIB}/exabgp/bgp/fsm.pyc
+${PYSITELIB}/exabgp/bgp/fsm.pyo
+${PYSITELIB}/exabgp/bgp/message/__init__.py
+${PYSITELIB}/exabgp/bgp/message/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/direction.py
+${PYSITELIB}/exabgp/bgp/message/direction.pyc
+${PYSITELIB}/exabgp/bgp/message/direction.pyo
+${PYSITELIB}/exabgp/bgp/message/keepalive.py
+${PYSITELIB}/exabgp/bgp/message/keepalive.pyc
+${PYSITELIB}/exabgp/bgp/message/keepalive.pyo
+${PYSITELIB}/exabgp/bgp/message/message.py
+${PYSITELIB}/exabgp/bgp/message/message.pyc
+${PYSITELIB}/exabgp/bgp/message/message.pyo
+${PYSITELIB}/exabgp/bgp/message/nop.py
+${PYSITELIB}/exabgp/bgp/message/nop.pyc
+${PYSITELIB}/exabgp/bgp/message/nop.pyo
+${PYSITELIB}/exabgp/bgp/message/notification.py
+${PYSITELIB}/exabgp/bgp/message/notification.pyc
+${PYSITELIB}/exabgp/bgp/message/notification.pyo
+${PYSITELIB}/exabgp/bgp/message/open/__init__.py
+${PYSITELIB}/exabgp/bgp/message/open/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/open/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/open/asn.py
+${PYSITELIB}/exabgp/bgp/message/open/asn.pyc
+${PYSITELIB}/exabgp/bgp/message/open/asn.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/__init__.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/addpath.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/addpath.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/addpath.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/asn4.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/asn4.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/asn4.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/capabilities.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/capabilities.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/capabilities.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/capability.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/capability.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/capability.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/extended.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/extended.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/extended.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/graceful.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/graceful.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/graceful.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/hostname.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/hostname.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/hostname.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/mp.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/mp.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/mp.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/ms.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/ms.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/ms.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/negotiated.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/negotiated.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/negotiated.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/nexthop.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/nexthop.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/nexthop.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/operational.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/operational.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/operational.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/refresh.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/refresh.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/refresh.pyo
+${PYSITELIB}/exabgp/bgp/message/open/capability/unknown.py
+${PYSITELIB}/exabgp/bgp/message/open/capability/unknown.pyc
+${PYSITELIB}/exabgp/bgp/message/open/capability/unknown.pyo
+${PYSITELIB}/exabgp/bgp/message/open/holdtime.py
+${PYSITELIB}/exabgp/bgp/message/open/holdtime.pyc
+${PYSITELIB}/exabgp/bgp/message/open/holdtime.pyo
+${PYSITELIB}/exabgp/bgp/message/open/routerid.py
+${PYSITELIB}/exabgp/bgp/message/open/routerid.pyc
+${PYSITELIB}/exabgp/bgp/message/open/routerid.pyo
+${PYSITELIB}/exabgp/bgp/message/open/version.py
+${PYSITELIB}/exabgp/bgp/message/open/version.pyc
+${PYSITELIB}/exabgp/bgp/message/open/version.pyo
+${PYSITELIB}/exabgp/bgp/message/operational.py
+${PYSITELIB}/exabgp/bgp/message/operational.pyc
+${PYSITELIB}/exabgp/bgp/message/operational.pyo
+${PYSITELIB}/exabgp/bgp/message/refresh.py
+${PYSITELIB}/exabgp/bgp/message/refresh.pyc
+${PYSITELIB}/exabgp/bgp/message/refresh.pyo
+${PYSITELIB}/exabgp/bgp/message/unknown.py
+${PYSITELIB}/exabgp/bgp/message/unknown.pyc
+${PYSITELIB}/exabgp/bgp/message/unknown.pyo
+${PYSITELIB}/exabgp/bgp/message/update/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aggregator.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aggregator.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aggregator.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aigp.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aigp.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aigp.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aspath.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aspath.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/aspath.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/atomicaggregate.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/atomicaggregate.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/atomicaggregate.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attribute.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attribute.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attribute.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attributes.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attributes.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/attributes.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/linkname.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/linkname.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/linkname.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/opaque.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/opaque.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/opaque.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/protection.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/protection.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/protection.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rterid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rterid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/rterid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradj.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradj.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradj.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/srlg.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/srlg.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/srlg.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/temetric.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/temetric.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/temetric.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/linkstate.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/linkstate.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/linkstate.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/lterid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/lterid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/lterid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodename.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodename.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/nodename.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/opaque.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/opaque.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/opaque.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/srcap.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/srcap.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/node/srcap.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/clusterlist.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/clusterlist.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/clusterlist.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/bandwidth.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/bandwidth.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/bandwidth.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/chso.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/chso.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/chso.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/communities.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/communities.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/communities.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/community.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/community.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/community.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/encapsulation.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/encapsulation.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/l2info.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/l2info.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/l2info.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/origin.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/origin.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/origin.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt_record.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt_record.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/rt_record.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/traffic.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/traffic.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/extended/traffic.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/communities.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/communities.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/communities.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/community.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/community.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/initial/community.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/communities.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/communities.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/communities.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/community.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/community.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/community/large/community.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/generic.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/generic.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/generic.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/localpref.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/localpref.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/localpref.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/med.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/med.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/med.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mprnlri.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mprnlri.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mprnlri.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mpurnlri.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mpurnlri.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/mpurnlri.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/nexthop.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/nexthop.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/nexthop.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/origin.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/origin.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/origin.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/originatorid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/originatorid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/originatorid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/pmsi.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/pmsi.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/pmsi.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/ipv6sid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/ipv6sid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/ipv6sid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/labelindex.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/labelindex.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/labelindex.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/prefixsid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/prefixsid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/prefixsid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srgb.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srgb.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srgb.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.py
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/eor.py
+${PYSITELIB}/exabgp/bgp/message/update/eor.pyc
+${PYSITELIB}/exabgp/bgp/message/update/eor.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/link.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/link.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/link.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/nlri.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/nlri.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/nlri.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/node.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/node.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/node.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv4.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv4.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv4.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv6.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv6.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/prefixv6.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/cidr.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/cidr.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/cidr.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/ethernetad.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/ethernetad.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/ethernetad.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/mac.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/mac.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/mac.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/multicast.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/multicast.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/multicast.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/nlri.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/nlri.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/nlri.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/prefix.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/prefix.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/prefix.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/segment.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/segment.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/evpn/segment.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/flow.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/flow.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/flow.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/inet.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/inet.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/inet.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/ipvpn.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/ipvpn.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/ipvpn.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/label.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/label.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/label.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/nlri.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/nlri.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/nlri.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/__init__.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/__init__.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/__init__.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/esi.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/esi.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/esi.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/etag.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/etag.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/etag.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/labels.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/labels.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/labels.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/mac.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/mac.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/mac.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/path.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/path.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/path.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/rd.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/rd.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/qualifier/rd.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/rtc.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/rtc.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/rtc.pyo
+${PYSITELIB}/exabgp/bgp/message/update/nlri/vpls.py
+${PYSITELIB}/exabgp/bgp/message/update/nlri/vpls.pyc
+${PYSITELIB}/exabgp/bgp/message/update/nlri/vpls.pyo
+${PYSITELIB}/exabgp/bgp/neighbor.py
+${PYSITELIB}/exabgp/bgp/neighbor.pyc
+${PYSITELIB}/exabgp/bgp/neighbor.pyo
+${PYSITELIB}/exabgp/bgp/timer.py
+${PYSITELIB}/exabgp/bgp/timer.pyc
+${PYSITELIB}/exabgp/bgp/timer.pyo
+${PYSITELIB}/exabgp/configuration/__init__.py
+${PYSITELIB}/exabgp/configuration/__init__.pyc
+${PYSITELIB}/exabgp/configuration/__init__.pyo
+${PYSITELIB}/exabgp/configuration/announce/__init__.py
+${PYSITELIB}/exabgp/configuration/announce/__init__.pyc
+${PYSITELIB}/exabgp/configuration/announce/__init__.pyo
+${PYSITELIB}/exabgp/configuration/announce/flow.py
+${PYSITELIB}/exabgp/configuration/announce/flow.pyc
+${PYSITELIB}/exabgp/configuration/announce/flow.pyo
+${PYSITELIB}/exabgp/configuration/announce/ip.py
+${PYSITELIB}/exabgp/configuration/announce/ip.pyc
+${PYSITELIB}/exabgp/configuration/announce/ip.pyo
+${PYSITELIB}/exabgp/configuration/announce/label.py
+${PYSITELIB}/exabgp/configuration/announce/label.pyc
+${PYSITELIB}/exabgp/configuration/announce/label.pyo
+${PYSITELIB}/exabgp/configuration/announce/path.py
+${PYSITELIB}/exabgp/configuration/announce/path.pyc
+${PYSITELIB}/exabgp/configuration/announce/path.pyo
+${PYSITELIB}/exabgp/configuration/announce/vpls.py
+${PYSITELIB}/exabgp/configuration/announce/vpls.pyc
+${PYSITELIB}/exabgp/configuration/announce/vpls.pyo
+${PYSITELIB}/exabgp/configuration/announce/vpn.py
+${PYSITELIB}/exabgp/configuration/announce/vpn.pyc
+${PYSITELIB}/exabgp/configuration/announce/vpn.pyo
+${PYSITELIB}/exabgp/configuration/capability.py
+${PYSITELIB}/exabgp/configuration/capability.pyc
+${PYSITELIB}/exabgp/configuration/capability.pyo
+${PYSITELIB}/exabgp/configuration/check.py
+${PYSITELIB}/exabgp/configuration/check.pyc
+${PYSITELIB}/exabgp/configuration/check.pyo
+${PYSITELIB}/exabgp/configuration/configuration.py
+${PYSITELIB}/exabgp/configuration/configuration.pyc
+${PYSITELIB}/exabgp/configuration/configuration.pyo
+${PYSITELIB}/exabgp/configuration/core/__init__.py
+${PYSITELIB}/exabgp/configuration/core/__init__.pyc
+${PYSITELIB}/exabgp/configuration/core/__init__.pyo
+${PYSITELIB}/exabgp/configuration/core/error.py
+${PYSITELIB}/exabgp/configuration/core/error.pyc
+${PYSITELIB}/exabgp/configuration/core/error.pyo
+${PYSITELIB}/exabgp/configuration/core/format.py
+${PYSITELIB}/exabgp/configuration/core/format.pyc
+${PYSITELIB}/exabgp/configuration/core/format.pyo
+${PYSITELIB}/exabgp/configuration/core/location.py
+${PYSITELIB}/exabgp/configuration/core/location.pyc
+${PYSITELIB}/exabgp/configuration/core/location.pyo
+${PYSITELIB}/exabgp/configuration/core/scope.py
+${PYSITELIB}/exabgp/configuration/core/scope.pyc
+${PYSITELIB}/exabgp/configuration/core/scope.pyo
+${PYSITELIB}/exabgp/configuration/core/section.py
+${PYSITELIB}/exabgp/configuration/core/section.pyc
+${PYSITELIB}/exabgp/configuration/core/section.pyo
+${PYSITELIB}/exabgp/configuration/core/tokeniser.py
+${PYSITELIB}/exabgp/configuration/core/tokeniser.pyc
+${PYSITELIB}/exabgp/configuration/core/tokeniser.pyo
+${PYSITELIB}/exabgp/configuration/environment.py
+${PYSITELIB}/exabgp/configuration/environment.pyc
+${PYSITELIB}/exabgp/configuration/environment.pyo
+${PYSITELIB}/exabgp/configuration/flow/__init__.py
+${PYSITELIB}/exabgp/configuration/flow/__init__.pyc
+${PYSITELIB}/exabgp/configuration/flow/__init__.pyo
+${PYSITELIB}/exabgp/configuration/flow/match.py
+${PYSITELIB}/exabgp/configuration/flow/match.pyc
+${PYSITELIB}/exabgp/configuration/flow/match.pyo
+${PYSITELIB}/exabgp/configuration/flow/parser.py
+${PYSITELIB}/exabgp/configuration/flow/parser.pyc
+${PYSITELIB}/exabgp/configuration/flow/parser.pyo
+${PYSITELIB}/exabgp/configuration/flow/route.py
+${PYSITELIB}/exabgp/configuration/flow/route.pyc
+${PYSITELIB}/exabgp/configuration/flow/route.pyo
+${PYSITELIB}/exabgp/configuration/flow/scope.py
+${PYSITELIB}/exabgp/configuration/flow/scope.pyc
+${PYSITELIB}/exabgp/configuration/flow/scope.pyo
+${PYSITELIB}/exabgp/configuration/flow/then.py
+${PYSITELIB}/exabgp/configuration/flow/then.pyc
+${PYSITELIB}/exabgp/configuration/flow/then.pyo
+${PYSITELIB}/exabgp/configuration/l2vpn/__init__.py
+${PYSITELIB}/exabgp/configuration/l2vpn/__init__.pyc
+${PYSITELIB}/exabgp/configuration/l2vpn/__init__.pyo
+${PYSITELIB}/exabgp/configuration/l2vpn/parser.py
+${PYSITELIB}/exabgp/configuration/l2vpn/parser.pyc
+${PYSITELIB}/exabgp/configuration/l2vpn/parser.pyo
+${PYSITELIB}/exabgp/configuration/l2vpn/vpls.py
+${PYSITELIB}/exabgp/configuration/l2vpn/vpls.pyc
+${PYSITELIB}/exabgp/configuration/l2vpn/vpls.pyo
+${PYSITELIB}/exabgp/configuration/neighbor/__init__.py
+${PYSITELIB}/exabgp/configuration/neighbor/__init__.pyc
+${PYSITELIB}/exabgp/configuration/neighbor/__init__.pyo
+${PYSITELIB}/exabgp/configuration/neighbor/api.py
+${PYSITELIB}/exabgp/configuration/neighbor/api.pyc
+${PYSITELIB}/exabgp/configuration/neighbor/api.pyo
+${PYSITELIB}/exabgp/configuration/neighbor/family.py
+${PYSITELIB}/exabgp/configuration/neighbor/family.pyc
+${PYSITELIB}/exabgp/configuration/neighbor/family.pyo
+${PYSITELIB}/exabgp/configuration/neighbor/nexthop.py
+${PYSITELIB}/exabgp/configuration/neighbor/nexthop.pyc
+${PYSITELIB}/exabgp/configuration/neighbor/nexthop.pyo
+${PYSITELIB}/exabgp/configuration/neighbor/parser.py
+${PYSITELIB}/exabgp/configuration/neighbor/parser.pyc
+${PYSITELIB}/exabgp/configuration/neighbor/parser.pyo
+${PYSITELIB}/exabgp/configuration/operational/__init__.py
+${PYSITELIB}/exabgp/configuration/operational/__init__.pyc
+${PYSITELIB}/exabgp/configuration/operational/__init__.pyo
+${PYSITELIB}/exabgp/configuration/operational/parser.py
+${PYSITELIB}/exabgp/configuration/operational/parser.pyc
+${PYSITELIB}/exabgp/configuration/operational/parser.pyo
+${PYSITELIB}/exabgp/configuration/parser.py
+${PYSITELIB}/exabgp/configuration/parser.pyc
+${PYSITELIB}/exabgp/configuration/parser.pyo
+${PYSITELIB}/exabgp/configuration/process/__init__.py
+${PYSITELIB}/exabgp/configuration/process/__init__.pyc
+${PYSITELIB}/exabgp/configuration/process/__init__.pyo
+${PYSITELIB}/exabgp/configuration/process/parser.py
+${PYSITELIB}/exabgp/configuration/process/parser.pyc
+${PYSITELIB}/exabgp/configuration/process/parser.pyo
+${PYSITELIB}/exabgp/configuration/setup.py
+${PYSITELIB}/exabgp/configuration/setup.pyc
+${PYSITELIB}/exabgp/configuration/setup.pyo
+${PYSITELIB}/exabgp/configuration/static/__init__.py
+${PYSITELIB}/exabgp/configuration/static/__init__.pyc
+${PYSITELIB}/exabgp/configuration/static/__init__.pyo
+${PYSITELIB}/exabgp/configuration/static/mpls.py
+${PYSITELIB}/exabgp/configuration/static/mpls.pyc
+${PYSITELIB}/exabgp/configuration/static/mpls.pyo
+${PYSITELIB}/exabgp/configuration/static/parser.py
+${PYSITELIB}/exabgp/configuration/static/parser.pyc
+${PYSITELIB}/exabgp/configuration/static/parser.pyo
+${PYSITELIB}/exabgp/configuration/static/route.py
+${PYSITELIB}/exabgp/configuration/static/route.pyc
+${PYSITELIB}/exabgp/configuration/static/route.pyo
+${PYSITELIB}/exabgp/configuration/template/__init__.py
+${PYSITELIB}/exabgp/configuration/template/__init__.pyc
+${PYSITELIB}/exabgp/configuration/template/__init__.pyo
+${PYSITELIB}/exabgp/configuration/template/neighbor.py
+${PYSITELIB}/exabgp/configuration/template/neighbor.pyc
+${PYSITELIB}/exabgp/configuration/template/neighbor.pyo
+${PYSITELIB}/exabgp/configuration/usage.py
+${PYSITELIB}/exabgp/configuration/usage.pyc
+${PYSITELIB}/exabgp/configuration/usage.pyo
+${PYSITELIB}/exabgp/data/__init__.py
+${PYSITELIB}/exabgp/data/__init__.pyc
+${PYSITELIB}/exabgp/data/__init__.pyo
+${PYSITELIB}/exabgp/data/check.py
+${PYSITELIB}/exabgp/data/check.pyc
+${PYSITELIB}/exabgp/data/check.pyo
+${PYSITELIB}/exabgp/debug.py
+${PYSITELIB}/exabgp/debug.pyc
+${PYSITELIB}/exabgp/debug.pyo
+${PYSITELIB}/exabgp/logger.py
+${PYSITELIB}/exabgp/logger.pyc
+${PYSITELIB}/exabgp/logger.pyo
+${PYSITELIB}/exabgp/netlink/__init__.py
+${PYSITELIB}/exabgp/netlink/__init__.pyc
+${PYSITELIB}/exabgp/netlink/__init__.pyo
+${PYSITELIB}/exabgp/netlink/attributes.py
+${PYSITELIB}/exabgp/netlink/attributes.pyc
+${PYSITELIB}/exabgp/netlink/attributes.pyo
+${PYSITELIB}/exabgp/netlink/firewall.py
+${PYSITELIB}/exabgp/netlink/firewall.pyc
+${PYSITELIB}/exabgp/netlink/firewall.pyo
+${PYSITELIB}/exabgp/netlink/message.py
+${PYSITELIB}/exabgp/netlink/message.pyc
+${PYSITELIB}/exabgp/netlink/message.pyo
+${PYSITELIB}/exabgp/netlink/netlink.py
+${PYSITELIB}/exabgp/netlink/netlink.pyc
+${PYSITELIB}/exabgp/netlink/netlink.pyo
+${PYSITELIB}/exabgp/netlink/old.py
+${PYSITELIB}/exabgp/netlink/old.pyc
+${PYSITELIB}/exabgp/netlink/old.pyo
+${PYSITELIB}/exabgp/netlink/route/__init__.py
+${PYSITELIB}/exabgp/netlink/route/__init__.pyc
+${PYSITELIB}/exabgp/netlink/route/__init__.pyo
+${PYSITELIB}/exabgp/netlink/route/address.py
+${PYSITELIB}/exabgp/netlink/route/address.pyc
+${PYSITELIB}/exabgp/netlink/route/address.pyo
+${PYSITELIB}/exabgp/netlink/route/link.py
+${PYSITELIB}/exabgp/netlink/route/link.pyc
+${PYSITELIB}/exabgp/netlink/route/link.pyo
+${PYSITELIB}/exabgp/netlink/route/neighbor.py
+${PYSITELIB}/exabgp/netlink/route/neighbor.pyc
+${PYSITELIB}/exabgp/netlink/route/neighbor.pyo
+${PYSITELIB}/exabgp/netlink/route/network.py
+${PYSITELIB}/exabgp/netlink/route/network.pyc
+${PYSITELIB}/exabgp/netlink/route/network.pyo
+${PYSITELIB}/exabgp/netlink/sequence.py
+${PYSITELIB}/exabgp/netlink/sequence.pyc
+${PYSITELIB}/exabgp/netlink/sequence.pyo
+${PYSITELIB}/exabgp/netlink/tc.py
+${PYSITELIB}/exabgp/netlink/tc.pyc
+${PYSITELIB}/exabgp/netlink/tc.pyo
+${PYSITELIB}/exabgp/protocol/__init__.py
+${PYSITELIB}/exabgp/protocol/__init__.pyc
+${PYSITELIB}/exabgp/protocol/__init__.pyo
+${PYSITELIB}/exabgp/protocol/family.py
+${PYSITELIB}/exabgp/protocol/family.pyc
+${PYSITELIB}/exabgp/protocol/family.pyo
+${PYSITELIB}/exabgp/protocol/ip/__init__.py
+${PYSITELIB}/exabgp/protocol/ip/__init__.pyc
+${PYSITELIB}/exabgp/protocol/ip/__init__.pyo
+${PYSITELIB}/exabgp/protocol/ip/fragment.py
+${PYSITELIB}/exabgp/protocol/ip/fragment.pyc
+${PYSITELIB}/exabgp/protocol/ip/fragment.pyo
+${PYSITELIB}/exabgp/protocol/ip/icmp.py
+${PYSITELIB}/exabgp/protocol/ip/icmp.pyc
+${PYSITELIB}/exabgp/protocol/ip/icmp.pyo
+${PYSITELIB}/exabgp/protocol/ip/netmask.py
+${PYSITELIB}/exabgp/protocol/ip/netmask.pyc
+${PYSITELIB}/exabgp/protocol/ip/netmask.pyo
+${PYSITELIB}/exabgp/protocol/ip/port.py
+${PYSITELIB}/exabgp/protocol/ip/port.pyc
+${PYSITELIB}/exabgp/protocol/ip/port.pyo
+${PYSITELIB}/exabgp/protocol/ip/tcp/__init__.py
+${PYSITELIB}/exabgp/protocol/ip/tcp/__init__.pyc
+${PYSITELIB}/exabgp/protocol/ip/tcp/__init__.pyo
+${PYSITELIB}/exabgp/protocol/ip/tcp/flag.py
+${PYSITELIB}/exabgp/protocol/ip/tcp/flag.pyc
+${PYSITELIB}/exabgp/protocol/ip/tcp/flag.pyo
+${PYSITELIB}/exabgp/protocol/iso/__init__.py
+${PYSITELIB}/exabgp/protocol/iso/__init__.pyc
+${PYSITELIB}/exabgp/protocol/iso/__init__.pyo
+${PYSITELIB}/exabgp/protocol/resource.py
+${PYSITELIB}/exabgp/protocol/resource.pyc
+${PYSITELIB}/exabgp/protocol/resource.pyo
+${PYSITELIB}/exabgp/reactor/__init__.py
+${PYSITELIB}/exabgp/reactor/__init__.pyc
+${PYSITELIB}/exabgp/reactor/__init__.pyo
+${PYSITELIB}/exabgp/reactor/api/__init__.py
+${PYSITELIB}/exabgp/reactor/api/__init__.pyc
+${PYSITELIB}/exabgp/reactor/api/__init__.pyo
+${PYSITELIB}/exabgp/reactor/api/command/__init__.py
+${PYSITELIB}/exabgp/reactor/api/command/__init__.pyc
+${PYSITELIB}/exabgp/reactor/api/command/__init__.pyo
+${PYSITELIB}/exabgp/reactor/api/command/announce.py
+${PYSITELIB}/exabgp/reactor/api/command/announce.pyc
+${PYSITELIB}/exabgp/reactor/api/command/announce.pyo
+${PYSITELIB}/exabgp/reactor/api/command/command.py
+${PYSITELIB}/exabgp/reactor/api/command/command.pyc
+${PYSITELIB}/exabgp/reactor/api/command/command.pyo
+${PYSITELIB}/exabgp/reactor/api/command/limit.py
+${PYSITELIB}/exabgp/reactor/api/command/limit.pyc
+${PYSITELIB}/exabgp/reactor/api/command/limit.pyo
+${PYSITELIB}/exabgp/reactor/api/command/neighbor.py
+${PYSITELIB}/exabgp/reactor/api/command/neighbor.pyc
+${PYSITELIB}/exabgp/reactor/api/command/neighbor.pyo
+${PYSITELIB}/exabgp/reactor/api/command/reactor.py
+${PYSITELIB}/exabgp/reactor/api/command/reactor.pyc
+${PYSITELIB}/exabgp/reactor/api/command/reactor.pyo
+${PYSITELIB}/exabgp/reactor/api/command/rib.py
+${PYSITELIB}/exabgp/reactor/api/command/rib.pyc
+${PYSITELIB}/exabgp/reactor/api/command/rib.pyo
+${PYSITELIB}/exabgp/reactor/api/command/watchdog.py
+${PYSITELIB}/exabgp/reactor/api/command/watchdog.pyc
+${PYSITELIB}/exabgp/reactor/api/command/watchdog.pyo
+${PYSITELIB}/exabgp/reactor/api/processes.py
+${PYSITELIB}/exabgp/reactor/api/processes.pyc
+${PYSITELIB}/exabgp/reactor/api/processes.pyo
+${PYSITELIB}/exabgp/reactor/api/response/__init__.py
+${PYSITELIB}/exabgp/reactor/api/response/__init__.pyc
+${PYSITELIB}/exabgp/reactor/api/response/__init__.pyo
+${PYSITELIB}/exabgp/reactor/api/response/answer.py
+${PYSITELIB}/exabgp/reactor/api/response/answer.pyc
+${PYSITELIB}/exabgp/reactor/api/response/answer.pyo
+${PYSITELIB}/exabgp/reactor/api/response/json.py
+${PYSITELIB}/exabgp/reactor/api/response/json.pyc
+${PYSITELIB}/exabgp/reactor/api/response/json.pyo
+${PYSITELIB}/exabgp/reactor/api/response/text.py
+${PYSITELIB}/exabgp/reactor/api/response/text.pyc
+${PYSITELIB}/exabgp/reactor/api/response/text.pyo
+${PYSITELIB}/exabgp/reactor/api/transcoder.py
+${PYSITELIB}/exabgp/reactor/api/transcoder.pyc
+${PYSITELIB}/exabgp/reactor/api/transcoder.pyo
+${PYSITELIB}/exabgp/reactor/asynchronous.py
+${PYSITELIB}/exabgp/reactor/asynchronous.pyc
+${PYSITELIB}/exabgp/reactor/asynchronous.pyo
+${PYSITELIB}/exabgp/reactor/daemon.py
+${PYSITELIB}/exabgp/reactor/daemon.pyc
+${PYSITELIB}/exabgp/reactor/daemon.pyo
+${PYSITELIB}/exabgp/reactor/delay.py
+${PYSITELIB}/exabgp/reactor/delay.pyc
+${PYSITELIB}/exabgp/reactor/delay.pyo
+${PYSITELIB}/exabgp/reactor/interrupt.py
+${PYSITELIB}/exabgp/reactor/interrupt.pyc
+${PYSITELIB}/exabgp/reactor/interrupt.pyo
+${PYSITELIB}/exabgp/reactor/keepalive.py
+${PYSITELIB}/exabgp/reactor/keepalive.pyc
+${PYSITELIB}/exabgp/reactor/keepalive.pyo
+${PYSITELIB}/exabgp/reactor/listener.py
+${PYSITELIB}/exabgp/reactor/listener.pyc
+${PYSITELIB}/exabgp/reactor/listener.pyo
+${PYSITELIB}/exabgp/reactor/loop.py
+${PYSITELIB}/exabgp/reactor/loop.pyc
+${PYSITELIB}/exabgp/reactor/loop.pyo
+${PYSITELIB}/exabgp/reactor/network/__init__.py
+${PYSITELIB}/exabgp/reactor/network/__init__.pyc
+${PYSITELIB}/exabgp/reactor/network/__init__.pyo
+${PYSITELIB}/exabgp/reactor/network/connection.py
+${PYSITELIB}/exabgp/reactor/network/connection.pyc
+${PYSITELIB}/exabgp/reactor/network/connection.pyo
+${PYSITELIB}/exabgp/reactor/network/error.py
+${PYSITELIB}/exabgp/reactor/network/error.pyc
+${PYSITELIB}/exabgp/reactor/network/error.pyo
+${PYSITELIB}/exabgp/reactor/network/incoming.py
+${PYSITELIB}/exabgp/reactor/network/incoming.pyc
+${PYSITELIB}/exabgp/reactor/network/incoming.pyo
+${PYSITELIB}/exabgp/reactor/network/outgoing.py
+${PYSITELIB}/exabgp/reactor/network/outgoing.pyc
+${PYSITELIB}/exabgp/reactor/network/outgoing.pyo
+${PYSITELIB}/exabgp/reactor/network/tcp.py
+${PYSITELIB}/exabgp/reactor/network/tcp.pyc
+${PYSITELIB}/exabgp/reactor/network/tcp.pyo
+${PYSITELIB}/exabgp/reactor/peer.py
+${PYSITELIB}/exabgp/reactor/peer.pyc
+${PYSITELIB}/exabgp/reactor/peer.pyo
+${PYSITELIB}/exabgp/reactor/protocol.py
+${PYSITELIB}/exabgp/reactor/protocol.pyc
+${PYSITELIB}/exabgp/reactor/protocol.pyo
+${PYSITELIB}/exabgp/rib/__init__.py
+${PYSITELIB}/exabgp/rib/__init__.pyc
+${PYSITELIB}/exabgp/rib/__init__.pyo
+${PYSITELIB}/exabgp/rib/cache.py
+${PYSITELIB}/exabgp/rib/cache.pyc
+${PYSITELIB}/exabgp/rib/cache.pyo
+${PYSITELIB}/exabgp/rib/change.py
+${PYSITELIB}/exabgp/rib/change.pyc
+${PYSITELIB}/exabgp/rib/change.pyo
+${PYSITELIB}/exabgp/rib/incoming.py
+${PYSITELIB}/exabgp/rib/incoming.pyc
+${PYSITELIB}/exabgp/rib/incoming.pyo
+${PYSITELIB}/exabgp/rib/outgoing.py
+${PYSITELIB}/exabgp/rib/outgoing.pyc
+${PYSITELIB}/exabgp/rib/outgoing.pyo
+${PYSITELIB}/exabgp/util/__init__.py
+${PYSITELIB}/exabgp/util/__init__.pyc
+${PYSITELIB}/exabgp/util/__init__.pyo
+${PYSITELIB}/exabgp/util/cache.py
+${PYSITELIB}/exabgp/util/cache.pyc
+${PYSITELIB}/exabgp/util/cache.pyo
+${PYSITELIB}/exabgp/util/coroutine.py
+${PYSITELIB}/exabgp/util/coroutine.pyc
+${PYSITELIB}/exabgp/util/coroutine.pyo
+${PYSITELIB}/exabgp/util/dictionary.py
+${PYSITELIB}/exabgp/util/dictionary.pyc
+${PYSITELIB}/exabgp/util/dictionary.pyo
+${PYSITELIB}/exabgp/util/dns.py
+${PYSITELIB}/exabgp/util/dns.pyc
+${PYSITELIB}/exabgp/util/dns.pyo
+${PYSITELIB}/exabgp/util/enumeration.py
+${PYSITELIB}/exabgp/util/enumeration.pyc
+${PYSITELIB}/exabgp/util/enumeration.pyo
+${PYSITELIB}/exabgp/util/errstr.py
+${PYSITELIB}/exabgp/util/errstr.pyc
+${PYSITELIB}/exabgp/util/errstr.pyo
+${PYSITELIB}/exabgp/util/hashtable.py
+${PYSITELIB}/exabgp/util/hashtable.pyc
+${PYSITELIB}/exabgp/util/hashtable.pyo
+${PYSITELIB}/exabgp/util/ip.py
+${PYSITELIB}/exabgp/util/ip.pyc
+${PYSITELIB}/exabgp/util/ip.pyo
+${PYSITELIB}/exabgp/util/od.py
+${PYSITELIB}/exabgp/util/od.pyc
+${PYSITELIB}/exabgp/util/od.pyo
+${PYSITELIB}/exabgp/util/panic.py
+${PYSITELIB}/exabgp/util/panic.pyc
+${PYSITELIB}/exabgp/util/panic.pyo
+${PYSITELIB}/exabgp/util/test.py
+${PYSITELIB}/exabgp/util/test.pyc
+${PYSITELIB}/exabgp/util/test.pyo
+${PYSITELIB}/exabgp/util/trace.py
+${PYSITELIB}/exabgp/util/trace.pyc
+${PYSITELIB}/exabgp/util/trace.pyo
+${PYSITELIB}/exabgp/util/usage.py
+${PYSITELIB}/exabgp/util/usage.pyc
+${PYSITELIB}/exabgp/util/usage.pyo
+${PYSITELIB}/exabgp/vendoring/__init__.py
+${PYSITELIB}/exabgp/vendoring/__init__.pyc
+${PYSITELIB}/exabgp/vendoring/__init__.pyo
+${PYSITELIB}/exabgp/vendoring/bitstring.py
+${PYSITELIB}/exabgp/vendoring/bitstring.pyc
+${PYSITELIB}/exabgp/vendoring/bitstring.pyo
+${PYSITELIB}/exabgp/vendoring/cmd2.py
+${PYSITELIB}/exabgp/vendoring/cmd2.pyc
+${PYSITELIB}/exabgp/vendoring/cmd2.pyo
+${PYSITELIB}/exabgp/vendoring/counter.py
+${PYSITELIB}/exabgp/vendoring/counter.pyc
+${PYSITELIB}/exabgp/vendoring/counter.pyo
+${PYSITELIB}/exabgp/vendoring/docopt.py
+${PYSITELIB}/exabgp/vendoring/docopt.pyc
+${PYSITELIB}/exabgp/vendoring/docopt.pyo
+${PYSITELIB}/exabgp/vendoring/gcdump.py
+${PYSITELIB}/exabgp/vendoring/gcdump.pyc
+${PYSITELIB}/exabgp/vendoring/gcdump.pyo
+${PYSITELIB}/exabgp/vendoring/ipaddress.py
+${PYSITELIB}/exabgp/vendoring/ipaddress.pyc
+${PYSITELIB}/exabgp/vendoring/ipaddress.pyo
+${PYSITELIB}/exabgp/vendoring/lsprofcalltree.py
+${PYSITELIB}/exabgp/vendoring/lsprofcalltree.pyc
+${PYSITELIB}/exabgp/vendoring/lsprofcalltree.pyo
+${PYSITELIB}/exabgp/vendoring/objgraph.py
+${PYSITELIB}/exabgp/vendoring/objgraph.pyc
+${PYSITELIB}/exabgp/vendoring/objgraph.pyo
+${PYSITELIB}/exabgp/vendoring/ordereddict.py
+${PYSITELIB}/exabgp/vendoring/ordereddict.pyc
+${PYSITELIB}/exabgp/vendoring/ordereddict.pyo
+${PYSITELIB}/exabgp/vendoring/profiler.py
+${PYSITELIB}/exabgp/vendoring/profiler.pyc
+${PYSITELIB}/exabgp/vendoring/profiler.pyo
+${PYSITELIB}/exabgp/vendoring/pyparsing.py
+${PYSITELIB}/exabgp/vendoring/pyparsing.pyc
+${PYSITELIB}/exabgp/vendoring/pyparsing.pyo
+${PYSITELIB}/exabgp/vendoring/six.py
+${PYSITELIB}/exabgp/vendoring/six.pyc
+${PYSITELIB}/exabgp/vendoring/six.pyo
+${PYSITELIB}/exabgp/version.py
+${PYSITELIB}/exabgp/version.pyc
+${PYSITELIB}/exabgp/version.pyo
+man/man1/exabgp.1
+man/man5/exabgp.conf.5
+share/examples/exabgp/api-add-remove.run
+share/examples/exabgp/api-announce.run
+share/examples/exabgp/api-announcement.run
+share/examples/exabgp/api-api.nothing.run
+share/examples/exabgp/api-api.receive.run
+share/examples/exabgp/api-attributes-vpn.run
+share/examples/exabgp/api-attributes.run
+share/examples/exabgp/api-broken-flow.run
+share/examples/exabgp/api-check.run
+share/examples/exabgp/api-eor.run
+share/examples/exabgp/api-fast.run
+share/examples/exabgp/api-flow.run
+share/examples/exabgp/api-manual-eor.run
+share/examples/exabgp/api-multi-neighbor.run
+share/examples/exabgp/api-multisession.run
+share/examples/exabgp/api-nexthop-self.run
+share/examples/exabgp/api-nexthop.run
+share/examples/exabgp/api-no-respawn-1.run
+share/examples/exabgp/api-no-respawn-2.run
+share/examples/exabgp/api-notification.run
+share/examples/exabgp/api-open.run
+share/examples/exabgp/api-reload.run
+share/examples/exabgp/api-teardown.run
+share/examples/exabgp/api-vpls.run
+share/examples/exabgp/api-vpnv4.run
+share/examples/exabgp/dynamic-1.pl
+share/examples/exabgp/dynamic-1.sh
+share/examples/exabgp/exabgp.env
+share/examples/exabgp/stderr-1.py
+share/examples/exabgp/syslog-1.py
+share/examples/exabgp/watchdog-1.pl
+share/examples/exabgp/watchdog-1.sh
+share/examples/exabgp/watchdog.run
+@pkgdir share/exabgp
diff --git a/exabgp4/distinfo b/exabgp4/distinfo
new file mode 100644
index 0000000000..50716e6e03
--- /dev/null
+++ b/exabgp4/distinfo
@@ -0,0 +1,8 @@
+$NetBSD$
+
+SHA1 (exabgp/4.2.11.tar.gz) = 49076db8591cdf58dacaa40bc2e3091934056903
+RMD160 (exabgp/4.2.11.tar.gz) = 58c31f85b47ebac97e354d43fa82fdee34685cb6
+SHA512 (exabgp/4.2.11.tar.gz) = 61c143e90fd81323b03682ad46f2861576ab0328e2030259eff15bb9ef965477c514fb355112cbaf3dc138fb9f5582b6e1e1efb8d0d4313a9b9924ced156a155
+Size (exabgp/4.2.11.tar.gz) = 2931753 bytes
+SHA1 (patch-lib_exabgp_reactor_daemon.py) = cb284bfa0e3263c7c9e71b4c0adf01a25602ad41
+SHA1 (patch-setup.py) = fa9debeac9c2ab0610669244ffdbeeb3c48da264
diff --git a/exabgp4/files/exabgp.env b/exabgp4/files/exabgp.env
new file mode 100644
index 0000000000..c3166af81e
--- /dev/null
+++ b/exabgp4/files/exabgp.env
@@ -0,0 +1,58 @@
+[exabgp.api]
+ack = true
+chunk = 1
+cli = true
+compact = false
+encoder = json
+pipename = 'exabgp'
+respawn = true
+terminate = false
+
+[exabgp.bgp]
+openwait = 60
+
+[exabgp.cache]
+attributes = true
+nexthops = true
+
+[exabgp.daemon]
+daemonize = true
+drop = true
+pid = '/var/run/exabgp/exabgp.pid'
+umask = '0o137'
+user = 'nobody'
+
+[exabgp.log]
+all = false
+configuration = true
+daemon = true
+destination = 'syslog'
+enable = true
+level = WARNING
+message = false
+network = true
+packets = false
+parser = false
+processes = true
+reactor = true
+rib = false
+routes = false
+short = false
+timers = false
+
+[exabgp.pdb]
+enable = false
+
+[exabgp.profile]
+enable = false
+file = ''
+
+[exabgp.reactor]
+speed = 1.0
+
+[exabgp.tcp]
+acl = false
+bind = ''
+delay = 0
+once = false
+port = 179
diff --git a/exabgp4/files/exabgp.sh b/exabgp4/files/exabgp.sh
new file mode 100644
index 0000000000..5566b8949a
--- /dev/null
+++ b/exabgp4/files/exabgp.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# $NetBSD$
+#
+
+# PROVIDE: exabgp4
+# REQUIRE: LOGIN
+
+$_rc_subr_loaded . /etc/rc.subr
+
+name="exabgp"
+rcvar="${name}"
+command="/usr/pkg/bin/${name}"
+required_files="/usr/pkg/etc/exabgp/exabgp.env /usr/pkg/etc/exabgp/exabgp.conf"
+command_args="-e ${required_files}"
+pidfile="/var/run/${name}/${name}.pid"
+command_interpreter="@PYTHONBIN@"
+
+makepipe() {
+	test -p /var/run/exabgp/exabgp.in || mkfifo /var/run/exabgp/exabgp.in
+	test -p /var/run/exabgp/exabgp.out || mkfifo /var/run/exabgp/exabgp.out
+	chown nobody /var/run/exabgp/exabgp.in /var/run/exabgp/exabgp.out
+	chmod 600 /var/run/exabgp/exabgp.in /var/run/exabgp/exabgp.out
+}
+
+cleanpipe() {
+	rm -f /var/run/exabgp/exabgp.in
+	rm -f /var/run/exabgp/exabgp.out
+}
+
+start_precmd=makepipe
+stop_postcmd=cleanpipe
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/exabgp4/patches/patch-lib_exabgp_reactor_daemon.py b/exabgp4/patches/patch-lib_exabgp_reactor_daemon.py
new file mode 100644
index 0000000000..50d2c5bee4
--- /dev/null
+++ b/exabgp4/patches/patch-lib_exabgp_reactor_daemon.py
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Already fixed upstream, but not released
+https://github.com/Exa-Networks/exabgp/commit/b4a7028
+
+--- lib/exabgp/reactor/daemon.py.orig	2021-01-28 18:18:19.554094109 +0000
++++ lib/exabgp/reactor/daemon.py
+@@ -156,7 +156,7 @@ class Daemon(object):
+     def _is_socket(self, fd):
+         try:
+             s = socket.fromfd(fd, socket.AF_INET, socket.SOCK_RAW)
+-        except ValueError:
++        except (OSError, ValueError):
+             # The file descriptor is closed
+             return False
+         try:
diff --git a/exabgp4/patches/patch-setup.py b/exabgp4/patches/patch-setup.py
new file mode 100644
index 0000000000..0794d50a4d
--- /dev/null
+++ b/exabgp4/patches/patch-setup.py
@@ -0,0 +1,15 @@
+$NetBSD$
+
+In NetBSD, it is uncommon to write these files directly to /etc
+
+--- setup.py.orig	2021-01-28 19:05:54.528803756 +0000
++++ setup.py
+@@ -31,7 +31,7 @@ def filesOf(directory):
+ 
+ 
+ data_files = [
+-    ('etc/exabgp/examples', filesOf('etc/exabgp')),
++    ('share/examples/exabgp', filesOf('etc/exabgp')),
+ ]
+ 
+ if platform.system() != 'NetBSD':


Home | Main Index | Thread Index | Old Index