[Xorp-users] Bugs? recursive malloc, fib2mrib doesn't update nexthop vif, and PIM RP never initiates a Register-Stop

A.H.T ahthamrin at gmail.com
Mon Aug 14 03:46:19 PDT 2006


Hi,

I am using XORP 1.3-Release for PIM-SMv6 and Zebra 0.95 for unicast
routing on FreeBSD 6.1.
The situations are:
1. xorpsh sometimes issues recursive malloc calls, causing segmentation fault.

2. XORP doesn't update its nexthop vif on multicast routing table If
Zebra updates a routing entry.
    show route table ipv6 multicast fib2mrib shows that the nexthop
vif is not  changed even though the nexthop address is.
  I am not sure whether this problem is intermittent or not.

3. I am wondering if this is a bug or not. I set the
switch-to-spt-threshold to a non-0 value, and my PIM RP never
initiates a Register-Stop, i.e.:
   a. The RP doesn't issue a Register-Stop when it receives PIM
Register packets for multicast group without any Join state.
   b. The RP doesn't issue a Register-Stop for PIM Register packets
when there's a Join state but no oif (i.e. the last-hop router
switched to SPT and the RP is not a router in the SPT).
   c. The RP only issues a Register-Stop if it receives a Join(S,G) message.

If it is a bug, I guess the below snippets are enough to make RP
issues a Register-Stop.

%rcsdiff -u pim_proto_register.cc
===================================================================
RCS file: RCS/pim_proto_register.cc,v
retrieving revision 1.1
diff -u -r1.1 pim_proto_register.cc
--- pim_proto_register.cc       2006/08/14 09:21:51     1.1
+++ pim_proto_register.cc       2006/08/14 10:27:40
@@ -302,8 +302,7 @@
     // messages reaches the configured threshold.
     //
     if (is_sptbit_set
-       || (pim_mre->is_switch_to_spt_desired_sg(0, 0)
-           && pim_mre->inherited_olist_sg().none())) {
+        || pim_mre->inherited_olist_sg().none()) {
        //
        // "send Register-Stop(S,G) to outer.src"
        //
%rcsdiff -u pim_mre_data.cc
===================================================================
RCS file: RCS/pim_mre_data.cc,v
retrieving revision 1.1
diff -u -r1.1 pim_mre_data.cc
--- pim_mre_data.cc     2006/08/14 09:20:51     1.1
+++ pim_mre_data.cc     2006/08/14 09:21:42
@@ -101,6 +101,11 @@
     if (! (is_wc() || is_sg() || is_sg_rpt()))
        return (false);

+    //
+    // RP SPT switch
+    //
+    if (i_am_rp())
+      return (true);
     mifs = pim_include_wc();
     if (pim_mre_sg != NULL) {
        mifs &= ~pim_mre_sg->pim_exclude_sg();


regards,

-- 
<husni>



More information about the Xorp-users mailing list