Commit Graph

1239 Commits

Author SHA1 Message Date
Donald Sharp
4dfe9ad26e pimd: Remove pimg
The pimg data structure is only used in one spot to send the default
vrf id to zebra upon startup.  Add the default vrf id to the struct pim_router
data structure and remove the pimg pointer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
84f2598914 pimd: Remove pim_msdp_config_write as it was never used
This function was never used, additionally rename the _helper
function to this name.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
a6c5db596e pimd: Move register_probe_time to pim_router
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
75373ccac4 pimd: Move packet_process variable to pim_router
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
2925dff513 pimd: Move register_suppress_time into struct pim router
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
da03883e1e pimd: Convert rpf_cache_refresh_delay_msec into pim_router struct
Move the rpf_cache_refresh_delay_msec into the pim_router since
it should own the data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
d17612dd6a pimd: Move the infinite_assert_metric global to pim_router
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
5b45753eff pimd: Convert qpim_t_periodic into the struct pim_router structure
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:39 -05:00
Donald Sharp
046b1aa7d4 pimd: Move debugs into pim_router structure
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:23:38 -05:00
Donald Sharp
36417fcc20 pimd: Create a struct pim_router and move thread master into it
Create a `struct pim_router` and move the thread master into it.
Future commits will further move global varaibles into the pim_router
structure.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:21:00 -05:00
Donald Sharp
ac567a6f4a pimd: Add the reading of capabilities on startup.
Just add the ability to notice the capabilities on startup,
but don't do anything with it yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04 12:21:00 -05:00
Donald Sharp
b96892db62 pimd: When we fail to initiate ifchannel backout work done
When we receive a igmp report and attempt to initiate
a pim ifchannel for it and that fails to work then
let's back out the work done setting stuff up to this
point.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-15 19:28:43 -05:00
Donald Sharp
78b0c6bfa7 pimd: Add some debugs for when local membership fails
When we fail to add a local membership add some additional debugs
so that we can have a bit more information on when something goes
bad.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-15 19:25:58 -05:00
Donald Sharp
26f63a1ec6 *: Replace zclient_new with zclient_new_notify
It's been a year since we added the new optional parameters
to instantiation.  Let's switch over to the new name.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-12 09:16:23 -05:00
Donald Sharp
a756969dc6 pimd, zebra: Encode nexthop vrf in message
Encode the nexthop vrf in the message sent about mrib lookups.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-01 19:24:59 -04:00
Donald Sharp
0100dfb9c1
Merge pull request #2705 from opensourcerouting/northbound-yang-v2
Northbound API
2018-10-31 18:50:45 -04:00
Donald Sharp
e5a2ebe691 pimd: Send 1 on all systems for MRT_INIT
When sending a sockoption for MRT_INIT, *bsd requires that
the data passed in must be 1.  While linux does not, the
code was sending in a positive value that was causing issues
on *bsd of protocol not supported.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-10-31 07:26:35 -04:00
Donald Sharp
f0b009a4db pimd: *bsd needs priviledge escalation to init PIM
When trying to run PIM on *bsd, the kernel expects to only
allow the pim kernel socket to work if we elevate priviledges.
So do so.

This commit gets us further in the startup of PIM on *bsd
but is not sufficient to get it fully started yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-10-31 07:26:35 -04:00
Renato Westphal
a4bed468f9 yang, lib: add 'frr-interface.yang' and associated stub callbacks
Introduce frr-interface.yang, which defines a model for managing FRR
interfaces.

Update the 'frr_yang_module_info' array of all daemons that will
implement this module.

Add automatically generated stub callbacks in if.c. These callbacks will
be implemented in the following commit.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27 16:16:12 -02:00
Renato Westphal
8fcdd0d635 *: add empty array of YANG modules
FRR_DAEMON_INFO should now contain an array of 'frr_yang_module_info'
structures describing the YANG modules implemented by the daemon.

This array will be used by frr_init() function to load all YANG modules
and initialize the northbound callbacks during the daemon initialization.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27 16:16:12 -02:00
David Lamparter
7d353b8a9e
Merge pull request #3227 from qlyoung/fix-exit-vrf-placement-upstream
vtysh: fix exit-vrf printing
2018-10-26 22:21:27 +02:00
David Lamparter
0437e10517 *: spelchek
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-10-25 20:10:57 +02:00
Quentin Young
e8be380a53 vtysh: fix exit-vrf printing
Resolves issue with exit-vrf being placed at the end of zebra's portion
of a vrf block, but before other daemons' portions of the same config
block.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-10-23 22:47:42 +00:00
Donald Sharp
74df8d6d9d *: Replace hash_cmp function return value to a bool
The ->hash_cmp and linked list ->cmp functions were sometimes
being used interchangeably and this really is not a good
thing.  So let's modify the hash_cmp function pointer to return
a boolean and convert everything to use the new syntax.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-10-19 13:14:45 -04:00
David Lamparter
6a154c8812 *: list_delete_and_null() -> list_delete()
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-10-02 11:40:52 +02:00
Donald Sharp
1d48383802 pimd: Fix several address sanitizer issues
This commit fixes two issues during pim shutdown.

1) The rp_info structure was being freed before the
outgoing notifications that depended on it's information
was sent out as part of shutdown.

2) The pim->upstream_list shutdown involved iterating
over the list via ALL_LIST_ELEMENTS.  This typically
is enough but pim will auto delete child nodes as well
as itself when it goes away and they depend on it.  As such
the node and nnode could possibly already have been freed.
So change the way we look at all the data in the upstream_list

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-24 15:12:36 -04:00
Donald Sharp
5330c5e4a8 pimd: Why was pim including zebra headers?
Remove the inclusion of zebra headers from pim.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-23 16:29:41 -04:00
Donald Sharp
b5469d021c pimd: blackhole traffic when we are not DR for Stream received
Suppose we have a bridge with a host and two routers attached
to it.

r1     r2
|      |
--------
    |
  host

host is sending traffic.
r1 and r2 are pim neighbors and r2 is the DR.

Both r1 and r2 will receive data from the stream up the pim
kernel socket.  r1 will notice that it is not the DR and
stop processing in pim.  This code adds a bit more code to blackhole
the route when r1 detects it is not the DR in this scenario.

This is being done because the kernel is both keeping state and
sending data to the pim process to continue processing this.
Additionally if we happen to be running this on a asic, then
blackholing the route in the asic can save a significant amount
of cpu time handling this situation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-21 11:41:46 -04:00
Donald Sharp
90a084e4a1 pimd: Add a debug to tell why we are not creating upsteam state
When we decide we are not the right pim process to add upstream state
for the igmp state received, notice this in a debug to make life
easier to debug.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-21 10:28:57 -04:00
Donald Sharp
a0bf54c7de pimd: Add some extra information to a show command
The tracking of who have drpriority on an interface
in pim was not displayed anywhere.  Add to the show
command for future reference.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-21 10:17:48 -04:00
Donald Sharp
85a13586ed pimd: use bool instead of int to pass true/false
In pim_if_new use bool instead of an int to pass
true/false values for what we should create the
pim interface type for.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-17 14:09:06 -04:00
Donald Sharp
59752d4ea5 pimd: Actually create vif's in non-integrated config
The startup of a non-integrated config was not properly
allowing for startup to create the vif when we have
not learned about the interface we are trying to configure
at this point in time.  Actually notice when we are
trying to create a pimreg device or not to properly
notice when to attempt to create the vif or not.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-17 13:58:59 -04:00
David Lamparter
4205a06cc4
Merge pull request #3018 from donaldsharp/twheel_names
Twheel names
2018-09-14 17:57:19 +02:00
Quentin Young
1c50c1c0d6 *: style for EC replacements
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-13 19:38:57 +00:00
Quentin Young
450971aa99 *: LIB_[ERR|WARN] -> EC_LIB
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-13 19:34:28 +00:00
Quentin Young
298004a139 pimd: PIM_[ERR|WARN] -> EC_PIM
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-09-13 19:12:58 +00:00
Donald Sharp
c2cfa843b4 lib, pimd: Convert timer_wheel to use thread_execute_name
Allow at timer wheel creation time the ability to specify a
name for what we want the 'show thread cpu' to show up as.

Modify pim to note this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-13 10:51:13 -04:00
Donald Sharp
38ee5e636d
Merge pull request #3009 from pacovn/static_analysis__shadow_variables3
pimd ripd ripngd: variable shadowing fixes
2018-09-13 08:35:47 -04:00
F. Aragon
dc7204b775
pimd ripd ripngd: variable shadowing fixes
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-09-12 12:55:31 +02:00
Sarita Patra
eccdcfe2b6 pimd: fix indentation warnings
Signed-off-by: Sarita Patra <saritap@vmware.com>
2018-09-11 22:00:15 -07:00
Donald Sharp
4328a933aa
Merge pull request #2985 from patrasar/Fix_1636
pimd: create a new command "ip pim" configuring pim sm
2018-09-11 09:16:24 -04:00
root
2f5e937c49 pimd: create a new command "ip pim" configuring pim sm
A new command "ip pim" is created to configure pim sm on an
interface, which replaces the existing commands "ip pim sm"
and "ip pim ssm" and make "ip pim sm" and "ip pim ssm" as
hidden commands. The command "ip multicast-routing" is removed
since it is already enabled on FRR by default.

Signed-off-by: Sarita Patra saritap@vmware.com
2018-09-10 22:22:14 -07:00
Donald Sharp
eac04cfd59
Merge pull request #2977 from opensourcerouting/doc-fix
build: fix not building docs w/o sphinx
2018-09-09 14:52:38 -04:00
David Lamparter
f4f2f2ccac build: fix not building docs w/o sphinx
Can't build manpages without sphinx-build, oops...

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-09-09 20:01:08 +02:00
David Lamparter
3009394b3c *: fix some random warnings
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-09-09 01:16:25 +02:00
David Lamparter
e7c25325cc *: cleanup .gitignore files
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-09-08 21:30:42 +02:00
David Lamparter
b45ac5f5c6 *: fix config.h/zebra.h include order
config.h (or, transitively, zebra.h) must be the first include file
listed for autoconf things like _GNU_SOURCE and _POSIX_C_SOURCE to work
correctly.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-09-08 21:30:42 +02:00
David Lamparter
74dc19a2f5 build: move vtysh & manpage listings to subdir.am
Since we're now building through one large Makefile, we can easily put
things with their daemons and crossreference nicely.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-09-08 21:30:19 +02:00
Don Slice
088f109866 bgpd, ospfd, pimd, zebra: Convert more use_json locations to bool
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-09-04 17:39:04 +00:00
David Lamparter
1fbd4e382a
Merge pull request #2945 from dslicenc/bgp-ospf-json
bgpd/ospfd: make bgp and ospf json response a bit more consistent
2018-09-01 05:05:30 +02:00
Don Slice
9f049418bc bgpd/ospfd: make bgp and ospf json response a bit more consistent
Problem reported that some bgp and ospf json commands did not return
any json output at all if the bgp/ospf instance did not exist.
Additionally, some bgp and ospf json commands did not return any json
output if the instance existed but no neighbors were defined.  This
fix makes these commands more consistent in returning empty braces for
json output and issue a message if not using json output.  Additionally,
made the flag "use_json" a bool to make it consistent since previously,
it had been defined as an int, char, u_char, and bool at various places.

Ticket: CM-21040
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-30 12:40:18 +00:00
Philippe Guibert
ecbc5a3781 *: add a vrf update hook to be informed of the vrf name
The Vrf aliases can be known with a specific hook. That hook will then,
from zebra propagate the information to the relevant zapi clients.
The registration hook function is the same for all daemons.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-28 16:23:50 +02:00
Donald Sharp
8cd3830603 pimd: Add some more useful data to debug output
End user was seeing this debug but we are not giving
the user enough information to debug this on his own.
Add a tiny bit of extra information that could point
the user to solving the problem for themselves.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-28 08:50:55 -04:00
Don Slice
fec4ca191e zebra: if multiple connecteds, select loopback or vrf if present
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-23 18:49:48 +00:00
Donald Sharp
61929aa5f9
Merge pull request #2850 from patrasar/Fix_2363
Fix pim_mroute_del crash while killing pimd
2018-08-22 11:44:15 -04:00
root
e83f3b316a pimd: Fix pim_mroute_del crash while terminating pimd
When pimd is getting terminated, pim_upstream_del() gets called as
part of cleaning process. pim_upstream_del() deletes the route and
assigns NULL to the up->channel_oil. It also deletes each if_channel
by calling the function pim_ifchannel_delete().
pim_ifchannel_delete() internally calls the caller function pim_upstream_del(),
if it is the last ifchannel for that upstream. So pim_upstream_del
is getting called twice, which will access the up->channel_oil which
was already set to NULL before. This results in crash.

Fix:
pim_ifchannel_delete() should call pim_upstream_del (caller function)
only if the up->ref_count > 0. Added an assert(up->ref_count > 0) in
the function pim_upstream_del().

Signed-off-by: Sarita Patra <saritap@vmware.com>
2018-08-22 00:00:32 -07:00
David Lamparter
a2dc7057e0 *: fix gcc-8 format-overflow warnings
e.g.
pimd/pim_oil.c: In function ‘pim_channel_oil_dump’:
pimd/pim_oil.c:51:19: error: ‘%d’ directive writing between 1 and 11 bytes into a region of size 10 [-Werror=format-overflow=]

Build on gcc-8.2.0 is warning-free after this patch.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-21 21:05:09 +02:00
Russ White
4b0d7894cb
Merge pull request #2846 from donaldsharp/backet_data
Backet data
2018-08-16 11:32:41 -04:00
Russ White
783d61be04
Merge pull request #2849 from patrasar/memory_leak_nht
Fix memory leak pim nexthop creation
2018-08-16 11:31:21 -04:00
Sarita Patra
1159c202fc pimd: Fix memory leak pim nexthop creation
While terminating pim instance, the memory allocated for pim nexthop
should be released before deallocating the memory of pim nexthop cache(pnc).
This resolves the memory leak detected in pnc->nexthop creation.

Signed-off-by: Sarita Patra <saritap@vmware.com>
2018-08-16 12:15:26 -07:00
Donald Sharp
7cd502014e pimd: Trust backet->data
The backet->data cannot be NULL, no need to check for it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-15 17:53:09 -04:00
David Lamparter
633fc9b133 *: frr_elevate_privs whitespace fixes
(... and one superfluous variable removed)

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-14 20:02:05 +00:00
David Lamparter
6bb30c2cba *: use frr_elevate_privs() (2/2: manual)
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-14 20:02:05 +00:00
David Lamparter
01b9e3fd0d *: use frr_elevate_privs() (1/2: coccinelle)
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-14 20:02:05 +00:00
Quentin Young
09c866e34d *: rename ferr_zlog -> flog_err_sys
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
85cd2f9f9a *: rename ferr_ref -> log_ref
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
af4c27286d *: rename zlog_fer -> flog_err
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
5e1e0166cb *: correct typos in error reference cards
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
5ad4c39ce4 *: stop double initialization of ferr
* Stop double init of ferr
* Fixup bugs in zebra ferr
* Add missing init in ospfd

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Quentin Young
247dcce2b5 *: fix source file headers & includes for errcodes
* Use the correct license header
* Stop headers from including themselves
* Use uniform relative include conventions
* Ensure that sources include what they use
* Turn off clang-format around struct array blocks

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Donald Sharp
d9ff430273 pimd: Add pim_errors and define some pim specific errors
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Donald Sharp
3613d89844 pimd: Convert over to use LIB_ERR_XXX for zlog_err
Convert, where appropriate, the zlog_err functions to zlog_ferr
for the LIB_ERR_XXX enums

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-14 20:02:05 +00:00
Donald Sharp
d6853655b5
Merge branch 'master' into bfd-final 2018-08-14 08:16:10 -04:00
Renato Westphal
91e5b43ab4 lib, vtysh: fix inconsistent interface commands in vtysh
The definition of the interface commands in vtysh.c were outdated.
Currently, all daemons that call if_cmd_init() will have the "no interface
IFNAME" command and the "[no] description" commands as well, so there's
no need to define exceptions for these commands anymore.

To fix this, make extract.pl parse the if.c file so that vtysh can get the
interface commands from there automatically. Only the "interface IFNAME
[vrf NAME]" must be kept in vtysh.c because it changes the vty node and
thus needs special treatment.

Finally, make pimd and pbrd display interface descriptions on "sh run"
when they are configured.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-08-13 18:59:31 -03:00
Donald Sharp
0ce1ca805d *: ALLOC calls cannot fail
There is no need to check for failure of a ALLOC call
as that any failure to do so will result in a assert
happening.  So we can safely remove all of this code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-11 17:14:58 +02:00
Rafael Zalamena
64dc4b2d7a bgpd/ospf(6)d/pimd: hide BFD commands with timers
Don't show BFD commands with timers since it might confuse users
("show running-config" won't display timers in client daemons anymore),
but keep accepting this command from previous configurations.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-08-08 18:25:08 -03:00
Rafael Zalamena
a0841732ab bgpd/ospf(6)d/pimd: don't show BFD timers
When BFD timers are configured, don't show it anymore in the daemon
side. This will help us migrate the timers command from daemons to
`bfdd`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-08-08 18:25:04 -03:00
David Lamparter
c517178d2c pimd: fix bogus uninitialized warning
pimd/pim_nht.c: In function ‘pim_ecmp_nexthop_search’:
pimd/pim_nht.c:523:17: error: ‘nbr’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
    nexthop->nbr = nbr;

(on gcc 5.4.0; this is the only warning with that version.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-08-08 12:32:21 +02:00
F. Aragon
56cb79b6d5
bgpd pimd: return check (Coverity 1472232 1472234)
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-08-06 18:17:39 +02:00
Russ White
429a5ad722
Merge pull request #2758 from donaldsharp/pim_join
lib and pim silliness
2018-08-04 11:46:45 -04:00
Russ White
4b54562c04
Merge pull request #2773 from donaldsharp/pim_ordering
Pim ordering
2018-08-04 11:43:38 -04:00
Donald Sharp
8619629ada lib, bgpd, ospf6d, ospfd, pimd: Allow finish to cleanup a bit more
When calling route_map_finish, every place that we do we must
first set the deletion event to NULL, or we will create an infinite
loop, if we are using the delayed route-map application code.
As such we might as well just make the route_map_finish code
do this work, as that there is really no viable alternative here
and route_map_finish should only be called on shutdown.

This fixes an infinite loop in zebra on shutdown when there
are route-maps.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-03 08:22:45 -04:00
Donald Sharp
391b8b08a5 pimd: On shutdown ensure wheel exists
On shutdown and cleaning up pim_upstream ensure that the
upstream_sg_wheel still exists to remove item from.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 23:31:53 -04:00
Donald Sharp
822d3c858c pimd: Cleanup msdp.mg on shutdown
When shutting down PIM, ensure that hte pim->msdp.mg is cleaned up.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 23:08:48 -04:00
Donald Sharp
662ba9e6f0 pimd: Cleanup bfd memory on shutdown
When shutting down pim, ensure that we cleanup bfd memory

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 22:56:55 -04:00
Donald Sharp
e2c4bc88d2 pimd: Fix crash on shutdown in oil
When shutting down, do not free oil information after
interface information since we use the data there to
do so.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:27:53 -04:00
Donald Sharp
0c68972d53 pimd: Don't leak wheel memory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:25:41 -04:00
Donald Sharp
27cfe2224c pimd: Properly cleanup ssm
Properly cleanup the ssm data structure on termination.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:06:15 -04:00
Donald Sharp
ff823fc915 pimd: Cleanup rp_info->plist
PIM is leaking the plist data structure in some shutdown
cases.  Additionally trust XFREE

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 20:02:13 -04:00
Donald Sharp
36ef2c109b pim: Clean up some data on shutdown in msdp
We were leaking some msdp hash backets and a msdp stream
data pointer on shutdown.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 19:58:24 -04:00
Donald Sharp
c7e98b04ec pimd: No need to call zprivs_terminate 2 times
frr_fini and pim_free both call zprivs_terminate.  There is
no need for pim_free to call this function.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 19:52:15 -04:00
Donald Sharp
c55f7a8003 pimd: Modify order of command output for vty output
If `ip igmp query-max-response-time` is set move it to
display first as that this command has order dependencies
on `ip igmp query-interval`.

Ticket: CM-21598
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:38:48 -04:00
Donald Sharp
302628bcad pimd: Only need 1 return from a function
When there is a return at the end of a function, there
is no need for another one immediately after it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:09:09 -04:00
Donald Sharp
c936e76f3c pimd: pim_socket_join_source is only called from one place
The pim_socket_join_source function only ever calls
pim_igmp_join_source and pim_socket_join_source is only
called from 1 place.  Skip the level of indirection.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-02 10:09:09 -04:00
Donald Sharp
cc67ccf9f3 pimd: Abstract a RPF change for upstream handling
Abstract the RPF change for upstream handling code so
that we do not have two copies of the code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-31 18:27:54 -04:00
Donald Sharp
7438923168 pimd: Abstract sending of data to peers
After we have decided what has changed as part of a update
we need to send the j/p messages to our peers.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-31 17:40:37 -04:00
Donald Sharp
be523269fd pimd: RPT Prunes do not need to be figured for a *,G Prune
Packet sending in PIM is a two step process.
1) Gather data size of next G to be packed into a packet.
2) Write data

After 1 we need to ensure that the next G to pack will actually
fit in a packet.  If it does not send what we've currently written
and start a new packet to send.

Because this was a 2 step process it is important to be consistent
in what you think you have packed -vs- what you think you should.

PIM has a bug where we were considering S,G RPT Prunes for a *,G
even when the *,G was being pruned.  This lead to a situation where
we were figuring a write size of more data then what we actually wrote
into a packet.  This would leave a 8 byte whole of 0's in the packet
due to the way we moved pointers around.

Fix the code so that we do not attempt to consider S,G rpt prunes
for a *,G prune when figuring out how much we should write in step 1.

Ticket: CM-21644
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-07-25 14:37:30 -04:00
F. Aragon
431f21d38e
pimd: uninitialized memory access fix
Signed-off-by: F. Aragon <paco@voltanet.io>
2018-07-24 23:51:15 +02:00
Russ White
59c97d9839
Merge pull request #2697 from mjstapp/routemap_const
libs, daemons: use const in route-map apply
2018-07-23 17:42:04 -04:00
Russ White
b6292a289b
Merge pull request #2641 from donaldsharp/pim_igmp_dr
pimd: Do not create upstream state when not DR for igmp request
2018-07-23 16:50:59 -04:00