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

Pavlin Radoslavov pavlin at icir.org
Mon Aug 21 17:27:24 PDT 2006


> I took a look at the code and compare it with FreeBSD 6.1 behaviour
> and I found out that the 64 bits LSB of netmask in
> rti_info[RTAX_NETMASK] in RTM_ADD or RTM_DELETE or RTM_CHANGE are
> garbage. It doesn't return ffff:ffff:ffff:ffff:: for an /64 entry, but
> rather  ffff:ffff:ffff:ffff::SOME:GARBAGE:HERE.
> I got this kind of messages sometimes, where the prefixlen is more than 64:
> 
> [ 2006/08/21 10:56:42  ERROR xorp_fea:63667 FEA +550 xrl_fti.cc
> send_fib_client_route_change_cb ] Error sending route change to
> fib2mrib: 102 Command failed Cannot delete route for A:B:C:D::/65: no
> such route
> [ 2006/08/21 10:56:42 WARNING xorp_fib2mrib XrlFib2mribTarget ]
> Handling method for fea_fib_client/0.1/delete_route6 failed:
> XrlCmdError 102 Command failed Cannot delete route for A:B:C:D::/65:
> no such route

Interesting. Could you send me the "route add/change/delete" commands
how to replicate the problem.

> So I believe the value has to be masked. (my comments start with //XXX)
> 
> Snippet from fea/routing_socket_utils.cc
> //
> // Get the destination mask length
> //
>  if ( (sa = rti_info[RTAX_NETMASK]) != NULL) {  //XXX <--- Should mask here?
>    dst_mask_len = RtmUtils::get_sock_mask_len(family, sa);
> //XXX or if (dst_mask_len > 64) dst_mask_len = 64; here?
>  }

This might not be the right solution, because sometimes the IPv6
prefix length can be legitimately bigger than 64. E.g., the loopback
::1 address has prefix length of 128.

Thanks,
Pavlin



More information about the Xorp-users mailing list