Date: Wed, 28 Jul 1999 16:18:33 +0100 From: Brian Somers <brian@FreeBSD.org.uk> To: Reinier Bezuidenhout <rbezuide@oskar.nanoteq.co.za> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: newaliases and 256 tun devices Message-ID: <199907281518.QAA03664@keep.lan.Awfulhak.org> In-Reply-To: Your message of "Sat, 28 Jul 1999 13:57:18 %2B0200." <199907281157.NAA00418@oskar.nanoteq.co.za>
next in thread | previous in thread | raw e-mail | index | archive | help
If it's of any use, I have 300 tun devices in my home development machine and have no problems with sendmail, but I have a tulip card (de) rather than an Intel and haven't every ``ifconfig delete''d it. > Hi ... > > > I previously mailed the same error ... and then I thought > it was a "miss-corrolation" between kernel sources and > userland. Since then I built a SNAP of 990726 sources > and tried the same thing and the error occured again . > > Same sources used for the compile of the kernel and userlevel > binaries. > > I've now traced the following down ... it has something todo > with the changes in net/if_dl.h (the entries added for > source routing and the fact that my kernel has > pseudo-device tun 255 > in the config. > > Setup. > PII400 / Asus P2-99 990726 SNAP / fxp and de0 cards. > > When I do a "ifconfig fxp0 delete" and then a newaliases > the newaliases exits with a segmentation failt. > If I reconfig the device or up the device ... newaliases works > ok. > > I then built a kernel with only 200 tun devices. Then newaliases > works everytime. It seems that gated also suffers from the same > problem in that if no device is configured it exits on signal 6 > (core dumped) > > Just for reference this works fine on a 2.2.7/8 FreeBSD without > any problems ... > > The problem seems to be in conf.c of sendmail round line 4429 > if there is 255 tun devices the for loop below only gets to > 234 +/- and then doesn't check anything further and crashes > (but only if the working interface is deleted) > gdb shows that the pointer *sa points to somewhere wonderful :) > It must have something todo with the moving of this pointer > through the list ??? > > Was anything changed for the amount of tun devices allowed ?? > > for (i = 0; i < ifc.ifc_len; ) > { > struct ifreq *ifr = (struct ifreq *) &ifc.ifc_buf[i]; > SOCKADDR *sa = (SOCKADDR *) &ifr->ifr_addr; > struct in_addr ia; > #ifdef SIOCGIFFLAGS > struct ifreq ifrf; > #endif > char ip_addr[256]; > extern char *inet_ntoa(); > > #ifdef BSD4_4_SOCKADDR > if (sa->sa.sa_len > sizeof ifr->ifr_addr) > i += sizeof ifr->ifr_name + sa->sa.sa_len; > else > #endif > i += sizeof *ifr; > > if (tTd(0, 20)) > printf("%s\n", anynet_ntoa(sa)); > > > > Thanx > Reinier -- Brian <brian@Awfulhak.org> <brian@FreeBSD.org> <http://www.Awfulhak.org> <brian@OpenBSD.org> Don't _EVER_ lose your sense of humour ! <brian@FreeBSD.org.uk> 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?199907281518.QAA03664>