[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