Go to file
Igor Ryzhov ac2cb9bf94 *: rework renaming the default VRF
Currently, it is possible to rename the default VRF either by passing
`-o` option to zebra or by creating a file in `/var/run/netns` and
binding it to `/proc/self/ns/net`.

In both cases, only zebra knows about the rename and other daemons learn
about it only after they connect to zebra. This is a problem, because
daemons may read their config before they connect to zebra. To handle
this rename after the config is read, we have some special code in every
single daemon, which is not very bad but not desirable in my opinion.
But things are getting worse when we need to handle this in northbound
layer as we have to manually rewrite the config nodes. This approach is
already hacky, but still works as every daemon handles its own NB
structures. But it is completely incompatible with the central
management daemon architecture we are aiming for, as mgmtd doesn't even
have a connection with zebra to learn from it. And it shouldn't have it,
because operational state changes should never affect configuration.

To solve the problem and simplify the code, I propose to expand the `-o`
option to all daemons. By using the startup option, we let daemons know
about the rename before they read their configs so we don't need any
special code to deal with it. There's an easy way to pass the option to
all daemons by using `frr_global_options` variable.

Unfortunately, the second way of renaming by creating a file in
`/var/run/netns` is incompatible with the new mgmtd architecture.
Theoretically, we could force daemons to read their configs only after
they connect to zebra, but it means adding even more code to handle a
very specific use-case. And anyway this won't work for mgmtd as it
doesn't have a connection with zebra. So I had to remove this option.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-12-21 22:09:29 +03:00
.github .github: improve bug report template 2020-10-20 16:12:03 -04:00
alpine alpine: fix path for daemons file install 2021-08-30 15:21:59 -04:00
babeld Merge pull request #10032 from opensourcerouting/build-fix-20211111 2021-11-13 10:10:59 -05:00
bfdd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
bgpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
debian debian: adjust the changelog for the dev branch 2021-11-08 11:54:42 -06:00
doc *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
docker docker: remove grpc from Travis CI 2021-10-01 14:04:42 +03:00
eigrpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
fpm build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
gdb *: Cleanup some documentation from quagga->frr 2021-11-11 14:41:27 -05:00
grpc build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
include include, zebra: Add recent nexthop.h 2021-10-25 14:11:37 -04:00
isisd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
ldpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
lib *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
m4 grpc: improve checks for GRPC C++ requirements 2021-05-22 00:01:06 +00:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
ospf6d *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
ospfclient build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
ospfd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
pathd *: Remove redundand braces for single statement blocks 2021-11-27 11:20:59 +02:00
pbrd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
pceplib pceplib: fix style issues 2021-12-06 00:09:13 -05:00
pimd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python isisd: fix redistribute CLI 2021-10-05 17:38:21 +03:00
qpb build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
redhat redhat: keep check for zebra.conf to check for per daemon configs 2021-11-17 11:35:23 +01:00
ripd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
ripngd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
sharpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
snapcraft snapcraft: add missing dependency 2021-08-23 15:08:05 +03:00
staticd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
tests *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
tools Merge pull request #9937 from Jafaral/rel-script 2021-12-13 12:26:22 -05:00
vrrpd *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
vtysh vtysh: fix duplicated output of key chain configuration 2021-12-03 18:52:42 +03:00
watchfrr *: Convert quagga_signal_X to frr_signal_X 2021-11-11 14:41:27 -05:00
yang Merge pull request #10110 from idryzhov/if-yang-remove-vrf 2021-12-02 08:33:05 -05:00
zebra *: rework renaming the default VRF 2021-12-21 22:09:29 +03:00
.clang-format lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04: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 Merge pull request #9798 from abuibrahim/master 2021-11-30 00:17:28 -05: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 build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
README.md doc: Update Documentation to note Solaris Unsupported status 2020-09-21 10:02:20 -04: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