inet_pton() bad family "26" on well known package

[email protected] Fri, 23 Nov 2012 13:42:54 +1100 (EST)
Newsgroups gmane.os.solaris.managers
Message-ID <[email protected]>
Hi,
we have a package "LPRng" that we deploy everywhere. 
The package is rather old, but works fine in all cases, except for one system.

When I attempt to do lpq on the failbox I get:

lpq
  pr99: inet_pton: bad family '26'

On an identical system, the commands work fine.

I did some reading and this has something to do with "IPv6" which we do not configure for,
but just IPv4.

I have scoped the two systems and the failbox had an IPv6 style entry for "localhost",
so I removed it but left the remaining v4 entry.   Next I rebooted the system in case something
was cached in-kernel or in the TCP/IP stack or whatever.

I checked a file on both systems:

cat /etc/inet/sock2path | grep 26
 	26      2       0       /dev/tcp6
         26      2       6       /dev/tcp6
         26      1       0       /dev/udp6
         26      1       17      /dev/udp6
         26      4       0       /dev/rawip6
         26      2       132     /dev/sctp6
         26      6       132     /dev/sctp6

And this is obviously something definitely to do with IPv6.

I have now exhausted what I know about looking for IPv6 entries on the system 
and do not know where to look next.   The /etc/inet files are the same formats on both systems, 
as is /etc/netmasks, ipnodes etc.

When I do a truss of the binary, which is identical on both systems, the failbox immediately starts 
going down a different path to the okbox.

eg - failbox:
open64("/var/run/name_service_door", O_RDONLY)  = 3
fcntl(3, F_SETFD, 0x00000001)                   = 0
door_info(3, 0xFF2858D0)                        = 0
close(3)                                        = 0
open("/etc/nsswitch.conf", O_RDONLY|O_LARGEFILE) = 3
fcntl(3, F_DUPFD, 0x00000100)                   Err#22 EINVAL
read(3, " #\n #   C o p y r i g h".., 1024)     = 1024
mmap(0x00010000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF100000
read(3, " t h e   s y s t e m   w".., 1024)     = 273
read(3, 0xFF372400, 1024)                       = 0
close(3)                                        = 0
...


goodbox:
open64("/var/run/name_service_door", O_RDONLY)  = 3
fcntl(3, F_SETFD, 0x00000001)                   = 0
door_info(3, 0xFF233910)                        = 0
door_call(3, 0xFFBFF34C)                        = 0
getuid()                                        = 0 [0]
getuid()                                        = 0 [0]
setuid(0)                                       = 0
seteuid(0)                                      = 0
getuid()                                        = 0 [0]
getuid()                                        = 0 [0]
setuid(0)                                       = 0
seteuid(0)                                      = 0
getuid()                                        = 0 [0]
sigaction(SIGCLD, 0xFFBFF5D8, 0xFFBFF678)       = 0
....


So from the point above where the door opens, they then diverge greatly in result.


So, my analysis thus far is:
There is an IPv6 config in place somewhere on "failbox" that "okbox" does not have.

Where do I start looking now?   I have done a side by side eyeball audit of the appropriate configs and 
cannot see it.   Is it something to do with the name_service_door?

Any advice much appreciated!


rachel

-- 
Rachel Polanskis                 Kingswood, Greater Western Sydney, Australia
[email protected]                http://www.zeta.org.au/~grove/grove.html
 	The more an answer costs, the more respect it carries.