]>
git.puffer.fish Git - mirror/frr.git/log
Donald Sharp [Tue, 8 Nov 2016 20:49:28 +0000 (15:49 -0500)]
pimd: Remove unnecessary asserts
When we handle the thread arguments,
there is no need to assert. As that
if they are wrong, we are going down
shortly anyways.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 8 Nov 2016 20:26:48 +0000 (15:26 -0500)]
pimd: Add Handler for Receive (*,G) join for (S,G,rpt)
According to Figure 5( Downstream per-interface (S,G,rpt)
state when we receive a (*,G) we need to move (S,G,rpt)
children of the (*,G) into different states. This
implements that.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 9 Nov 2016 00:40:08 +0000 (19:40 -0500)]
pimd: Ensure 'struct prefix sg' is inited in right order
When we called pim_parse_addr_group, don't reinitialize
the 'struct prefix_sg' *after* we've parsed the group.
Ensure in other places that we do this work, we initialize
prior as well.
Ticket: CM-13510
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 8 Nov 2016 17:53:28 +0000 (12:53 -0500)]
pimd: Fix 'show ip pim join json' output
When we have multiple incoming joins for
a single group on a interface, we need to
allow proper output.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 8 Nov 2016 13:00:02 +0000 (08:00 -0500)]
pimd: Add ability to know if ifchannel is (S,G,rpt)
Add ability to track (S,G,rpt) ifchannel prunes.
Add ability to display this data in json.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 8 Nov 2016 12:55:51 +0000 (07:55 -0500)]
pimd: 'show ip pim join json' add by src not grp
If you add to the json by grp, if you have multiple
ifchannels for that group, on the the first one will
be displayed.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 8 Nov 2016 00:43:13 +0000 (19:43 -0500)]
pimd: Don't delete ifchannel if expiry timer is still running.
Don't delete the ifchannel if the expiry timer is still running.
We might need to add the prune pending timer as well? Not sure
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 20:51:18 +0000 (15:51 -0500)]
pimd: use 'struct prefix_sg' for recv_join and _prune
When we read in the S,G from the join/prune message,
convert it into a 'struct prefix_sg' at an
earlier point in time.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 20:45:40 +0000 (15:45 -0500)]
pimd: Modify pim_parse_addr_source to use 'struct prefix_sg'
Modify the pim_parse_addr_source function to take
a 'struct prefix_sg' and to fill in the src data.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 20:40:08 +0000 (15:40 -0500)]
pimd: Modify pim_parse_addr_group to use 'struct prefix_sg'
Modify the pim_parse_addr_group to use 'struct prefix_sg sg'.
This is the first of 2 commits to clean up this parsing to
be a bit better.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 19:33:54 +0000 (14:33 -0500)]
pimd: Add ability for ifchannel *,G to know their S,G's
Add the ability for pim ifchannels *,G's to know their
corresponding S,G's. This will facilitate handling
S,G,rpt state information better.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 15:40:26 +0000 (10:40 -0500)]
pimd: Send prune(S,G,RPT) with (*,G) join
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
anuradhak [Mon, 31 Oct 2016 19:29:17 +0000 (12:29 -0700)]
pim-msdp: part-2: SA cache support
This commit includes -
1. Maintaining SA cache with local and remote entries.
2. Local SA entries - there are two cases where we pick up these -
- We are RP and got a source-register from the FHR.
- We are RP and FHR and learnt a new directly connected source on a
DR interface.
3. Local entries are pushed to peers immediately on addition and
periodically. An immediate push is also done when peer session is
established.
4. Remote SA entries - from other peers in the mesh group and passed
peer-RPF checks.
5. Remote entries are aged out. No other way to del them
currently. In the future we may add a knob to flush entries on
peer-down.
Testing done -
Misc topologies with CL routers plus basic interop with another vendor (
we can process their SA updates and they ours).
Sample output -
root@rp:~# vtysh -c "show ip msdp sa"
Source Group RP Uptime
33.1.1.1 239.1.1.2 local 00:02:34
33.1.1.1 239.1.1.3 local 00:02:19
44.1.1.1 239.1.1.4 100.1.3.1 00:01:12
44.1.1.1 239.1.1.5 100.1.3.1 00:00:55
root@rp:~#
Ticket: CM-13306
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 17:34:44 +0000 (12:34 -0500)]
pimd: Store ifchannel information in a global list too.
This fix handles two issues:
1) Searching entire vrf_iflist to get per interface pim_ifchannel_list
2) Display of ifchannel information in pim not being ordered correctly.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 7 Nov 2016 15:01:50 +0000 (10:01 -0500)]
pimd: Allow further refinement of pim join order
When a 'show ip pim join' is issued and we have
(S,G,rpt) being sent back up to us. We need
to order correctly for this situation.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 22:55:35 +0000 (18:55 -0400)]
pimd: Protect some zlog_debug messages
Protect some zlog_debug messages with if(...) so we
don't see them all the time.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 20:29:05 +0000 (16:29 -0400)]
pimd: Protect debug messages.
Protect some debug messages from being displayed always.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 20:25:12 +0000 (16:25 -0400)]
lib: Turn off automatic debugging of Wheel code.
Turn off the automatic debugging of Timer wheel code.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 20:23:50 +0000 (16:23 -0400)]
pimd: Add some explanatory debugging for a error condition.
When we decide to ignore a incoming packet, allow detailed
debugging to give a pointer to where to go to understand the
issue.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 19:44:24 +0000 (15:44 -0400)]
pimd: Fix test for (S,G,rpt) prune inclusion.
The (S,G,rpt) prune inclusion was incorrectly considering
if the RPF' was the same for (S,G) and (*,G).
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 17:51:18 +0000 (13:51 -0400)]
pimd: No need to reset uptime if state is the same
Do not reset the time the mroute has been in it's
current state if we get a transition to the same state.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 14:56:39 +0000 (10:56 -0400)]
pimd: Abstract setting of the spt bit a bit more
Allow the spt bit to be set appropriately from multiple
places.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 3 Nov 2016 14:02:59 +0000 (10:02 -0400)]
pimd: Add ability to set SPTBIT on a S,G stream
Implement 4.2.2 for setting the SPT bit.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 2 Nov 2016 23:19:40 +0000 (19:19 -0400)]
pimd: Start addition of timer wheel
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 2 Nov 2016 23:03:29 +0000 (19:03 -0400)]
lib: Add Timer Wheel functionality
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 2 Nov 2016 15:21:49 +0000 (11:21 -0400)]
pimd: Start coding of sending Prune (s,g,rpt) with *,g prune.
Add logic to show that we are making decisions about
the s,g,rpt prune send. We are not actually sending
anything yet.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 2 Nov 2016 15:20:27 +0000 (11:20 -0400)]
pimd: Add some helper functions.
Currently these are stubs to help debug logic.
Will be filled in as we go.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 2 Nov 2016 14:53:28 +0000 (10:53 -0400)]
pimd: Add the ability to test if the RPF' is the same
Test the ability to see if two RPF' are the same
or not.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Wed, 2 Nov 2016 18:03:00 +0000 (18:03 +0000)]
PIM After LHR swp bounce toward rx host, igmp_source_forward_start
failure message repeats in log
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-13340
Donald Sharp [Wed, 2 Nov 2016 13:35:31 +0000 (09:35 -0400)]
pimd: Add ability to listen to igmp messages on 224.0.0.2
Some igmpv2 messages are sent to 224.0.0.2. We were
not listening for these messages and as such we
were ignoring some withdrawals.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 1 Nov 2016 14:16:03 +0000 (10:16 -0400)]
pimd: Fix 'ip igmp join ..'
When a static igmp join is issued, before routing
has come up, the ability to recover was accidently
removed from the code.
Ticket: CM-13379
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 1 Nov 2016 03:17:53 +0000 (23:17 -0400)]
pimd: When nexthop lookup fails, back out gracefully
When the nexthop lookup fails when establishing the
upstream state as part of a register receive, kill
the upstream state.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 1 Nov 2016 00:49:18 +0000 (20:49 -0400)]
pimd: Allow FHR/RP/LHR to be one and the same
When we have a FHR/RP/LHR all on the same box, we were
experiencing a situation where we were not sending
a register stop nor where we setting the sptbit.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
fd
Donald Sharp [Tue, 1 Nov 2016 00:01:16 +0000 (20:01 -0400)]
pimd: Modify Debug to be better
Make debugs of some pim processes easier
to interpret and understand.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 31 Oct 2016 20:33:38 +0000 (16:33 -0400)]
pimd: Be more careful looking up mroute statistics
When we get a request to look up the mroute statistics
from the kernel, ensure that the interface returned
is a valid usable interface.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 24 Oct 2016 02:47:25 +0000 (22:47 -0400)]
pimd: pim upstream child list
Add the ability to keep the list of S,G's associated with
a *,G.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
anuradhak [Tue, 25 Oct 2016 17:59:48 +0000 (10:59 -0700)]
pim-msdp: part-1 - initial protocol infra.
This commit includes the following changes -
1. Support for MSDP peer DB (hash and sorted list).
2. Support for the following timers - keepalive, connect-retry, hold.
3. TCP session management (lower-ip is active, higher-ip is passive).
4. MSDP KA packet rx/tx.
5. Limited temporary config (will be replaced with the more automation
friendly RP-set).
Testing done -
Peer bringup/deletion (including interop with another vendor)
Sample out -
root@dell-s6000-04:~# sudo vtysh -c "show ip msdp peer"
Peer Local Mesh-group State Uptime
100.1.1.1 100.1.2.1 default established 00:07:27
100.1.3.1 100.1.2.1 default established 00:31:50
root@dell-s6000-04:~#
Coming soon -
1. part-2: SA cache management.
2. part-3: SPT setup using source in SA cache.
3. part-4: CLI cleanup.
Ticket: CM-13306
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 31 Oct 2016 13:20:01 +0000 (09:20 -0400)]
pimd: Fix gcc compile issue.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 31 Oct 2016 13:03:57 +0000 (09:03 -0400)]
pimd: Pass in upstream to pim_msg_join_prune_encode.
Pass in the upstream data structure to pim_msg_join_prune_encode
so it can decide to send (S,G,rpt) information if it wants to or
not.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 31 Oct 2016 12:54:35 +0000 (08:54 -0400)]
pimd: Remove unused/unmaintained test commands
The test commands are not being maintained and
are not out of date with the rest of the system. There
are better ways to test code and in addition these
commands if entered by a user could seriously impact
their running system.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 31 Oct 2016 12:44:01 +0000 (08:44 -0400)]
pimd: Convert pim_joinprune_send to receive upstream
When sending a join/prune send in the upstream pointer.
this will allow us to implement some of the other state
machines necessary.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Sun, 30 Oct 2016 23:34:26 +0000 (19:34 -0400)]
pimd: When nexthop_lookup fails allow a retry.
We are seeing situations where nexthop lookups are failing
unexpectedly. Don't consider the lookup to have succeeded
in this case to allow the next lookup to work?
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 28 Oct 2016 19:25:56 +0000 (15:25 -0400)]
pimd: Ignore (S,G) Prunes with no current state
If we get a (S,G) Prune with no current ifchannel state, ignore
the neighbors request.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 28 Oct 2016 17:43:13 +0000 (13:43 -0400)]
pimd: Find an interface that is both connected and setup for pim
When we are looking up the incoming interface for the ipmr
call back socket from the kernel, look to see if the src
is connected as well as has a valid pim_ifp to use.
This is to allow vrr configuration in a mlag env.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 28 Oct 2016 17:23:17 +0000 (13:23 -0400)]
pimd: Start (S,G,rpt) coding
Start putting some infrastructure for (S,G,rpt) handling
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 28 Oct 2016 00:35:22 +0000 (20:35 -0400)]
pimd: Clean up the interface deletion
When cleaning up the interface, actually clean up
data associated with that interface.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 22:27:28 +0000 (18:27 -0400)]
pimd: Make sure we have valid pointer when printing debugs
When we print a debug in the pim_upstream_add, there
exists failure cases for pim_upstream_new where
we cannot create a upstream data structure. Make
sure the debug handles it right.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 22:16:47 +0000 (18:16 -0400)]
pimd: Fix possible crash using 'struct pim_nexthop'
When passing in a nexthop data structure to nexthop_lookup
ensure that it is zero'ed out.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 22:13:19 +0000 (18:13 -0400)]
pimd: Ensure 'struct nexthop' has been zeroed
When calling nexthop_lookup, the code assumes
that the nexthop passed in has been 0'ed out.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 22:09:09 +0000 (18:09 -0400)]
pimd: Fix crash when cannot find igmp
When we look up a igmp data structure, if we
don't find it, safely do nothing.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 15:54:55 +0000 (11:54 -0400)]
pimd: Add basic nexthop lookup cached information.
Cache the last time we looked up the nexthop for this particular
address. Store time to usec accuracy.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 16:26:00 +0000 (12:26 -0400)]
pimd: Add the ability to get time in usec
Add ability to return a int64_t time in usec.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 12:05:57 +0000 (08:05 -0400)]
pimd: Fix possible double free of upstream
Fix possible double free of upstream and in
addition add some debug code to help find
where the problem is coming from.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 27 Oct 2016 00:26:16 +0000 (20:26 -0400)]
pimd: Fix crash when igmp message comes in on non-configured interface
When we receive a igmp message through the kernel upcall, make
sure that we are configured to work on that interface via pim/igmp
before attempting to use that interface.
Ticket: CM-13338
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 24 Oct 2016 02:35:47 +0000 (22:35 -0400)]
pimd: Fix child ifchannel overwrite parent ifchannel
When we look for child channels, don't overwrite the
parents ifchannel. Leave that one alone.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Wed, 26 Oct 2016 14:03:29 +0000 (14:03 +0000)]
pimd: always build json for show commands
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
This cleans up the following so that they always collect the data to
display in json structures and then either dumps the json output or
traverses it to produce the non-json output.
show ip pim local-membership
show ip pim interface
Donald Sharp [Tue, 25 Oct 2016 14:40:04 +0000 (10:40 -0400)]
pimd: Fix pim_nexthop_lookup
There are situations where we may never look at a better
route for nexthop_lookup.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 25 Oct 2016 12:16:09 +0000 (08:16 -0400)]
pimd: Fix uninitialized value
When handling a igmp request, fill in group address before
we attempt to output debug information on it.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 17 Oct 2016 12:33:13 +0000 (08:33 -0400)]
pimd: Add interface to ifchannel debugs
When outputting data about ifchannels due to debug
include the interface this is happening on.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 14 Oct 2016 17:15:30 +0000 (13:15 -0400)]
pimd: Add debug for packet stats
Allow us to figure out what is going wrong in some
situations, so add some debugs.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 14 Oct 2016 15:22:12 +0000 (11:22 -0400)]
pimd: Fix ifchannel being left around
In some situations, the deletion of the ifchannel would
not ocurr if the last flag cleared was the assert flag.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Sun, 23 Oct 2016 00:23:08 +0000 (20:23 -0400)]
pimd: Fix show of 'ip pim rp keep-alive-timer
When displaying this changed value, we were
using an incorrect data value.
Signed-off-by: Donald Sharpd <sharpd@cumulusnetworks.com>
Daniel Walton [Thu, 20 Oct 2016 14:09:30 +0000 (14:09 +0000)]
pimd: replace grp_str[100] with grp_str[INET_ADDRSTRLEN]
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Daniel Walton [Thu, 20 Oct 2016 13:34:29 +0000 (13:34 +0000)]
pimd: add support for IGMPv2
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-7962
Donald Sharp [Tue, 18 Oct 2016 00:10:12 +0000 (20:10 -0400)]
pimd: Allow debugs entered in conf t mode to persist
When entering debug commands under 'conf t' mode
allow the debugs to be saved for future fun and
adventure.
Ticket: CM-13213
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 13 Oct 2016 15:31:07 +0000 (11:31 -0400)]
pimd: Allow mroute to return if incoming interface comes back
If the incoming interface comes back, reinstall the channel oil
if the mroute is not installed.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 13 Oct 2016 12:34:48 +0000 (08:34 -0400)]
pimd: Create channel_oil hash for quicker lookup
When looking up the channel_oil use a hash
to find it. Keep the list around for quick
walks of the channel oils.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 7 Oct 2016 14:25:08 +0000 (14:25 +0000)]
pimd: Add hash lookups for upstream
Donald Sharp [Wed, 12 Oct 2016 23:18:19 +0000 (19:18 -0400)]
pimd: Only delete on KAT when created by stream
When we have pim_mroute.c or pim_register.c create
the upstream state, only delete it then when
the KAT timer expires, else we will not have
the refcount right and we will do bad things.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 10 Oct 2016 19:31:27 +0000 (15:31 -0400)]
pimd: Fix message size read from kernel
When we read data from the kernel allow for
larger packet sizes to be sent to us.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 4 Oct 2016 11:56:09 +0000 (07:56 -0400)]
pimd: Fix LHR both a receiver and a sender
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 7 Oct 2016 13:05:28 +0000 (09:05 -0400)]
zebra: Fix include order for build
Donald Sharp [Mon, 3 Oct 2016 22:42:59 +0000 (18:42 -0400)]
pimd: Allow bigger packet sizes when receiving callbacks.
When receiving callbacks from the kernel allow bigger
packet sizes than 3k to be handled appropriately.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 27 Sep 2016 23:59:34 +0000 (19:59 -0400)]
pimd: Fix crash when looking at S,G from *,G
When looping over S,G's associated with a *,G,
there can exist situations where we have not created
the channel oil for the S,G yet. Don't allow this
to crash the system.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Wed, 28 Sep 2016 22:57:31 +0000 (22:57 +0000)]
pimd: 'sh ip pim int' showed local IP as the DR
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Daniel Walton [Wed, 28 Sep 2016 01:43:20 +0000 (01:43 +0000)]
pimd: use JSON_C_TO_STRING_PRETTY everywhere
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Daniel Walton [Wed, 28 Sep 2016 01:35:22 +0000 (18:35 -0700)]
pimd: 'show ip pim state json' use JSON_C_TO_STRING_PRETTY
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-11812
Daniel Walton [Wed, 28 Sep 2016 01:33:33 +0000 (01:33 +0000)]
pimd: initial "show ip pim state"
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-11812
superm-redxp-05# show ip pim state
Source Group IIF OIL
20.0.13.253 230.10.10.1 br1 swp1
20.0.13.253 230.20.20.1 br1
0.0.0.0 230.40.40.1 swp1 br1
0.0.0.0 230.42.42.1 swp1 br1
0.0.0.0 230.42.43.1 swp1 br1
superm-redxp-05#
superm-redxp-05# show ip pim state 20.0.13.253
Source Group IIF OIL
20.0.13.253 230.10.10.1 br1 swp1
20.0.13.253 230.20.20.1 br1
superm-redxp-05# show ip pim state 20.0.13.253 230.10.10.1
Source Group IIF OIL
20.0.13.253 230.10.10.1 br1 swp1
superm-redxp-05#
superm-redxp-05# show ip pim state 230.40.40.1
Source Group IIF OIL
0.0.0.0 230.40.40.1 swp1 br1
superm-redxp-05# show ip pim state 230.40.40.1 json
{
"230.40.40.1":{
"0.0.0.0":{
"swp1":{
"br1":{
"source":"0.0.0.0",
"group":"230.40.40.1",
"inboundInterface":"swp1",
"outboundInterface":"br1"
}
}
}
}
}
superm-redxp-05#
Donald Sharp [Tue, 27 Sep 2016 15:06:12 +0000 (11:06 -0400)]
pimd: Print '*' for INADDR_ANY
When INADDR_ANY is sent to the pim dump function, return "*"
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Wed, 28 Sep 2016 00:40:58 +0000 (00:40 +0000)]
pimd: sort pim_ifchannel_list
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Wed, 28 Sep 2016 00:14:22 +0000 (00:14 +0000)]
pimd: sort qpim_channel_oil_list and qpim_upstream_list
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
This allows "show ip mroute" and "show ip pim upstream" to display the
groups in order.
Donald Sharp [Mon, 26 Sep 2016 23:59:48 +0000 (19:59 -0400)]
pimd: Add debug wrapping around rp nexthop lookup
When looking up the RP only print debugs when
debugging is turned on.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Tue, 27 Sep 2016 16:37:38 +0000 (16:37 +0000)]
pimd: Added json to 'show ip igmp group'
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
root@superm-redxp-05[quagga-pim]# vtysh -c 'show ip igmp group'
Interface Address Group Mode Timer Srcs V Uptime
br1 20.0.13.1 230.40.40.1 EXCL 00:03:24 1 3 00:01:28
root@superm-redxp-05[quagga-pim]#
root@superm-redxp-05[quagga-pim]#
root@superm-redxp-05[quagga-pim]# vtysh -c 'show ip igmp group json' |
python -m json.tool
{
"br1": {
"230.40.40.1": {
"group": "230.40.40.1",
"mode": "EXCLUDE",
"source": "20.0.13.1",
"sourcesCount": 1,
"timer": "00:03:23",
"uptime": "00:01:30",
"version": 3
},
"address": "20.0.13.1",
"flagBroadcast": true,
"flagMulticast": true,
"index": 96,
"lanDelayEnabled": true,
"name": "br1",
"state": "up"
}
}
root@superm-redxp-05[quagga-pim]#
Donald Sharp [Tue, 27 Sep 2016 03:13:42 +0000 (23:13 -0400)]
pimd: Don't ask for information when you are notgoing to get an answer
When we have intentionally not installed a mroute( for whatever
reason ), do not ask for information about that mroute from the
kernel when it happens.
Ticket: CM-12986
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 27 Sep 2016 01:26:43 +0000 (21:26 -0400)]
pimd,zebra: Pass back error message if received
When zebra asks for mroute information let pim
know that the request failed or succeeded.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 26 Sep 2016 20:37:08 +0000 (16:37 -0400)]
lib, pimd: Modify writen to retry on certain failures
When writen fails, allow itto retry on certain failures
until it succeeds.
Ticket: CM-12986
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Tue, 27 Sep 2016 02:27:37 +0000 (22:27 -0400)]
zebra: Fix up the debug for receiving multicast routes
Improve the netlink debug message.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 26 Sep 2016 22:39:54 +0000 (18:39 -0400)]
pimd: Remove some more unprotected warnings/debugs
Pim is outputting a bunch of unprotected debugs.
In a system with a high # of events even with
no logging we will receive lots of messages.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 23 Sep 2016 20:16:38 +0000 (16:16 -0400)]
pimd: Fix 'show ip mroute count'
Add the lastused data.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 23 Sep 2016 19:43:19 +0000 (19:43 +0000)]
pimd: Fixup to use new lastused
The kernel now reports lastused as the time in hz since
we last saw any packets. So let's start tracking it
that way.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 22 Sep 2016 14:50:43 +0000 (14:50 +0000)]
pimd: Fixup pim mroute output
Cleanup the 'show ip mroute' command to be a bit
more minimalistic.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Fri, 23 Sep 2016 15:10:31 +0000 (11:10 -0400)]
pimd: Track upstream state a bit better.
Track the upstream state if we are adding
a new state to a pre-existing upstream.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 22 Sep 2016 19:55:02 +0000 (15:55 -0400)]
pimd: When sending a register stop don't need a nbr
When you send a register stop it is not necessary to
have a neighbor out the choosen interface.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 22 Sep 2016 17:25:48 +0000 (13:25 -0400)]
pimd: Stop join/prunes from crashing
When we receive a join/prune for a upstream
that we are unable to create, safely ignore
the request until the situation resolves itself.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 21 Sep 2016 00:34:31 +0000 (20:34 -0400)]
pimd: Allow igmp query to go out immediately on startup
When starting up allow the 1st query to go out immediately,
well ok 1 second, and then the next queries to go out in
query_interval/4 seconds until startup mode is finished.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Wed, 21 Sep 2016 20:16:43 +0000 (16:16 -0400)]
pimd: Do not send register stop in some cases
When we are disabling pim, there exists some
race conditions where we are attempting
to send a register stop out a interface that
is not setup for pim yet.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Thu, 15 Sep 2016 20:50:08 +0000 (16:50 -0400)]
pimd: Further work to fix rpf lookups and nbrs
When we do a RPF lookup return a path that we have
neighbors for in those cases where we need to have
a neighbor to pass along the SG state via a pim
join/prune message.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Donald Sharp [Mon, 19 Sep 2016 17:09:38 +0000 (13:09 -0400)]
pimd: Add debug messages as to why a register packet is rejected.
When we reject a register message from someone, give some reasoning
as to the why of it being rejected to help in debugging the situation.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Daniel Walton [Sat, 17 Sep 2016 04:10:44 +0000 (04:10 +0000)]
pimd: "show ip mroute" skips entries without an OIF
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
The entry for 230.10.10.4 was not being displayed
root@superm-redxp-05[pimd]# ip mroute show
(20.0.13.253, 230.10.10.4) Iif: br1
(20.0.13.253, 230.10.10.1) Iif: br1 Oifs: swp1
root@superm-redxp-05[pimd]#
root@superm-redxp-05[pimd]#
root@superm-redxp-05[pimd]# vtysh -c 'show ip mroute'
Proto: I=IGMP P=PIM S=STATIC O=SOURCE
Source Group Proto Input iVifI Output oVifI TTL Uptime
20.0.13.253 230.10.10.1 P br1 1 swp1 2 1 00:01:09
20.0.13.253 230.10.10.4 P br1 1 none 0 0 --:--:--
root@superm-redxp-05[pimd]#
Daniel Walton [Sat, 17 Sep 2016 03:52:58 +0000 (03:52 +0000)]
pimd: JSON support for "show ip mroute"
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-12876
root@superm-redxp-05[pimd]# vtysh -c 'show ip mroute json' | pjson
{
"230.10.10.1": {
"20.0.13.253": {
"br1": {
"swp1": {
"group": "230.10.10.1",
"iVifI": 1,
"inboundInterface": "br1",
"oVifI": 2,
"outboundInterface": "swp1",
"protocolPim": true,
"source": "20.0.13.253",
"ttl": 1,
"upTime": "00:02:37"
}
}
}
},
"230.10.10.4": {
"20.0.13.253": {
"br1": {}
}
}
}
root@superm-redxp-05[pimd]#