> I have a proposed fix for: > > 6774464 assertion failure in net_hook_register() when running zone tests > > The webrev is here: > > http://cr.opensolaris.org/~seb/webrev.6774464/ > > The fix is quite simple; check for failure from net_protocol_lookup(). > A related fix that I'm making while in ipnet_register_netihook() is to > use a netid_t for this lookup instead of netstackid_t. Two two values > happen to be the same due to the implementation, but proper use of the > API would mandate a conversion from netstackid_t (which we have stored > in ipnet_stack_t) to netid_t in order to do use the > net_protocol_lookup() function.
The error messages on 311 and 317 say they're printing the stack instance not the net instance -- though I'm not sure either one is really clear to the administrator as compared to e.g. the zone name. As per our discussion yesterday, it's a shame there's no way to find out why net_protocol_lookup() failed, but I suppose the risk of it failing for another reason is slim. Finally, it seems like net_protocol_lookup() grabs a reference. So if e.g., the ips_ndv4 lookup succeeds but the ips_ndv6 lookup fails, we'll end up leaking a reference to ips_ndv4. Seems like we need to call net_protocol_release(). -- meem
