Go to file
Ryoga Saito dd2d28ea99 bgpd: Skip RD match if ACCEPT_OWN is not enabled
RFC7611 introduces new extended community ACCEPT_OWN and is already
implemented for FRR in the previous PR. However, this PR broke
compatibility about importing VPN routes.

Let's consider the following situation. There are 2 routers and these
routers connects with iBGP session. These routers have two VRF, vrf10
and vrf20, and RD 0:10, 0:20 is configured as the route distinguisher
of vrf10 and vrf20 respectively.

    +- R1 --------+    +- R2 --------+
    | +---------+ |    | +---------+ |
    | |  VRF10  | |    | |  VRF10  | |
    | | RD 0:10 +--------+ RD 0:10 | |
    | +---------+ |    | +---------+ |
    | +---------+ |    | +---------+ |
    | |  VRF20  +--------+  VRF20  | |
    | | RD 0:20 | |    | | RD 0:20 | |
    | +---------+ |    | +---------+ |
    +-------------+    +-------------+

In this situation, the VPN routes from R1's VRF10 should be imported to
R2's VRF10 and the VPN routes from R2's VRF10 should be imported to R2's
VRF20. However, the current implementation of ACCEPT_OWN will always
reject routes if the RD of VPN routes are matched with the RD of VRF.

Similar issues will happen in local VRF2VRF route leaks. In such cases,
the route reaked from VRF10 should be imported to VRF20. However, the
current implementation of ACCEPT_OWN will not permit them.

    +- R1 ---------------------+
    |      +------------+      |
    | +----v----+  +----v----+ |
    | |  VRF10  |  |  VRF20  | |
    | | RD 0:10 |  | RD 0:10 | |
    | +---------+  +---------+ |
    +--------------------------+

So, this commit add additional condition in RD match. If the route
doesn't have ACCEPT_OWN extended community, source VRF check will be
skipped.

[RFC7611]: https://datatracker.ietf.org/doc/html/rfc7611

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
2023-01-20 15:28:39 +09:00
.github github: Drop temporary docker-stable github action 2023-01-11 21:50:22 +02:00
alpine docker,alpine: Remove isl from dependencies 2023-01-06 23:48:23 +09:00
babeld build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
bfdd bfdd: validate incoming control message length 2023-01-10 08:03:09 -05:00
bgpd bgpd: Skip RD match if ACCEPT_OWN is not enabled 2023-01-20 15:28:39 +09:00
debian debian, redhat: updating changelog for new release 2022-12-20 09:53:59 -06:00
doc Merge pull request #12449 from chiragshah6/mdev1 2023-01-17 18:25:01 +02:00
docker docker: Use Alpine 3.17 as base image 2022-12-02 15:42:00 +02:00
eigrpd build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
fpm build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
gdb gdb: Add a macro to walk memory allocations 2022-08-24 07:13:29 -04:00
grpc build: fix gRPC build dependencies 2022-10-26 17:12:34 +01:00
include include: add pkt_cls.h to automake headers 2022-11-22 22:35:34 +08:00
isisd isisd: Fix sadj memory leak 2022-12-09 07:44:26 -05:00
ldpd ldpd: Clean up use after free in shutdown 2022-12-05 08:49:57 -05:00
lib Merge pull request #12657 from anlancs/fix/lib-debug-empty-ip 2023-01-19 09:12:04 +02:00
m4 build: fix sed regex in Lua macro 2022-12-08 12:39:17 +01:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
ospf6d Merge pull request #12540 from manojvn/489527 2022-12-21 08:20:31 -05:00
ospfclient ospfd, ospfclient: Do not just include .c files in another .c 2022-12-05 11:55:14 -05:00
ospfd ospfd: report the router IP with Opaque capability mismatch 2023-01-06 09:27:18 -06:00
pathd pathd: fix SA warning in path_pcep_config 2022-12-19 11:36:03 -05:00
pbrd *: Add ability for daemons to notice resilience changes 2022-11-04 13:34:27 -04:00
pceplib pceplib: Fix clang-16 not happy with build 2022-10-25 20:04:43 -04:00
pimd Merge pull request #12521 from patrasar/issue_11347_fix 2023-01-11 12:05:19 +02:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: hide inet_ntoa from frrbot 2022-10-28 11:18:06 +01:00
qpb qpb: Tell coverity the actual size we are copying 2022-08-02 15:34:43 -04:00
redhat debian, redhat: updating changelog for new release 2022-12-20 09:53:59 -06:00
ripd build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
ripngd build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
sharpd sharpd: traffic control PoC 2022-11-22 22:35:35 +08:00
snapcraft snapcraft: Add pim6 daemon for PIM IPv6 to snap package 2022-11-19 12:52:36 +01:00
staticd staticd: add debug static bfd command 2023-01-13 15:32:12 -03:00
tests tests: Add test to check importing routes to VRF 2023-01-20 15:28:35 +09:00
tools tools: Add missing daemons 2023-01-15 10:57:53 +08:00
vrrpd vrrpd: add IPv4 pseudoheader option for VRRPv3 2022-11-25 16:21:59 +08:00
vtysh vtysh: Remove double retrieve of env VTYSH_HISTFILE 2022-12-21 08:04:34 -05:00
watchfrr build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
yang yang: static route BFD monitoring 2023-01-13 15:32:12 -03:00
zebra Merge pull request #12659 from opensourcerouting/fpm-cs 2023-01-18 20:20:45 -05:00
.clang-format lib: add _last and _prev on typesafe RB/DLIST 2022-03-12 13:23:36 +01:00
.dir-locals.el tests: remove python format block from dir-locals 2021-09-13 10:04:29 -04:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore *: Add some missed make check generated files in .gitignore 2021-09-16 08:13:17 -04:00
.pylintrc tests: micronet: update infra 2021-09-04 09:04:46 -04:00
.travis.yml lib: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
bootstrap.sh build: turn on automake warnings (& symlinks) 2021-04-21 15:42:37 +02:00
buildtest.sh build: remove --enable-exampledir 2021-06-24 16:42:58 +02:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac build: pim6d is Linux only 2022-12-08 12:45:38 +01:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
Makefile.am packaging: Reuse frr.logrotate for Debian and Redhat builds 2022-11-08 11:17:56 +02:00
README.md doc: Fix the link that points to Slack invitation in README 2022-03-24 13:13:37 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
version.h build: make builddir include path consistent 2021-04-21 15:42:33 +02:00

Icon

FRRouting

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD and supports all modern CPU architectures.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM-SM/MSDP
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

For source tarballs, see the releases page.

For Debian and its derivatives, use the APT repository at https://deb.frrouting.org/.

Instructions on building and installing from source for supported platforms may be found in the developer docs.

Once installed, please refer to the user guide for instructions on use.

Community

The FRRouting email list server is located here and offers the following public lists:

Topic List
Development dev@lists.frrouting.org
Users & Operators frog@lists.frrouting.org
Announcements announce@lists.frrouting.org

For chat, we currently use Slack. You can join by clicking the "Slack" link under the Participate section of our website.

Contributing

FRR maintains developer's documentation which contains the project workflow and expectations for contributors. Some technical documentation on project internals is also available.

We welcome and appreciate all contributions, no matter how small!

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org