Anyone using SCO 3.2v4.2 with Samba 1.9.18p3??

Kevin W. Reed soldo at telesys.tnet.com
Sun Mar 29 21:43:06 GMT 1998


SCO Unix 3.2v4.2
Samba 1.9.18p3

Problem with I_STR/SIOCGIFCONF

I haven't a clue what is wrong here...

We compiled samba 1.9.18p3 using GCC and everything is working pretty
much okay.  However, when we start the nmbd server we get an error
message:

> 03/22/1998 10:19:15 netbios nameserver version 1.9.18p3 started
> Copyright Andrew Tridgell 1994-1997
> doing parameter log level = 3
> doing parameter status = yes
> doing parameter allow hosts = .tnet.com, .mailbot.com
> doing parameter log file = /usr/local/samba/var/samba-log.%m
> doing parameter max log size = 50
> doing parameter short preserve case = yes
> doing parameter preserve case = yes
> doing parameter lock directory = /usr/local/samba/var/locks
> doing parameter locking = yes
> doing parameter strict locking = yes
> doing parameter share modes = yes
> doing parameter security = user
> doing parameter socket options = TCP_NODELAY
> doing parameter os level = 33
> doing parameter domain master = yes
> doing parameter domain logons = yes
> doing parameter wins support = yes
> pm_process() returned Yes
> adding IPC service
> services not loaded
> 03/22/1998 10:19:16 becoming a daemon
> Opening sockets 137
> bind succeeded on port 137
> bind succeeded on port 138
> open_sockets: Broadcast sockets opened.
> I_STR/SIOCGIFCONF: Invalid argument           <<<<<<<<=======ERROR IS HERE

This SCO platform has all the relevent patches installed (that I know about)
but apparently there is a problem with this type of call or it is formatted
incorrectly.

Looking at the source code, it looks like:

[interfaces.c]

  ifc.ifc_len = sizeof(buff);
  ifc.ifc_buf = buff;
  if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
    DEBUG(0,("SIOCGIFCONF: %s\n", strerror(errno)));
  } else {
    ifr = ifc.ifc_req;
  
    /* Loop through interfaces, looking for given IP address */
    for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++) {
#ifdef BSDI
      if (ioctl(sock, SIOCGIFADDR, ifr) < 0) break;
#endif
      if (if_ipaddr->s_addr ==
      (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
    found = True;
    break;
      }
    }

My guess is that it isn't being passed the correct information... There
is an SCO5 section in the source file too, but this is not an SCO5 platform.

If you are using SCO 3.2v4.2 with this version of Samba, please let me
know how you got around this.... Thanks...



More information about the samba mailing list