E. Hietbrink wrote:

> Carlos Y. Villalpando wrote:
>>> ;-) of course. I'd like to ask for nl.netrek.org to be added, but first
>>> I am curious what makes the automates setup fail. David Watson (Volcane)
>>> also wondered why eurotwinks.netrek.org didn't get listed a while ago,
>>> so it is not just my server.
>> No clue.  I could do a metaserver log and a tcpdump log to find out if
>> stuff is getting to my sever to begin with.
>> Let us know when you want it added.
> Small update. I now know what makes it fail. Now I still need to fix it.
> What I did: First checked if I didn't see any PDUs sent out to any
> metaserver. Nothing. Then I started checking the file ERRORS. Ahum.
> Should have done that sooner ;-) I got loads and loads of these two
> types of messages:
>   solicit: udp_attach: unable to bind to desired interface 
> (this.host.name field): Can't assign requested address
>   solicit: udp_tx: sendto: Can't assign requested address
> Closer investigation and debugging in solicit.c reveals that somehow
> the calls to gethostbyname(m->ours) and gethostbyname(m->host) return
> garbage. Wierd. This I need to look into.

I seem to have a 64-bit problem. I run a Sun UltraSparc with NetBSD and
the Vanilla server code isn't 64-bit safe. Example: changing the pointer
copy in solicit.c from:

   m->address.sin_addr.s_addr = *(long *) hp->h_addr;


   ((char *)&(m->address.sin_addr.s_addr))[0] = hp->h_addr[0];
   ((char *)&(m->address.sin_addr.s_addr))[1] = hp->h_addr[1];
   ((char *)&(m->address.sin_addr.s_addr))[2] = hp->h_addr[2];
   ((char *)&(m->address.sin_addr.s_addr))[3] = hp->h_addr[3];

solved my gethostbyname() issue.

I think the ultrasparc is capable of running both 64 as 32 bit binairies
concurrently, however I haven't found any compiler flag to enforce
32bit compiles. What's the procedure to follow here? Make the entire
server 64-bit safe?

> I did see another thing. Namely I run the server on a box behind a
> NAT firewall. So my internal addresses won't be the same as the call to
> gethostbyname("nl.netrek.org") returns. As a result the bind() call will
> fail with (errno = 49 = EADDRNOTAVAIL) and the automated registration
> will still fail.
> Is the bind() call really necessary? What if the server simply sends
> the raw announcement PDU. Does the metaserver run a check on sender
> address with the DNS-lookup-result of the reported serveraddress? That
> would still make it `failsafe'.

At the moment i'm running with the bind call deleted.

Greetx, Erik

vanilla-metaserver mailing list
vanilla-metaserver at lists.real-time.com