2002-12-13 21:15:29 +01:00
|
|
|
## Process this file with automake to produce Makefile.in.
|
|
|
|
|
2017-05-24 17:48:12 +02:00
|
|
|
AUTOMAKE_OPTIONS = subdir-objects 1.12
|
|
|
|
include common.am
|
|
|
|
|
2018-06-08 18:39:31 +02:00
|
|
|
AM_CPPFLAGS += -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \
|
2017-09-21 03:12:56 +02:00
|
|
|
-I$(top_builddir) -I$(top_builddir)/include -I$(top_builddir)/lib
|
2018-07-10 22:01:04 +02:00
|
|
|
DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" -DCONFDATE=$(CONFDATE)
|
2017-07-22 19:01:46 +02:00
|
|
|
LIBCAP = @LIBCAP@
|
2017-05-24 17:48:12 +02:00
|
|
|
|
|
|
|
EXTRA_DIST =
|
|
|
|
BUILT_SOURCES =
|
2017-07-28 14:40:39 +02:00
|
|
|
CLEANFILES =
|
2017-05-24 17:48:12 +02:00
|
|
|
|
2017-07-22 19:01:46 +02:00
|
|
|
examplesdir = $(exampledir)
|
|
|
|
|
2017-05-24 17:48:12 +02:00
|
|
|
bin_PROGRAMS =
|
|
|
|
sbin_PROGRAMS =
|
2017-08-02 10:54:27 +02:00
|
|
|
sbin_SCRIPTS =
|
2017-05-24 17:48:12 +02:00
|
|
|
noinst_PROGRAMS =
|
|
|
|
noinst_HEADERS =
|
|
|
|
noinst_LIBRARIES =
|
|
|
|
lib_LTLIBRARIES =
|
2017-07-22 19:01:46 +02:00
|
|
|
module_LTLIBRARIES =
|
2017-05-24 17:48:12 +02:00
|
|
|
pkginclude_HEADERS =
|
2017-08-04 10:36:34 +02:00
|
|
|
nodist_pkginclude_HEADERS =
|
2017-07-22 19:01:46 +02:00
|
|
|
dist_examples_DATA =
|
2017-05-24 17:48:12 +02:00
|
|
|
|
2017-08-23 15:45:05 +02:00
|
|
|
## libtool, the self-made GNU scourge
|
|
|
|
## ... this should fix relinking
|
|
|
|
## ... and AUTOMAKE_DUMMY is needed to prevent automake from treating this
|
|
|
|
## as overriding the normal targets...
|
|
|
|
$(AUTOMAKE_DUMMY)install-moduleLTLIBRARIES: install-libLTLIBRARIES
|
|
|
|
$(AUTOMAKE_DUMMY)install-binPROGRAMS: install-libLTLIBRARIES
|
|
|
|
$(AUTOMAKE_DUMMY)install-sbinPROGRAMS: install-libLTLIBRARIES
|
|
|
|
|
2017-09-21 03:12:56 +02:00
|
|
|
include include/subdir.am
|
2017-05-24 17:48:12 +02:00
|
|
|
include lib/subdir.am
|
2017-07-22 19:01:46 +02:00
|
|
|
include zebra/subdir.am
|
2017-08-02 10:54:27 +02:00
|
|
|
include watchfrr/subdir.am
|
2017-07-28 14:40:39 +02:00
|
|
|
include qpb/subdir.am
|
|
|
|
include fpm/subdir.am
|
2017-08-02 10:54:27 +02:00
|
|
|
include tools/subdir.am
|
2017-05-24 17:48:12 +02:00
|
|
|
|
2017-08-02 09:46:45 +02:00
|
|
|
include ripd/subdir.am
|
|
|
|
include ripngd/subdir.am
|
2017-08-02 10:29:21 +02:00
|
|
|
include ospfd/subdir.am
|
|
|
|
include ospf6d/subdir.am
|
|
|
|
include ospfclient/subdir.am
|
2017-08-03 13:42:11 +02:00
|
|
|
include isisd/subdir.am
|
2017-08-04 09:34:44 +02:00
|
|
|
include nhrpd/subdir.am
|
2017-08-04 16:13:29 +02:00
|
|
|
include ldpd/subdir.am
|
2017-08-04 16:49:15 +02:00
|
|
|
include babeld/subdir.am
|
|
|
|
include eigrpd/subdir.am
|
2017-11-10 18:55:16 +01:00
|
|
|
include sharpd/subdir.am
|
2017-09-07 16:14:50 +02:00
|
|
|
include pimd/subdir.am
|
pbrd: Add PBR to FRR
This is an implementation of PBR for FRR.
This implemenation uses a combination of rules and
tables to determine how packets will flow.
PBR introduces a new concept of 'nexthop-groups' to
specify a group of nexthops that will be used for
ecmp. Nexthop-groups are specified on the cli via:
nexthop-group DONNA
nexthop 192.168.208.1
nexthop 192.168.209.1
nexthop 192.168.210.1
!
PBR sees the nexthop-group and installs these as a default
route with these nexthops starting at table 10000
robot# show pbr nexthop-groups
Nexthop-Group: DONNA Table: 10001 Valid: 1 Installed: 1
Valid: 1 nexthop 192.168.209.1
Valid: 1 nexthop 192.168.210.1
Valid: 1 nexthop 192.168.208.1
I have also introduced the ability to specify a table
in a 'show ip route table XXX' to see the specified tables.
robot# show ip route table 10001
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR,
> - selected route, * - FIB route
F>* 0.0.0.0/0 [0/0] via 192.168.208.1, enp0s8, 00:14:25
* via 192.168.209.1, enp0s9, 00:14:25
* via 192.168.210.1, enp0s10, 00:14:25
PBR tracks PBR-MAPS via the pbr-map command:
!
pbr-map EVA seq 10
match src-ip 4.3.4.0/24
set nexthop-group DONNA
!
pbr-map EVA seq 20
match dst-ip 4.3.5.0/24
set nexthop-group DONNA
!
pbr-maps can have 'match src-ip <prefix>' and 'match dst-ip <prefix>'
to affect decisions about incoming packets. Additionally if you
only have one nexthop to use for a pbr-map you do not need
to setup a nexthop-group and can specify 'set nexthop XXXX'.
To apply the pbr-map to an incoming interface you do this:
interface enp0s10
pbr-policy EVA
!
When a pbr-map is applied to interfaces it can be installed
into the kernel as a rule:
[sharpd@robot frr1]$ ip rule show
0: from all lookup local
309: from 4.3.4.0/24 iif enp0s10 lookup 10001
319: from all to 4.3.5.0/24 iif enp0s10 lookup 10001
1000: from all lookup [l3mdev-table]
32766: from all lookup main
32767: from all lookup default
[sharpd@robot frr1]$ ip route show table 10001
default proto pbr metric 20
nexthop via 192.168.208.1 dev enp0s8 weight 1
nexthop via 192.168.209.1 dev enp0s9 weight 1
nexthop via 192.168.210.1 dev enp0s10 weight 1
The linux kernel now will use the rules and tables to properly
apply these policies.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-01-23 19:11:36 +01:00
|
|
|
include pbrd/subdir.am
|
2018-05-08 13:58:32 +02:00
|
|
|
include staticd/subdir.am
|
2017-08-02 09:46:45 +02:00
|
|
|
|
2017-07-28 14:40:39 +02:00
|
|
|
SUBDIRS = . @LIBRFP@ @RFPTEST@ \
|
2017-08-04 16:13:29 +02:00
|
|
|
@BGPD@ \
|
2017-08-02 10:54:27 +02:00
|
|
|
@VTYSH@ @DOC@ \
|
|
|
|
@SOLARIS@ tests
|
2003-06-04 12:19:12 +02:00
|
|
|
|
2017-08-04 16:13:29 +02:00
|
|
|
DIST_SUBDIRS = . bgpd \
|
2017-08-02 10:54:27 +02:00
|
|
|
vtysh doc tests \
|
2017-09-07 16:14:50 +02:00
|
|
|
solaris bgpd/rfp-example/librfp \
|
2017-08-02 10:54:27 +02:00
|
|
|
bgpd/rfp-example/rfptest \
|
2017-10-19 04:01:17 +02:00
|
|
|
debianpkg \
|
2017-05-11 15:36:04 +02:00
|
|
|
# end
|
2002-12-13 21:15:29 +01:00
|
|
|
|
2017-07-31 22:05:56 +02:00
|
|
|
if PKGSRC
|
|
|
|
rcdir=@pkgsrcrcdir@
|
|
|
|
rc_SCRIPTS = \
|
|
|
|
pkgsrc/bgpd.sh \
|
|
|
|
pkgsrc/ospf6d.sh \
|
|
|
|
pkgsrc/ospfd.sh \
|
|
|
|
pkgsrc/ripd.sh \
|
|
|
|
pkgsrc/ripngd.sh \
|
|
|
|
pkgsrc/zebra.sh \
|
|
|
|
# end
|
|
|
|
endif
|
|
|
|
|
|
|
|
EXTRA_DIST += \
|
|
|
|
aclocal.m4 \
|
|
|
|
m4/README.txt \
|
|
|
|
\
|
|
|
|
python/clidef.py \
|
|
|
|
python/clippy/__init__.py \
|
|
|
|
\
|
|
|
|
redhat/frr.init \
|
|
|
|
redhat/frr.service \
|
|
|
|
redhat/daemons \
|
|
|
|
redhat/frr.logrotate \
|
|
|
|
redhat/frr.pam \
|
|
|
|
redhat/frr.spec \
|
|
|
|
redhat/README.rpm_build.md \
|
|
|
|
\
|
|
|
|
snapcraft/snapcraft.yaml \
|
|
|
|
snapcraft/README.snap_build.md \
|
|
|
|
snapcraft/README.usage.md \
|
|
|
|
snapcraft/extra_version_info.txt \
|
|
|
|
snapcraft/scripts \
|
|
|
|
snapcraft/defaults \
|
|
|
|
snapcraft/helpers \
|
|
|
|
snapcraft/snap \
|
|
|
|
\
|
|
|
|
vtysh/Makefile.am \
|
|
|
|
vtysh/Makefile.in \
|
|
|
|
# end
|
2004-08-19 06:41:21 +02:00
|
|
|
|
2004-09-13 06:57:03 +02:00
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
2017-03-09 19:00:19 +01:00
|
|
|
|
2017-05-24 17:48:12 +02:00
|
|
|
noinst_HEADERS += defaults.h
|
2018-03-06 19:04:04 +01:00
|
|
|
|
|
|
|
indent:
|
|
|
|
tools/indent.py `find sharpd bgpd eigrpd include isisd lib nhrpd ospf6d ospfd pimd qpb ripd vtysh zebra -name '*.[ch]' | grep -v include/linux`
|
2018-06-14 15:44:38 +02:00
|
|
|
|
|
|
|
if HAVE_GCOV
|
|
|
|
|
|
|
|
coverage: check
|
|
|
|
@ find . -name '*.o' -exec gcov {} \;
|
|
|
|
|
|
|
|
yorn:
|
|
|
|
@ echo "OK to upload coverage to https://coverage.io [y/N]:"
|
|
|
|
@ read yn; test "$$yn" = "y"
|
|
|
|
|
|
|
|
upload-check-coverage:
|
|
|
|
@ if [ "x${COMMIT}" = "x" ]; then echo "COMMIT required"; exit 1; fi
|
|
|
|
@ if [ "x${TOKEN}" = "x" ]; then echo "TOKEN required"; exit 1; fi
|
|
|
|
curl -s https://codecov.io/bash | bash -s - -C ${COMMIT} -t ${TOKEN}
|
|
|
|
|
|
|
|
force-check-coverage: coverage upload-check-coverage
|
|
|
|
|
|
|
|
check-coverage: coverage yorn upload-check-coverage
|
|
|
|
|
|
|
|
endif
|