The AIX 5 fix download mechanism does work now, I downloaded the latest versions of system components. The result has not been encouaging so far, as if I leave the start of httpd in /etc/inittab AIX 5 in 64 bit mode will now always crash upon boot. I turned httpd off to be able to continue work in 64 bit mode.
I have fixed one strange bug that was causing multicast
address add/delete fail if used via the AppleTalk socket
ioctl interface. I did introduce this special ioctl
interface as not all systems sport an
SIOCADDMULTI/SIOCDELMULTI style interface. And to be exact
on AIX this is translated on AIX to the proper ndd_ctl
NDD_ENABLE_ADDRESS/NDD_DISABLE_ADDRESS calls. And here the
problem came in, I used a statment like this:
err = aa_ndd->ndd_ctl(aa_ndd, cmd == ATIOCADDMULTI? NDD_ENABLE_ADDRESS : NDD_DISABLE_ADDRESS, buf, len);
The problem here is the comparison cmd == ATIOCADDMULTI, cmd is a parameter that explicetely contains the unsigned int from the upper levels and ATIOCADDMULTI is a define using the standard sys/ioctl.h macros as _IOW('A', 5, struct ifreq). _IOW() contains some pretty obscure shifting and on AIX 64 bit does actually produce a sign extended 64 bit value that is negative (having the top 32 bits set to one). This will never compare to the plain 32 bit cmd value, casting using unsigned makes it work (cmd == (unsigned)ATIOCADDMULTI). Go figure.