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.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!