diff --git a/exabgp4/DESCR b/exabgp4/DESCR new file mode 100644 index 00000000000..e08c5d59e94 --- /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 00000000000..587f92d743c --- /dev/null +++ b/exabgp4/Makefile @@ -0,0 +1,91 @@ +# $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= yorn@uninett.no +HOMEPAGE= https://github.com/Exa-Networks/exabgp/ +COMMENT= Userspace BGP daemon written in python +LICENSE= modified-bsd + +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 + +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 + +CHECK_PORTABILITY_SKIP+= dev/release/google + +PYTHON_VERSIONS_ACCEPTED= 39 38 37 36 + +USE_LANGUAGES= # none + +RCD_SCRIPTS+= exabgp4 + +CONF_FILES+= ${PREFIX}/share/examples/exabgp/exabgp.env ${PREFIX}/etc/exabgp/exabgp.env + +INSTALLATION_DIRS+= share/exabgp bin +INSTALLATION_DIRS+= ${PKGMANDIR}/man1 ${PKGMANDIR}/man5 +INSTALLATION_DIRS+= etc/exabgp + +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 + +pre-install: + find ${WRKDIR} -name "*.orig" | xargs rm -f + +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 00000000000..fd6e3c09cdb --- /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 00000000000..50716e6e039 --- /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 00000000000..c3166af81ec --- /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/exabgp4.sh b/exabgp4/files/exabgp4.sh new file mode 100644 index 00000000000..48075d42b98 --- /dev/null +++ b/exabgp4/files/exabgp4.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# $NetBSD$ +# + +# PROVIDE: exabgp4 +# REQUIRE: LOGIN + +$_rc_subr_loaded . /etc/rc.subr + +name="exabgp" +rcvar="exabgp4" +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="/usr/pkg/bin/python3.8" + +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 00000000000..50d2c5bee42 --- /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 00000000000..0794d50a4d9 --- /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':