]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
7 years agopimd: Fix where we handle the inherited_olist for ifchannel
Donald Sharp [Mon, 5 Dec 2016 21:26:59 +0000 (16:26 -0500)]
pimd: Fix where we handle the inherited_olist for ifchannel

When we receive a new *,G ifchannel, handle the inherited_olist
for S,G mroutes in a place where it is more appropriate.

Ticket: CM-13892
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Stop sending Register under certain situations
Donald Sharp [Mon, 5 Dec 2016 12:39:59 +0000 (07:39 -0500)]
pimd: Stop sending Register under certain situations

When the switch in question is both a FHR and the RP
for the received multicast group stream.  When we go
to send the NULL register to the RP( ourselves )
do not send it if we have not seen packets for
that stream in time greater than PIM_KEEPALIVE_PERIOD
and I_am_RP(G).

Ticket: CM-13880
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: increase the maximum msdp TLV burst to 100 from 12
anuradhak [Mon, 5 Dec 2016 16:27:06 +0000 (08:27 -0800)]
pimd: increase the maximum msdp TLV burst to 100 from 12

12 is too slow of a slow-start in scale setup (say with 6000 SAs)
when sources are being learnt one at a time (but in a rapid fire
fashion).

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agozebra: LastUsed needs to be updated properly.
Donald Sharp [Sun, 4 Dec 2016 19:41:20 +0000 (14:41 -0500)]
zebra: LastUsed needs to be updated properly.

The change to allow 12.04 to work killed S,G age out.

Put it back.

Ticket: CM-13879
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: Allow json to work across different versions.
Donald Sharp [Sat, 3 Dec 2016 01:39:24 +0000 (20:39 -0500)]
lib: Allow json to work across different versions.

The json_object_object_get_ex function is not fully available
across all versions of json.  Write a wrapper to allow
it to work.

Ticket: CM-13872
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: reset packet size on tcp connection reset
anuradhak [Sat, 3 Dec 2016 00:12:35 +0000 (16:12 -0800)]
pimd: reset packet size on tcp connection reset

If we were in the middle of a partial read when the tcp connection is
reset we were clearing the buffers but not the packet size. This can be
problematic when the connection is re-established.

There is no easy way to repro and test this without scale (and a timing
pattern that is hard to predict). So this change is mostly untested.

Ticket: CM-13852
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Add debug logs to help find problems with stream_read
anuradhak [Fri, 2 Dec 2016 21:41:11 +0000 (13:41 -0800)]
pimd: Add debug logs to help find problems with stream_read

Logs only. No functional change
Ticket: CM-13852

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: With igmpv2 turned on don't accept 224.0.0.0/24 groups
Donald Sharp [Fri, 2 Dec 2016 17:48:06 +0000 (12:48 -0500)]
pimd: With igmpv2 turned on don't accept 224.0.0.0/24 groups

When a group is in the 224.0.0.0/24 range and we
have igmp v2 turned on do not allow it to be
considered for inclusion as a mroute.

Ticket: CM-13855
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

7 years agopimd: Fix 'no ip igmp query-max-response-time XX' to work
Donald Sharp [Fri, 2 Dec 2016 16:28:51 +0000 (11:28 -0500)]
pimd: Fix 'no ip igmp query-max-response-time XX' to work

Ticket:CM-13786
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Modify the Prune Pending Timer Pop to not assert
Donald Sharp [Fri, 2 Dec 2016 01:32:03 +0000 (20:32 -0500)]
pimd: Modify the Prune Pending Timer Pop to not assert

So there exist conditions where we can start the Prune
Pending Timer and receive other packets that cause
us to not stop the pending timer.  This was
due to a missread of the state machine.

Additionally when the prune pending timer pops and
we are not in prune pending state, note the fact
and move on with our life instead of crashing and burning

Ticket: CM-13851
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

7 years agopimd: Drop local SA reference when the upstream SG is deleted
anuradhak [Fri, 2 Dec 2016 05:01:34 +0000 (21:01 -0800)]
pimd: Drop local SA reference when the upstream SG is deleted

This is done irrespective of the reason for del and is intended as a
catchall for cases (unclear which ones) where the RP can drop the SG
without KAT expiry.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Fix so creation of prefix happens one time
Donald Sharp [Fri, 2 Dec 2016 13:09:15 +0000 (08:09 -0500)]
pimd: Fix so creation of prefix happens one time

Fix code so that the creation of the 224 prefix happens
one time.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Don't allow invalid groups to be passed for igmp
Donald Sharp [Thu, 1 Dec 2016 22:12:21 +0000 (17:12 -0500)]
pimd: Don't allow invalid groups to be passed for igmp

When we receive a invalid group( say outside of the 224/4
range) don't allow it to create state.  Nicely reject
the rejectable.

Ticket: CM-13821
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: restart the ka timer after the sa adv timer
anuradhak [Thu, 1 Dec 2016 23:46:36 +0000 (15:46 -0800)]
pimd: restart the ka timer after the sa adv timer

To avoid unnecessary ka activity in the network. When the SA
advertisment timer fires we build SA TLVs and send them to peers. As a
part of this tx we were also restarting the ka timer to avoid
unnecessary ka generation in the next 60 seconds. However because the
adv timer was restarted after tx (i.e. after ka restart) ka timer would
always endup firing just before the adv timer.

7 years agozebra: Cleanup compile for older linux platforms.
Donald Sharp [Thu, 1 Dec 2016 01:24:47 +0000 (20:24 -0500)]
zebra: Cleanup compile for older linux platforms.

Allow code to compile for older platforms.

Ticket: CM-13745
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Fix the number of SAs pushed into one MSDP SA-TLV
anuradhak [Thu, 1 Dec 2016 00:14:20 +0000 (16:14 -0800)]
pimd: Fix the number of SAs pushed into one MSDP SA-TLV

The entry_cnt in a SA TLV is one byte. I was trying to push 765 SAs into
each TLV resulting in strange problems in a scale setup.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Do not allow deletion of output interface.
Donald Sharp [Tue, 29 Nov 2016 15:49:00 +0000 (10:49 -0500)]
pimd: Do not allow deletion of output interface.

There exists conditions where PIM will have it's
upstream route removed and an unreachable route
is installed that points out the downstream
interface.  This unreachable route is removed
from bgp as soon as it's path selection algorithim
works properly, but pim has already deleted
the oif and never puts it back in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Fix show run output to be correct.
Donald Sharp [Wed, 30 Nov 2016 19:35:09 +0000 (14:35 -0500)]
pimd: Fix show run output to be correct.

When issuing a vtysh -m command it expects the
output it receives to be the complete command
not a partial match.

The 'debug pim packets joins' command
was being outputted as 'debug pim packets join'

This was making quagga-reload.py unhappy.  Adding
the joins word allows it to complete successfully

Ticket: CM-13805
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
7 years agopimd: Lower Hello sent to be immediate
Donald Sharp [Wed, 30 Nov 2016 00:19:51 +0000 (19:19 -0500)]
pimd: Lower Hello sent to be immediate

There exists situations where an interface flaps
and routing recovers and we attempt to install
an upstream but since we have no neighbor out
that interface still.  Let's cause the hello
to go out immediately for the 3.1 release
to allow mrouting to recover in this situation.

We will need to revisit this issue after
we have proper nexthop tracking in place

Ticket: CM-13185
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Fix pim_oil_equal function
Donald Sharp [Wed, 30 Nov 2016 02:29:59 +0000 (21:29 -0500)]
pimd: Fix pim_oil_equal function

We are self testing for c2 being equal to c2.

Bad Donald!  No Donut!

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Fix stupidity compile errors
Donald Sharp [Tue, 29 Nov 2016 23:39:50 +0000 (18:39 -0500)]
pimd: Fix stupidity compile errors

I introduced compile errors using gcc, that worked fine
with clang.

This removes the issue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Make igmp query max response time take input in dsec
Donald Sharp [Tue, 29 Nov 2016 20:48:54 +0000 (15:48 -0500)]
pimd: Make igmp query max response time take input in dsec

Make the 'ip igmp query-max-response-time' command
take input in deci-seconds and make the
'ip igmp query-max-response-time-dsec' command hidden.

Ticket:CM-13786
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Cleanup nexthop debugging
Donald Sharp [Tue, 29 Nov 2016 15:35:43 +0000 (10:35 -0500)]
pimd: Cleanup nexthop debugging

When debugging nexthops, we print allot of unnecessary data
Move some debugs to trace detail to reduce log clutter.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Add more RP rescan points
Donald Sharp [Tue, 29 Nov 2016 13:47:40 +0000 (08:47 -0500)]
pimd: Add more RP rescan points

When we add in or delete ip addresses from an interface
we may need to rescan the rp's that we know of to make
sure that they are still available.

Ticket: CM-12623
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
7 years agopimd: Only check to see if current rp is 'right' or not.
Donald Sharp [Tue, 29 Nov 2016 13:14:35 +0000 (08:14 -0500)]
pimd: Only check to see if current rp is 'right' or not.

When a new rp is entered, pim is looking at all rp's and failing the check if
any of the RP's have no path to the RP, instead of the one that was
just entered being wrong.

Ticket: CM-12623
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
7 years agopimd: When specifying 224.0.0.0/4 as the RP group inform msdp
Donald Sharp [Tue, 29 Nov 2016 12:57:10 +0000 (07:57 -0500)]
pimd: When specifying 224.0.0.0/4 as the RP group inform msdp

When we modify the 224.0.0.0/4 rp address with a:
'ip pim rp A.B.C.D'

We need to let msdp know that this command was entered.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Actually expedite a hello
Donald Sharp [Tue, 29 Nov 2016 00:05:09 +0000 (19:05 -0500)]
pimd: Actually expedite a hello

When we get a new neighbor for an interface, we need
to send a hello out that interface in some situations.
At this time we were tracking this by the pim_ifstat_hello_sent
value but not reseting it when we received a new neighbor.

Ticket: CM-13769
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopim-anycast-rp: Change the reason code on use-source config failure.
anuradhak [Tue, 29 Nov 2016 16:07:20 +0000 (08:07 -0800)]
pim-anycast-rp: Change the reason code on use-source config failure.

Was failing with a vague error -
"Source set failed"

Changed to used the error string (used by the rest of the commands) -
"Pim not enabled on this interface"

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopim-msdp: Fix pimd crash on mesh-group delete.
anuradhak [Tue, 29 Nov 2016 00:22:28 +0000 (16:22 -0800)]
pim-msdp: Fix pimd crash on mesh-group delete.

The mesh group contents were being accessed after memory was freed.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopim-nexthop: mroute and pim-upstream rpf are falling out of sync.
anuradhak [Mon, 28 Nov 2016 18:12:21 +0000 (10:12 -0800)]
pim-nexthop: mroute and pim-upstream rpf are falling out of sync.

Currently the mroute-IIF and upstream RPF-IIF/neigh are resolved separately.
This must change i.e. be merged together for a couple of reasons -
1. In the case of ECMP we will use a load-share mechanism (based on G or
SG) to pick an RPF neighbor in 3.2.1 (to use the load-sharing cap of
anycast-RP). Using a different resolution mechanism for mroute-IIF will
simply not work.
2. In a non-CLOS topology it is actually possible to have routers that
do not participate in PIM. In this case the tree will be set up using
different routers than the ones chosen for the mroute IIF. And traffic
will not be forwarded.

This change is however too big for 3.2.0. So to handle CM-13714 I have
simply forced rpf update on neigh add which fixes the specific problem
seen on link flap in a clos (it is not very efficient but traffic
recovers).
In problem state -
(jessie-30-dev-switch-amd64-sbuild)root@spine-1:/home/cumulus# ip mr
(0.0.0.0, 225.1.1.1)             Iif: lo         Oifs: swp3 lo
(20.0.11.253, 225.1.1.1)         Iif: swp1       Oifs: swp3
(jessie-30-dev-switch-amd64-sbuild)root@spine-1:/home/cumulus# vtysh -c
"show ip pim upstream"
Iif       Source          Group           State       Uptime   JoinTimer
RSTimer   KATimer   RefCnt
lo        *               225.1.1.1       Joined      00:08:44 00:00:15
--:--:--  --:--:--       1
swp2      20.0.11.253     225.1.1.1       Joined      00:08:35 00:00:56
--:--:--  00:02:59       1
(jessie-30-dev-switch-amd64-sbuild)root@spine-1:/home/cumulus#

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Remove redundant logging
Donald Sharp [Mon, 28 Nov 2016 17:18:43 +0000 (12:18 -0500)]
pimd: Remove redundant logging

When receiving a JOIN/PRUNE message if we have trace
turned on we output this:

2016/11/28 17:11:46.368827 PIM: pim_socket_recvfromto: HAVE_IP_PKTINFO to=224.0.0.13,103
2016/11/28 17:11:46.368956 PIM: Recv PIM JOINPRUNE packet from 169.254.0.6 to 224.0.0.13 on swp31s1: ttl=255 pim_version=2 pim_msg_size=34 checksum=e623
2016/11/28 17:11:46.369003 PIM: pim_joinprune_recv: from 169.254.0.6 on swp31s1
2016/11/28 17:11:46.369053 PIM: recv_prune: prune (S,G)=(20.0.11.253,229.1.2.3) rpt=0 wc=0 upstream=169.254.0.5 holdtime=210 from 169.254.0.6 on swp31s1
2016/11/28 17:11:46.369099 PIM: nonlocal_upstream: recv prune (S,G)=(20.0.11.253,229.1.2.3) to local upstream=169.254.0.5 on swp31s1

Clean up the messaging to this:

2016/11/28 17:11:46.368956 PIM: Recv PIM JOINPRUNE packet from 169.254.0.6 to 224.0.0.13 on swp31s1: ttl=255 pim_version=2 pim_msg_size=34 checksum=e623
2016/11/28 17:11:46.369053 PIM: recv_prune: prune (S,G)=(20.0.11.253,229.1.2.3) rpt=0 wc=0 upstream=169.254.0.5 holdtime=210 from 169.254.0.6 on swp31s1

Ticket: CM-13752
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
7 years agopim-nexthop: set the correct nexthop address in the rpf info.
anuradhak [Wed, 23 Nov 2016 21:35:45 +0000 (13:35 -0800)]
pim-nexthop: set the correct nexthop address in the rpf info.

When a nexthop lookup is done we can get an ECMP output. But not all
nexthops are pim neighbors. If for this reason PIM chose a nexthop other
than the first the rpf info was not being set correctly i.e.
nexthop ip was still the one associated with the first path but
interface was set to the one associated with second path.

This problem is seen on a link flap in the CLOS topology.

Ticket: CM-13714
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-msdp: Update the RP address in the SA cache entry on peer ip change
anuradhak [Wed, 23 Nov 2016 21:22:13 +0000 (13:22 -0800)]
pim-msdp: Update the RP address in the SA cache entry on peer ip change

The RP address in the SA is only for informational/display purposes. It
is still confusing if we show a stale value.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopim-msdp: cleanup debug commands
anuradhak [Tue, 22 Nov 2016 19:26:45 +0000 (11:26 -0800)]
pim-msdp: cleanup debug commands

And fixup display spacing. No functional change.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopim-msdp: CLI and debug cleanup
anuradhak [Mon, 21 Nov 2016 18:20:00 +0000 (10:20 -0800)]
pim-msdp: CLI and debug cleanup

No functional change.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
7 years agopimd: Cleanup igmp read socket
Donald Sharp [Sat, 19 Nov 2016 16:20:26 +0000 (11:20 -0500)]
pimd: Cleanup igmp read socket

With the change over to using the kernel upcall for igmp messages,
we need to add in a read thread for the igmp socket to drain
the igmp socket's receive queue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-anycast-rp: Support in BGP unnumbered networks.
anuradhak [Sat, 19 Nov 2016 00:19:26 +0000 (16:19 -0800)]
pim-anycast-rp: Support in BGP unnumbered networks.

Anycast rp requires multiple ip addresses on the lo. If PIM is used in
an unnumbered BGP network it picks one of the lo addresses as the
pim-primary for the swp interfaces. But if the anycast IP is picked up
by both sides pim nbr will never converge. So a static "use-source" config
is provided to allow the administrator to force the the hello source to the
unique IP address.

Sample output:
=============
dell-s6000-04(config-if)# do show running-config pimd
>>>>>> SNIPPED >>>>>>>>>>>>>>>>>
interface lo
 ip pim sm
 ip pim use-source 100.1.1.5
!
>>>>>> SNIPPED >>>>>>>>>>>>>>>>>
dell-s6000-04(config-if)# do show ip pim interface lo
Interface  : lo
State      : up
Use Source : 100.1.1.5
Address    : 100.1.1.5 (primary)
             100.1.1.100
>>>>>> SNIPPED >>>>>>>>>>>>>>>>>
dell-s6000-04(config-if)# do show ip pim interface lo json
{
  "lo":{
    "name":"lo",
    "state":"up",
    "address":"100.1.1.5",
    "index":1,
    "lanDelayEnabled":true,
    "useSource":"100.1.1.5",
    "secondaryAddressList":[
      "100.1.1.100"
    ],
>>>>>> SNIPPED >>>>>>>>>>>>>>>>>

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Only make the pim sockets non blocking.
Donald Sharp [Fri, 18 Nov 2016 19:11:31 +0000 (14:11 -0500)]
pimd: Only make the pim sockets non blocking.

Only make the pim sockets non-blocking on reads.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Add knob to control # of packets read in at one time
Donald Sharp [Fri, 18 Nov 2016 17:50:46 +0000 (12:50 -0500)]
pimd: Add knob to control # of packets read in at one time

Add 'ip pim packets <1-100>' command.

Allows you to control the number of packets read in before
giving control back to another part of the process.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-anycast-rp: Add limited support for secondary addresses.
anuradhak [Fri, 18 Nov 2016 17:12:27 +0000 (09:12 -0800)]
pim-anycast-rp: Add limited support for secondary addresses.

Anycast requires that the lo interface be associated with multiple
addresses. One is the anycast IP address (which is the same on all RPs
participating in RP redundancy) and the second is the unique IP address
that will be used as the router id by routing protocols.

To accomodate that we maintain a list of secondary addresses per-pim iface
and allow any of them to be the RP address. This lets the I_am_RP macro
succeed on anycast RPs.

Note that the support is limited i.e. we don't actually advertise a
secondary list to the neighbors. This is assuming the anycast IP will never
be used as a router id i.e. will never be an RPF neighbor.

Sample output:
==============
dell-s6000-04# sh ip pim interface lo
Interface : lo
State     : up
Address   : 100.1.1.1 (primary)
            100.1.1.2
            100.1.1.3
            100.1.2.1
>>>>>>> SNIP >>>>>>>>>>>>>>>
dell-s6000-04# sh ip pim interface lo json
{
  "lo":{
    "name":"lo",
    "state":"up",
    "address":"100.1.1.1",
    "index":1,
    "lanDelayEnabled":true,
    "secondaryAddressList":[
      "100.1.1.2",
      "100.1.1.3",
      "100.1.2.1"
    ],
>>>>>>> SNIP >>>>>>>>>>>>>>>
dell-s6000-04#sh ip pim rp-info
RP address       group/prefix-list   OIF         I am RP
100.1.2.1        224.0.0.0/4         lo          yes
dell-s6000-04#

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Set pim socket receive buffer to a larger value
Donald Sharp [Fri, 18 Nov 2016 00:57:10 +0000 (19:57 -0500)]
pimd: Set pim socket receive buffer to a larger value

There exists situations where we can receive data
faster than we can process it.  Make the buffer
large enough to catch these situations for
the pim sockets.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Modify mroute_read to be non-blocking
Donald Sharp [Thu, 17 Nov 2016 16:18:06 +0000 (11:18 -0500)]
pimd: Modify mroute_read to be non-blocking

Modify mroute_read to be non-blocking and
then to read in up to 3 packets at a time
to be handled.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Modify pim_sock_read to read 3 times before yielding
Donald Sharp [Thu, 17 Nov 2016 15:50:05 +0000 (10:50 -0500)]
pimd: Modify pim_sock_read to read 3 times before yielding

Modify pim_sock_read to read up to 3 packets before yielding
the cpu to something else.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Reduce duplicate debug messages in wrvifwhole
Donald Sharp [Thu, 17 Nov 2016 15:03:21 +0000 (10:03 -0500)]
pimd: Reduce duplicate debug messages in wrvifwhole

When we get a wrong vif whole callback, reduce
the duplicate debug messages being processed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Further refine debugs in pim_sock_read path
Donald Sharp [Thu, 17 Nov 2016 14:39:56 +0000 (09:39 -0500)]
pimd: Further refine debugs in pim_sock_read path

When we received a packet we were dumping packet information
with debugs on 2 times for each packet where we had overlapping
data being passed.

Since debugs are expensive, reduce the count to 1.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Allow storing of sg in string format
Donald Sharp [Thu, 17 Nov 2016 13:17:25 +0000 (08:17 -0500)]
pimd: Allow storing of sg in string format

Debugs are extremely expensive currently.  Let's
store 'struct prefix_sg sg' string format in
the ifchannel, upstream and msdp_sa structures.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Cleanup handling of pim_sock_read
Donald Sharp [Thu, 17 Nov 2016 03:59:32 +0000 (22:59 -0500)]
pimd: Cleanup handling of pim_sock_read

Cleanup some turned on debug code that is no longer
needed to be turned on in the pim_sock_read
code path.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Modify wait time for response from Null Register
Donald Sharp [Thu, 17 Nov 2016 03:12:57 +0000 (22:12 -0500)]
pimd: Modify wait time for response from Null Register

Give ourselves a few more seconds to wait for a response
for a NULL Register.  This will benefit us under heavy
mroute churn on the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-kat: changed kat handling to match rfc-4601 more closely.
anuradhak [Tue, 15 Nov 2016 23:39:11 +0000 (15:39 -0800)]
pim-kat: changed kat handling to match rfc-4601 more closely.

1. This is needed to layout the MSDP macros for determining what SAs are
originated by a MSDP speaker.
2. We no longer let the kat timer expire on an active flow. Activity
counters/lastuse is polled via a wheel for every SG entry. If new
activity is detected the keepalive timer is started and SPT bit set.
A SRC_STREAM reference is also created for the entry if one doesn't
already exist.
3. If KAT actually expires it means the flow is no longer active. At
this point we stop advertising the SA to MSDP peers. We also pull
the SRC_STREAM reference (deleting the entry if there are no other
references).

PS: Checking counters on KAT expiry will come in the next change.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Remove dead code from pim_register.c
Donald Sharp [Thu, 17 Nov 2016 00:44:23 +0000 (19:44 -0500)]
pimd: Remove dead code from pim_register.c

Remove the dead test code from pim_register.c

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Add appropriate (S,G) debugs for register
Donald Sharp [Thu, 17 Nov 2016 00:20:33 +0000 (19:20 -0500)]
pimd: Add appropriate (S,G) debugs for register

When we send a register record the S,G if debugs are turned on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Increase kernel socket rcvbuf size.
Donald Sharp [Wed, 16 Nov 2016 19:38:14 +0000 (14:38 -0500)]
pimd: Increase kernel socket rcvbuf size.

We are receiving notifications from the linux
kernel that we are filling up the receive buffer
for upcalls into pimd.  Let's increase the size
to something a bit bigger.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Add 'ip pim register-suppress-time <5-60000>'
Donald Sharp [Wed, 16 Nov 2016 23:11:49 +0000 (18:11 -0500)]
pimd: Add 'ip pim register-suppress-time <5-60000>'

Add the 'ip pim register-suppress-time ...' command.
Remove the 'no ip pim rp keep-al...' command as
that the register suppress set that value.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Move pim_mroute.c global data to file local static
Donald Sharp [Wed, 16 Nov 2016 20:12:25 +0000 (15:12 -0500)]
pimd: Move pim_mroute.c global data to file local static

Move the qpim_mroute_socket_reader thread to pim_mroute.c
and make it static to the file.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Protect log messages with debug in pim_pim.c
Donald Sharp [Wed, 16 Nov 2016 02:27:28 +0000 (21:27 -0500)]
pimd: Protect log messages with debug in pim_pim.c

Protect the log messages in pim_pim.c with PIM_DEBUG_PIM_PACKETS

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: 'show ip pim rp-info json' should use JSON_C_TO_STRING_PRETTY
Daniel Walton [Tue, 15 Nov 2016 19:08:22 +0000 (19:08 +0000)]
pimd: 'show ip pim rp-info json' should use JSON_C_TO_STRING_PRETTY

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
7 years agopimd: Use NULL to signify NULL pointer
Donald Sharp [Tue, 15 Nov 2016 17:27:17 +0000 (12:27 -0500)]
pimd: Use NULL to signify NULL pointer

Use the NULL c symbol to signify that we are
intentionally setting the pointer to NULL
instead of 0.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Allow 'ip pim rp ...' config after bringup
Donald Sharp [Tue, 15 Nov 2016 17:22:34 +0000 (12:22 -0500)]
pimd: Allow 'ip pim rp ...' config after bringup

If you specified the 'ip pim rp ...' after the
system has been configured it was not accepting
the new rp.  This fixes that issue.

Ticket:CM-12623
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Allow 'no ip pim sm' to not turn off igmp
Donald Sharp [Tue, 15 Nov 2016 17:09:14 +0000 (12:09 -0500)]
pimd: Allow 'no ip pim sm' to not turn off igmp

When we receive a 'no ip pim sm' for an interface
that has both pim and igmp on it, only turn
off pim.

Ticket: CM-12985
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Fix crash in pim_rp_show_information
Donald Sharp [Tue, 15 Nov 2016 00:54:36 +0000 (19:54 -0500)]
pimd: Fix crash in pim_rp_show_information

When a 'show ip pim rp-info' is issued shortly
after a restart/start, pim will crash because
nexthop information has not been fully resolved
and the outgoing interface is NULL.

Ticket: CM-13567
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-msdp: part-4: cli cleanup
anuradhak [Sat, 12 Nov 2016 13:39:44 +0000 (05:39 -0800)]
pim-msdp: part-4: cli cleanup

1. Add support for mesh-group based configuration that is easy to apply
via automation. The older per-peer configuartion is temporarily hidden
and will be cleaned up later.
Sample config -
ip msdp mesh-group cumulus source 100.1.1.4
ip msdp mesh-group cumulus member 100.1.1.5
ip msdp mesh-group cumulus member 100.1.1.6

2. Added support for detail peer and sa-cache displays. Along with
filter keys.

3. Add json output for all the msdp displays.

With this commit basic support for anycast-RP with MSDP (in numbered
network is complete). Unnumbered support will be added separately.

Ticket: CM-13306

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Backing up broken state.
Donald Sharp [Mon, 14 Nov 2016 13:45:44 +0000 (08:45 -0500)]
pimd: Backing up broken state.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: Fix clang SA warnings.
Donald Sharp [Sun, 13 Nov 2016 03:45:25 +0000 (22:45 -0500)]
lib: Fix clang SA warnings.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agozebra: Cleanup zebra_static CLANG/SA issues.
Donald Sharp [Sun, 13 Nov 2016 03:12:13 +0000 (22:12 -0500)]
zebra: Cleanup zebra_static CLANG/SA issues.

When compiling using CLANG's SA, cleanup the
SA issues found.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Removing impossible code
Donald Sharp [Sat, 12 Nov 2016 02:21:49 +0000 (21:21 -0500)]
pimd: Removing impossible code

We've already allocated the mp data structure
and am using hash_alloc_intern for the hash_get
function.  This will return the passed
in data structure.  There is no possibility
of mp being NULL.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agozebra: Fix clang SA warnings
Donald Sharp [Sat, 12 Nov 2016 02:07:50 +0000 (21:07 -0500)]
zebra: Fix clang SA warnings

The mr value was not being initialized to anything
and as such could contain garbage.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Reduce pim oil scan timer to 50ms
Donald Sharp [Sat, 12 Nov 2016 01:00:15 +0000 (20:00 -0500)]
pimd: Reduce pim oil scan timer to 50ms

We need to react to route changes/Interface up/down events
faster in PIM.  Reduce the timer down to 50ms.

Ticket:CM-13549
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Start handling of wrong interface for (*,G)
Donald Sharp [Sat, 12 Nov 2016 00:13:55 +0000 (19:13 -0500)]
pimd: Start handling of wrong interface for (*,G)

When we get a callback for a specific (S,G) and
we have no ifchannel for it, see if we have a
(*,G) channel and handle it appropriately.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: Fix thread_execute_crash
Donald Sharp [Fri, 11 Nov 2016 18:57:49 +0000 (13:57 -0500)]
lib: Fix thread_execute_crash

With the change to have thread_get fill inthe ->hist
pointer, thread_execute was missed and it
needs to fill in the .hist pointer for the
dummy thread created.

I'm not really sure why we need to call a
thread_execute on a function.  When we
could, you know, just call the bloody
thing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopim-msdp: part-3: use SA cache for setting up SPTs
anuradhak [Tue, 8 Nov 2016 18:34:31 +0000 (10:34 -0800)]
pim-msdp: part-3: use SA cache for setting up SPTs

1. Added a new MSDP source reference flag for creating (S,G) entries
based on the SA-cache. The RFC recommends treating as SA like rxing
a (S, G) join (which is a bit different then treating like a traffic
stream).
2. SA-SPT is only setup if we are RP for the group and a corresponding
(*,G) exists with a non-empty OIL.
3. When an SA is moved we need to let the SPT live if it is active (this
change will come in a subsequent CL).

Testing done:
1. SA first; SPT setup whenever (*, G) comes around.
2. (*, G) first. As soon as SA is added SPT is setup.
3. (*, G) del with valid SA entries around.

Ticket: CM-13306

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Add (-) PRUNE(S,G,rpt) from interface determination.
Donald Sharp [Fri, 11 Nov 2016 02:08:48 +0000 (21:08 -0500)]
pimd: Add (-) PRUNE(S,G,rpt) from interface determination.

When determining the inherited_olist(S,G) add
the determination that we have received a
prune(S,G,rpt) from a neighbor.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agozebra: Perform safe walk of RIB entries in rib_process()
vivek [Fri, 11 Nov 2016 02:49:43 +0000 (18:49 -0800)]
zebra: Perform safe walk of RIB entries in rib_process()

There is a scenario where a RIB entry is unlinked and freed during RIB
processing. However, the walk of the entries is not being performed in
a safe manner. Fix the code to do this correctly.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Ticket: CM-13393
Reviewed By: Trivial
Testing Done: Basic manual test

7 years agopimd: Fix the test to see if a upstream is (S,G,rpt)
Donald Sharp [Fri, 11 Nov 2016 01:09:01 +0000 (20:09 -0500)]
pimd: Fix the test to see if a upstream is (S,G,rpt)

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: Fix 'show thread cpu' to display active threads
Donald Sharp [Thu, 10 Nov 2016 19:25:39 +0000 (14:25 -0500)]
lib: Fix 'show thread cpu' to display active threads

Fix the display of 'show thread cpu' to keep track
of the number of active threads and to display that
information.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: Slight Optimization of thread handling.
Donald Sharp [Thu, 10 Nov 2016 18:58:40 +0000 (13:58 -0500)]
lib: Slight Optimization of thread handling.

This commit does these things:

1) Make thread_add_unuse own the setting of THREAD_UNUSED.
2) Move thread->hist finding to to thread_get.
   We are storing the thread->hist even when the thread
   is on the unused.  This means that we check to see
   if the funcname or func have changed and we get new
   history.  Else we've probably just retrieved the last
   unused which has the same func/funcanme.  This is
   a common practice to do THREAD_OFF/THREAD_ON in
   quick succession.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
7 years agopimd: Add code to handle pim prune(S,G) with sptbit
Donald Sharp [Thu, 10 Nov 2016 15:25:36 +0000 (10:25 -0500)]
pimd: Add code to handle pim prune(S,G) with sptbit

Add some more code to handle the prune(S,G) with the
sptbit set.  Turns this ifchannel into a (S,G,rpt).

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Write pim_upstream_empty_inherited_olist
Donald Sharp [Thu, 10 Nov 2016 14:41:28 +0000 (09:41 -0500)]
pimd: Write pim_upstream_empty_inherited_olist

A empty inherited_olist implies that we have
no outgoing interfaces.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Fix possible crash when leaving a channel
Donald Sharp [Thu, 10 Nov 2016 12:35:02 +0000 (07:35 -0500)]
pimd: Fix possible crash when leaving a channel

When leaving a channel, there exists a possibility
that we have not created the channel oil yet.
Ensure that we have channel oil before dereferencing

Ticket: CM-13522
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Modify downstream JP state to take into account all states
Donald Sharp [Wed, 9 Nov 2016 13:30:04 +0000 (08:30 -0500)]
pimd: Modify downstream JP state to take into account all states

When we make a decision about downstream state let's
take into account all states.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agopimd: Remove unnecessary asserts
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>
7 years agopimd: Add Handler for Receive (*,G) join for (S,G,rpt)
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>
7 years agopimd: Ensure 'struct prefix sg' is inited in right order
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>
7 years agopimd: Fix 'show ip pim join json' output
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>
7 years agopimd: Add ability to know if ifchannel is (S,G,rpt)
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>
7 years agopimd: 'show ip pim join json' add by src not grp
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>
7 years agopimd: Don't delete ifchannel if expiry timer is still running.
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>
7 years agopimd: use 'struct prefix_sg' for recv_join and _prune
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>
7 years agopimd: Modify pim_parse_addr_source to use 'struct prefix_sg'
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>
7 years agopimd: Modify pim_parse_addr_group to use 'struct prefix_sg'
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>
7 years agopimd: Add ability for ifchannel *,G to know their S,G's
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>
7 years agopimd: Send prune(S,G,RPT) with (*,G) join
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>
7 years agopim-msdp: part-2: SA cache support
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>
7 years agopimd: Store ifchannel information in a global list too.
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>
7 years agopimd: Allow further refinement of pim join order
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>
7 years agopimd: Protect some zlog_debug messages
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>
7 years agopimd: Protect debug messages.
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>
7 years agolib: Turn off automatic debugging of Wheel code.
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>
7 years agopimd: Add some explanatory debugging for a error condition.
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>
7 years agopimd: Fix test for (S,G,rpt) prune inclusion.
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>
7 years agopimd: No need to reset uptime if state is the same
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>