Go to file
Renato Westphal 88a7d121d1 lib: fix NETCONF network-wide transactions for confd and sysrepo
ConfD and Sysrepo implement configuration transactions using a
two-phase commit protocol (prepare + abort/apply). For network-wide
transactions to work, ConfD and Sysrepo move to the second phase of
the commit protocol only after receiving the results of the first
phase from all devices involved in the transaction. If all devices
succeed in the 'prepare' phase, then all of them move to the 'apply'
phase and the transaction is committed. On the other hand, if any
device fails in the 'prepare' phase, all of them move to 'abort'
phase and the transaction is aborted.

The confd and sysrepo plugins were implementing the full
two-phase commit protocol upon receiving a request to validate
the configuration changes and allocate all resources required to
apply them (first phase). The notifications to abort or apply the
changes (second phase) were being ignored since everything was being
done in the first phase for simplicity. This wasn't a problem for
single-device transactions, but it is for transactions involving
multiple devices.  Rework the code a bit to do things properly and
fix this problem.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-07 16:01:34 -02:00
.github .github: remove style reminder from PR template 2018-10-28 02:14:40 +00:00
alpine alpine: add unit tests to build 2018-06-14 10:27:24 -07:00
babeld *: Replace zclient_new with zclient_new_notify 2018-11-12 09:16:23 -05:00
bfdd bfdd: fix multihop on FreeBSD 2018-11-30 15:02:23 -02:00
bgpd Merge pull request #3438 from opensourcerouting/bgp-rfapi-default-value 2018-12-06 19:32:07 -05:00
debianpkg debianpkg: fix lintian warn: No need to keep .la libs for packages 2018-10-27 16:16:12 -02:00
doc doc: add ldp information over transport connection 2018-11-28 14:26:15 +01:00
docker unit tests: support code coverage instrumentation and reports 2018-07-04 11:06:11 -07:00
eigrpd *: Replace zclient_new with zclient_new_notify 2018-11-12 09:16:23 -05:00
fpm build: clean up protobuf build integration 2018-09-08 21:30:42 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
include include: add netlink.h to our build system 2018-06-21 08:07:30 -04:00
isisd isisd: trigger hellos on adjacency state change 2018-12-04 16:13:24 +01:00
ldpd *: remove the configuration lock from all daemons 2018-11-26 16:47:35 -02:00
lib lib: fix NETCONF network-wide transactions for confd and sysrepo 2018-12-07 16:01:34 -02:00
m4 *: spelchek 2018-10-25 20:10:57 +02:00
nhrpd *: Replace zclient_new with zclient_new_notify 2018-11-12 09:16:23 -05:00
ospf6d ospf6d: abr summary advertise best route 2018-11-16 11:37:17 -08:00
ospfclient build: make rfptest and ospfclient "noinst" 2018-10-28 19:48:55 +01:00
ospfd Revert "isisd lib ospfd pbrd python: fix empty init" 2018-12-01 16:49:45 +01:00
pbrd Merge pull request #3402 from pacovn/Coverity_1475198_1475199 2018-12-03 18:17:59 -02:00
pimd pimd: When we fail to initiate ifchannel backout work done 2018-11-15 19:28:43 -05:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
ports *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python Revert "isisd lib ospfd pbrd python: fix empty init" 2018-12-01 16:49:45 +01:00
qpb *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
redhat Merge pull request #2705 from opensourcerouting/northbound-yang-v2 2018-10-31 18:50:45 -04:00
ripd Merge pull request #3378 from opensourcerouting/remove-config-lock 2018-11-30 18:50:49 -05:00
ripngd *: Replace zclient_new with zclient_new_notify 2018-11-12 09:16:23 -05:00
sharpd sharpd: return check (Coverity 1475198) 2018-12-03 16:36:34 +01:00
snapcraft *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
solaris *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
staticd staticd: fix null0 routes (again) 2018-11-22 04:21:54 +00:00
tests Merge pull request #3437 from opensourcerouting/bugfix/topotests-use-copy 2018-12-06 19:31:26 -05:00
tools lib, tests: major rework in the operational-data callbacks 2018-11-26 18:28:53 -02:00
vtysh vtysh: Don't attempt to reconnect the non-instanced ospf process 2018-11-21 16:15:38 -05:00
watchfrr watchfrr, lib: cleanup & delay detaching 2018-10-02 12:27:47 +02:00
yang lib, tests: major rework in the operational-data callbacks 2018-11-26 18:28:53 -02:00
zebra zebra: don't log errors on unsupported medias 2018-12-05 17:22:56 -02:00
.clang-format lib: introduce new northbound API 2018-10-27 16:16:12 -02:00
.dir-locals.el .dir-locals.el: show trailing whitespace 2017-11-07 12:05:09 -05:00
.dockerignore tests/topotests: Change docker build context 2018-12-01 16:54:58 +01:00
.gitignore frr: ignore libtool.orig 2018-10-28 02:25:42 +00:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac build: fix detection of the confd binary 2018-11-26 13:07:42 -02: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
defaults.h *: reindent 2017-07-17 14:04:07 +02:00
Makefile.am topotests: Adapt docker changes for integrated tests 2018-11-29 16:51:27 +01:00
README.md frr: improve README 2018-09-10 15:30:22 +00:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00

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 as well as Solaris 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
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

Packages are available for various distributions on our releases page.

Snaps are also available here.

Instructions on building and installing from source for supported platforms may be found here.

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. Please email the mailing list to request an invite as we do not issue automatic invites.

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