On (03/18/10 10:13), Peter Memishian wrote:
> > I have some code that's trying to do a NetBIOS name lookup.
> > This code is using the old fashioned method of sendto()
> > with destination INADDR_BROADCAST. This used to work,
> > but recently started getting ENETUNREACH errors from
> > the sendto() calls - but only SOME of the time!
> >
> > Anyone have ideas why this has started to fail?
>
> As of b129 (IP Datapath Refactoring) the sendto() path can synchronously
> return errors. Erik and Sowmini can likely help more since they're
> intimately familiar with the new codepaths, but it's possible this is
> also a longstanding issue which was not previously reported because of the
> previous sendto() semantics.
>
Meem's right. To confirm, you could run the dscript below, and possibly
print ustack when you see the ENETUNREACH (error 0x80) being returned.
The dscript to run would be:
#!/usr/sbin/dtrace -Cs -
ip_attr_connect:entry
{
self->trace = 1;
}
ip_set_destination_v4:entry
/self->trace/
{
printf("%x", (ipaddr_t)arg1)
}
ip_set_destination_v4:return,
ipif_select_source_v4:return
/self->trace/
{
printf("arg1 %p", arg1);
}
ip_attr_connect:return
/self->trace/
{
self->trace = 0;
}
_______________________________________________
networking-discuss mailing list
[email protected]