Go to file
Anuradha Karuppiah 0f31a82a11 pimd: fix problem with oif being re-added during ifchannel del
Series of events leading to the problem -
1. (S,G) has been pruned on the rp on downlink-1
2. a (*,G) join is rxed on downlink-1 without the source S. This
results in the (S,G,rpt) prune state being cleared on downlink-1.
As a part of the clear the ifchannel associated with downlink-1
is deleted.
3. The ifchannel_delete handling is expected to add downlink-1
as an inherited OIF to the channel OIL (which it does). However
it is also added in as an immediate OIF (accidentally) as the
ifchannel is still present (in the process of being deleted).

To avoid the problem defer pim_upstream_update_join_desired
evaluation until after the channel is deleted.

Relevant debug logs -
PIM: pim_ifchannel_delete: ifchannel entry (27.0.0.15,239.1.1.106)(downlink-1) del start
PIM: pim_channel_add_oif(pim_ifchannel_delete): (S,G)=(27.0.0.15,239.1.1.106): proto_mask=4 OIF=downlink-1 vif_index=7: DONE
PIM: pimd/pim_oil.c pim_channel_del_oif: no existing protocol mask 2(4) for requested OIF downlink-1 (vif_index=7, min_ttl=1) for channel (S,G)=(27.0.0.15,239.1.1.106)
PIM: pim_upstream_switch: PIM_UPSTREAM_(27.0.0.15,239.1.1.106): (S,G) old: NotJoined new: Joined
PIM: pim_channel_add_oif(pim_upstream_inherited_olist_decide): (S,G)=(27.0.0.15,239.1.1.106): proto_mask=2 OIF=downlink-1 vif_index=7 added to 0x6  >>>>>>>>>>>>>>>>>>
PIM: pim_upstream_del(pim_ifchannel_delete): Delete (27.0.0.15,239.1.1.106)[default] ref count: 2 , flags: 81 c_oil ref count 1 (Pre decrement)
PIM: pim_ifchannel_delete: ifchannel entry (27.0.0.15,239.1.1.106)(downlink-1) del end

Ticket: CM-26732

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-03-06 16:13:27 -05:00
.github .github: move pr template to subdir 2019-03-29 16:51:58 +00:00
alpine alpine: fix build on current 'edge' version of Alpine 2019-12-03 21:36:30 +01:00
babeld Merge pull request #5806 from ton31337/fix/remove_break_after_return 2020-02-13 11:32:27 -05:00
bfdd *: Use short version of bool expressions 2020-03-04 15:04:23 +02:00
bgpd *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
debian doc: rename man pages to frr-* 2020-01-15 14:05:11 +01:00
doc Merge pull request #5912 from mjstapp/fix_doc_slack_link 2020-03-04 19:04:09 -05:00
docker Merge pull request #5606 from ton31337/fix/docker_centos8_image_name 2020-01-06 11:24:15 -06:00
eigrpd *: Replace __PRETTY_FUNCTION__/__FUNCTION__ to __func__ 2020-03-05 20:23:23 +02:00
fpm build: fix "make tags" 2019-09-17 16:35:12 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
grpc build: fix "make tags" 2019-09-17 16:35:12 +02:00
include include: add kernel header for seg6/seg6local 2020-01-09 09:53:04 +09:00
isisd *: use gmtime_r, localtime_r exclusively 2020-03-05 13:26:16 -05:00
ldpd ldpd: Remove double set of lif 2020-03-02 20:31:15 -05:00
lib lib, pimd, zebra: Provide some insurance against reading bad stream data 2020-03-06 16:03:59 -05:00
m4 build: fix shell == mis-use 2020-01-17 13:53:59 +01:00
mlag zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
nhrpd Merge pull request #5918 from ton31337/fix/__func__everywhere 2020-03-05 17:37:03 -05:00
ospf6d *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
ospfclient *: Replace s_addr 0 => INADDR_ANY 2020-02-06 09:00:12 +02:00
ospfd *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
pbrd *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
pimd pimd: fix problem with oif being re-added during ifchannel del 2020-03-06 16:13:27 -05:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python bgpd/bmp: BMP implementation 2019-08-30 19:22:23 +02:00
qpb build: fix "make tags" 2019-09-17 16:35:12 +02:00
redhat redhat: Update frr.spec.in to move all systems to Python3 except CentOS 6 2020-01-25 00:44:34 +01:00
ripd Merge pull request #5916 from mjstapp/fix_gmtime 2020-03-05 17:38:13 -05:00
ripngd Merge pull request #5916 from mjstapp/fix_gmtime 2020-03-05 17:38:13 -05:00
scripts/coccinelle Merge pull request #5918 from ton31337/fix/__func__everywhere 2020-03-05 17:37:03 -05:00
sharpd *: Replace __PRETTY_FUNCTION__/__FUNCTION__ to __func__ 2020-03-05 20:23:23 +02:00
snapcraft snapcraft: Add vrrpd to the snapcraft package 2019-11-19 10:46:33 +01:00
solaris doc: rename man pages to frr-* 2020-01-15 14:05:11 +01:00
staticd *: Finish off the __PRETTY_FUNCTION__ to __func__ 2020-03-06 09:23:22 -05:00
tests *: Replace __PRETTY_FUNCTION__/__FUNCTION__ to __func__ 2020-03-05 20:23:23 +02:00
tools tools: Update generate_support_bundle.py to support Python 3 2020-01-25 00:43:20 +01:00
vrrpd *: Replace __PRETTY_FUNCTION__/__FUNCTION__ to __func__ 2020-03-05 20:23:23 +02:00
vtysh *: use gmtime_r, localtime_r exclusively 2020-03-05 13:26:16 -05:00
watchfrr doc: rename man pages to frr-* 2020-01-15 14:05:11 +01:00
yang yang/lib: add filter model to code 2020-02-04 14:05:43 -03:00
zebra lib, pimd, zebra: Provide some insurance against reading bad stream data 2020-03-06 16:03:59 -05:00
.clang-format *: frr_elevate_privs -> frr_with_privs 2019-09-03 17:18:35 +02:00
.dir-locals.el tools: fix emacs configuration file 2019-11-04 11:45:52 -03:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.gitignore tools: symalyzer 2019-12-14 12:41:19 +01: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
changelog-auto.in debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac configure: Fixup --disable-irdp option to reflect reality 2020-02-16 14:39:49 -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 lib: new defaults logic 2019-12-06 15:13:32 +01:00
README.md README.md: Add FRR Icon 2019-10-29 12:42:06 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00: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 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
  • 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