Date: Wed, 20 Sep 2000 11:02:15 -0700 (PDT) From: Matt Dillon <dillon@earth.backplane.com> To: Paul Saab <paul@mu.org> Cc: Danny Braniss <danny@cs.huji.ac.il>, Mike Smith <msmith@FreeBSD.ORG>, freebsd-hackers@FreeBSD.ORG Subject: Re: diskless workstation Message-ID: <200009201802.e8KI2Fe45459@earth.backplane.com> References: <E13bfhE-00015w-00@sexta.cs.huji.ac.il> <20000920093025.A53255@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
A quick review of the code seems to indicate that this is indeed a bug. As far as I can tell, the IN_CLASS*() macros assume host order. e.g. from /usr/include/netinet/in.h: #define IN_CLASSA(i) (((u_int32_t)(i) & 0x80000000) == 0) Since s_addr is in network byte order, the conversion is necessary. If this fixes Danny's problems, and doesn't break anyone else (Paul?), I'd say it should be committed. -Matt :Umm.. I'm using the netboot just fine here for the ports cluster and :it is using the code in the tree w/ zero modifications. It boots via :nfs and comes up with ip, netmask, and gateway. : :paul : :Danny Braniss (danny@cs.huji.ac.il) wrote: :> bug report: :> in lib/libstand/bootp.c: :> :> if (IN_CLASSA(myip.s_addr)) :> nmask = htonl(IN_CLASSA_NET); :> else if (IN_CLASSB(myip.s_addr)) :> nmask = htonl(IN_CLASSB_NET); :> else :> nmask = htonl(IN_CLASSC_NET); :> should be: :> :> if (IN_CLASSA(ntohl(myip.s_addr))) :> nmask = htonl(IN_CLASSA_NET); :> else if (IN_CLASSB(ntohl(myip.s_addr))) :> nmask = htonl(IN_CLASSB_NET); :> else :> nmask = htonl(IN_CLASSC_NET); :> :> which explains why gateway was zero, even if it was provided by dhcp. :> it also explains why it hung trying to mount via nfs. :> :> danny To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009201802.e8KI2Fe45459>