Go to file
Jafar Al-Gharaibeh 2e7e3f8a70 debian, redhat: updating changelog for new release
8.4 Release Overview

- New BGP [command](https://docs.frrouting.org/en/latest/bgp.html#clicmd-neighbor-A.B.C.D-X-X-X-X-WORD-soo-EXTCOMMUNITY) (`neighbor PEER soo`) to configure SoO to prevent routing loops and suboptimal routing on dual-homed sites.
- Command `debug bgp allow-martian` replaced to `bgp allow-martian-nexthop` because previously we allowed using martian next-hops when debug is turned on.
- Implement `BGP Prefix Origin Validation State Extended Community` [rfc8097](https://datatracker.ietf.org/doc/rfc8097/)
- Implement `Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages` [rfc9234](https://datatracker.ietf.org/doc/rfc9234/)
- BMP L3VPN support
- PIMv6 support
- MLD support
- New [command](https://docs.frrouting.org/en/latest/basic.html#clicmd-allow-reserved-ranges) to enable using reserved IPv4 ranges as normal addresses for BGP next-hops, interface addresses, etc.
- As usual, lots of bugs and memory leaks were fixed \m/

Changelog
---------

**babeld**
  - Ignore Sub-TLV's with mandatory bit set
  - Ignore unicast Hello's

**bfdd**
  - Add IPv4 BFD Echo support
  - Add RTT to BFD IPv4 Echo packet processing
  - Allow L3 VRF BFD sessions without UDP leaking

**bgpd**
  - Add `mpls bgp forwarding` to ease MPLS-VPN EBGP peering
  - Add `bgp allow-martian-nexthop` command (remove `debug bgp allow-martian`)
  - Add `neighbor soo` command
  - Add `no rpki` command
  - Add `show bgp access-list` command to filter routes by access-list
  - Implement [rfc8097](https://datatracker.ietf.org/doc/rfc8097/)
  - Implement [rfc9234](https://datatracker.ietf.org/doc/rfc9234/)
  - Add resolution for L3VPN traffic over GRE interfaces
  - Allow setting custom port for BGP unnumbered peers
  - Allow statistics gathering to give more data about prefix lengths
  - Apply conditional advertisements policy to update-group
  - Associate appropriate family for redistributed connected addresses
  - Avoid notify race between io and main pthreads
  - Call a hook when as-path filter is replaced
  - Cleanup memory leaks associated with t_deferral_timer
  - Do not check if the whole as-path has target asn when using as-override
  - Do not print new line for EVPN CLI outputs if it's a JSON
  - Do not show polling_period default value in CLI for RPKI
  - Don't advertise conditionally withdrawn routes
  - Drop SSH public key for RPKI CLI option
  - Fix `show bgp nexthop a.b.c.d`
  - Fix for `aggregate-address summary-only matching-med-only`
  - Fix inconsistencies with default-originate route-map
  - Fix memory leak for `as-override`
  - Fix memory leak for `set as-path replace` route-map command
  - Fix memory leak for community alias
  - Fix memory leak for community stuff
  - Fix memory leak in SRv6 locator
  - Fix memory leak when an SRv6 sid is removed
  - Fix memory leak when setting [l]community at the egress
  - Fix route-map update and delete route-map
  - Fix `show bgp l2vpn evpn route rd` crash
  - Fix the wrong next-hop BGP struct for next-hop validation
  - Fixed BMP VPNv4 monitoring are withdrawn instead of updates
  - Fixup PBR rule changes that were missed
  - Fixup some MAC address token CLI syntax
  - Free ecommunity before returning on warning/error
  - Free memory for as-path filter if regexp is wrong
  - Free memory for BMP listeners when deleting BGP instance
  - Generate RPKI CLI config even if no cache servers are configured
  - Handle origin validation state extended community via route-map match
  - Handle route-refresh requests received before EOR
  - Implement retain route-target all behavior
  - Improve labelpool performance at scale
  - Inconsistencies in snt counters with default-originate
  - Prevent memory leak of the listener on shutdown
  - Print peer's hostname for BGP (filtering) messages
  - Print source VRF name when leaking to another VRF
  - Release RCU lock in BGP keepalive pthread
  - Reset BGP sessions when changing the port
  - Send route updates when modifying access/aspath/prefix lists
  - Set TTL for iBGP/eBGP by checking only if generic TTL security applied
  - Show cache server preference in `show rpki cache-server` output
  - Show extended communities memory consumption
  - Show TTL value unconditionally for neighbors
  - Start conditional advertisement timer instantly
  - Stop conditional advertisements thread when terminating
  - Stop LLGR thread when deleting a peer and/or gr flags changed
  - Treat as withdraw if we receive as path with as_set / as_confed_set
  - When specifying listen address for BGP we shouldn't imply no-fib flag
  - Withdraw implicitly old paths from VRFs when import/export list changes
  - Ensure that bgp open message stream has enough data to read
  - Notify BGP conditional advertisement thread when the peer goes down

**bmp**
  - Add an interface source to BMP connect command
  - Add L3VPN support

**eigrpd**
  - VRF variable name hides a parameter of the same name

**fabricd**
  - Turn off excessive logging when peering will not come up

**isisd**
  - Ensure rcap is freed in error case
  - Fix crash with xfrm interface type
  - Fix memory leak on shutdown with prefix lists
  - Fix prefix-sid last-hop-behavior

**ldpd**
  - Check if the thread is scheduled before calling for remained time

**lib**
  - Abstract usage of '%pnhs' so that next-hop groups can use it too
  - Add errno details to the sockopt_reuseaddr API
  - Add sys_rawio to the capabilities definitions
  - Allow downgrade of all caps when none are specified
  - Allow using ipv4 (class e) reserved block if enabled
  - Check hostname in resolver_resolve
  - Cleanup red-herring memleaks in the parent of daemonizing fork
  - Ensure ls_msg2edge does not use memory after freeing
  - Fix `show route-map name json` command and memory leak
  - Fix memory leak in `zclient_send_localsid()`
  - Fix skip of every other plist deletion
  - Fixup workqueue.c to use the proper thread.h semantics
  - Function `crypt` does not need to be declared mid function
  - Increase next-hop flags size to 16 bits
  - Prevent uninitialized usage of data
  - Remove usage of inet_ntop in lib/sockopt.c
  - Require at least 2.1.42 version of sysrepo when compiling
  - Return 0 as the remaining msec if the thread is not scheduled
  - stream_dup memory alloc cannot fail
  - Update sysrepo code with the latest API changes
  - Use pi4 instead of inet_ntop in sockopt.c

**nhrpd**
  - Use frr_weak_random()
  - Use nhrp_interface_update_nbma when source VRF was changed

**ospf6d**
  - Don't remove the summary route if it is a range
  - Ensure that ospf6d does not memcpy beyond the end of the data
  - Fix missing cost change
  - Permit route delete without next-hops
  - Remove ospf6enabled from JSON output

**ospfd**
  - Add how many packets the interface has queued to send
  - Add router-id support to OSPF API
  - Added CLIs to change default timers for lsa refresh and maxage remove delay.
  - Adding per neighbor JSON details to gr helper detail command
  - Crash when router acts as gr helper upon a topo change
  - Fix `show ip ospf neighbour <nbrid>` command
  - Increase packets sent at one time in ospf_write
  - Refactor fifo_flush for the interface
  - Remove deprecated command `graceful-restart helper-only`
  - When a neighbor goes down clear the oi->obuf if we can
  - Catch and report too small LSAs
  - Remove assert on zero length LSA - which is permitted by spec
  - Fix bug where acks were not be generated to incoming P2P/P2MP neighbors

**pathd**
  - `no mpls-te on` command was not working
  - Add a zebra stop handler
  - Change the vty output, when no ted is enabled on pathd
  - Ensure the path is free'd after we no longer need it
  - Nai adjacency fix query type f for IPv5

pim6d
  - (*,g) mroutes not learnt after pim6d daemon restart
  - Lots of CLI changes regarding MLD
  - Lots of CLI changes regarding PIMv6
  - Clear interface stats on interface shutdown
  - Disable pim6d compilation by default
  - Don't enable MLD on pimreg interface
  - Fix the code for MLD in the show pim state command
  - mroute stuck in register state, multicast traffic getting drops
  - Register message getting dropped in the source node, mroute stuck in regj
  - Send register msg with IPv6 global address
  - Update last_member_query_interval and last_member_query_count
  - Use ttable for displaying show commands
  - Deleting the memory malloced for JSON
  - Adding JSON support for show ipv6 next-hop
  - Send register msg via register socket
  - Change the show running commands based on the address family
  - Set rp to true if the address matches, ignore prefix-length

**pimd**
  - Allow v6 to do non-integrated configuration
  - Assign a vty port value for v6
  - Cleanup rpf lookup debug to help us figure out what is going on
  - Correct the order of show JSON for interface traffic
  - During prune pending, behave as noinfo state
  - Fix invalid memory access join_timer_stop
  - Fix memleak in bfd profile
  - Fix PIM interface deletion flow
  - Fix static mroute to also take into account the input interface
  - Fix the setting of oif_flags in channel oil
  - Fix unaligned accesses
  - Handle receive of (*,g) register stop with src addr as 0
  - Igmp querier election is not correct in lan scenario
  - JSON support for next-hop
  - Let the end operator know the ifindex as well in the failure case
  - Limit PIM's ECMP to what zebra tells us is the multipath
  - Querier to non-querier transition to be ignored
  - Register stop message sent with mask 32
  - Show interface traffic even if the interface is currently `down`
  - Update mroute iif based on next-hop received from zebra
  - VRF may be null from pim_cmd_lookup_vrf

**ripd**
  - Use a sequence number instead of a time

**sharpd**
  - Fix memory leak in release-locator-chunk
  - Fix memory leak in release-locator-chunk
  - Fix memory leaks related to SRv6 next-hops

**staticd**
  - When changing the underlying nh ensure it is reinstalled

**tools**
  - Add missing bfdd to logrotate config
  - Add pim6d to tools so that pim6d will work properly
  - Fix boot config load in watchfrr
  - Stop zebra daemon last

**vtysh**
  - Account validity should be verified when authenticating users with pam
  - Add autocomplete for VRFs when using with `router bgp`
  - Handle SIGTSTP (c-z) without exiting the vty shell
  - Ignore `end` when parsing frr.conf
  - Properly handle `[no] service cputime-stats` in config
  - Properly handle `service cputime-warning xx` in the config
  - Add `allow-reserved-ranges` global command

**watchfrr**
  - Check that the operational timeout specified is good

**zebrad**
  - Fixing log flooding when disabling MLAG leaf configuration
  - Add a `mpls enable` interface node command
  - Add a configurable knob `zebra nexthop-group keep (1-3600)`
  - Add a timer to next-hop group deletion
  - Add ability for netconf dplane to handle global values
  - Add interface sysctl ignore on linkdown status
  - Add more cases to proto2zebra for understanding kernel routes
  - Add some more data to rtadv socket failures
  - Add support for maintaining local neigh entries
  - Add tc handlers in the script code
  - Add tc netlink and dplane ops
  - Allow kernel routes to stick around better on interface state changes
  - Attempt to make ioctl.c have a bit more useful log messages
  - Avoid buffer overflow using netlink_parse_rtattr_nested()
  - Cleanup the memory from the hash for MPLS stuff
  - Create a zebra_rib_route_entry_new function and use it
  - Debug decode rta_expires and rta_mfc_stats
  - Delete the malloced memory under `show zebra`
  - Don't install connected routes multiple times into frr
  - Expand PBR rule action for data-plane programming
  - Explicitly call out the correct queue name
  - Fix bond down for EVPN-MH
  - Fix bug in netconf handling where dplane would drop the change
  - Fix crash in shutdown w/ pw thread still running
  - Fix ctab calculation typo in tc netlink
  - Fix FPM crash
  - Fix lost memory on lsp free
  - Fix memory leak in srv6 locator delete
  - Fix memory leaks and use after frees in nhg's on shutdown
  - Fix missing tenant VRF change notification
  - Fix missing VNI transition
  - Fix remaining mr rtm_getroute oddities
  - Fix rtadv startup when config read in is before interface up
  - Free neighbor state before the exit to avoid memleaks
  - Handle freebsd routing socket enobufs
  - Iif/oif are not used in mr rtm_getroute
  - Infrastructure for the new dataplane plugin
  - Initialize hw via DPDK
  - Introduce early route processing on the metaq
  - Mc_forwarding was being sent but not retrieved across dataplane
  - Notice when an interface is turned on w/ mpls and enable mpls subsystem
  - On Linux let interface data come in through netlink messaging
  - Pass AFI received for netconf updates
  - Pass PBR expanded actions to the dataplane
  - Pbr DPDK programming
  - Reconfiguring netns for VRF is not a failure
  - Rtnetlink: flow attr per gateway attr in multipath updates
  - Setup the zebra interface to the DPDK port map table
  - System routes should be processed the same time as the kernel
  - Use default ns directly in tc dplane
  - When deleting next-hop group entries ensure the thread is off
  - When saving nhg for later stop processing

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2022-12-20 09:53:59 -06:00
.github github: Prevent running actions on forked repositories 2022-12-08 22:54:28 +02:00
alpine docker: Compile Alpine image using PCRE2 2022-11-07 21:23:53 +02:00
babeld build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
bfdd bfdd: fix IPv4 socket source selection 2022-11-24 11:16:18 -03:00
bgpd bgpd: Check if bgp_path_info is not NULL when setting AIGP metric TLV 2022-12-20 09:48:43 +02:00
debian debian, redhat: updating changelog for new release 2022-12-20 09:53:59 -06:00
doc Merge pull request #12380 from chiragshah6/zdev 2022-12-19 23:37:59 +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 #12533 from donaldsharp/returns_are_needed 2022-12-16 12:42:14 -05: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 ospf6d: Fixing memory leak in ospf6_lsa_create_headeronly for both master and slave. 2022-12-19 04:15:36 -08:00
ospfclient ospfd, ospfclient: Do not just include .c files in another .c 2022-12-05 11:55:14 -05:00
ospfd ospfd: json support for show ip ospf border-routers 2022-12-16 08:46:10 -08: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 pimd: fix MSDP packet debug crashes 2022-12-07 11:49:26 -03: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 lib, staticd: return values even after an assert 2022-12-16 07:38:58 -05:00
tests Merge pull request #12522 from donaldsharp/some_various_stuff 2022-12-16 15:30:37 +01:00
tools Revert "tools: stop zebra daemon last" 2022-12-06 11:21:02 -05:00
vrrpd vrrpd: add IPv4 pseudoheader option for VRRPv3 2022-11-25 16:21:59 +08:00
vtysh Merge pull request #12410 from ghzserg/master 2022-12-06 08:55:20 -05:00
watchfrr build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
yang vrrpd: add IPv4 pseudoheader option for VRRPv3 2022-11-25 16:21:59 +08:00
zebra Merge pull request #12434 from chiragshah6/fdev1 2022-12-19 23:24:53 +02: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
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
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
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

README.md

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