Mouse <mouse%Rodents-Montreal.ORG@localhost> writes: >> Agreed, 90%. The kernel should probably zero sin_zero when needed, >> unless the syscall interface, which means posix, perhaps, documents >> that they must be zero. > > Even then, I think it should. POSIX is more about political > compromises, in many cases, than it is about good interface > engineering. Having eight bytes of magic data which is barely > mentioned in the manpage (inet(4) lists it in the struct elements but > doesn't mention it elsewhere, at least as of 5.1) but which must be > zero for proper operation - but, if it's not zero, leads to mysterious, > obscure, and silent failure modes? Depending on accumulated cultural > lore for people to learn that it's MBZ? That is _horrible_ interface > engineering. I've been working with that struct for over twenty years > and still didn't really understand what the deal was with sin_zero > until I put a couple of days into trying to get rid of it and tracking > down the resulting weird failures. Sure, I have no issue with the kernel checking/zeroing (maybe logging if DIAGNOSTIC, or some such) if there is an interface failure, if it turns out that the spec says they are zero. I just meant we should get spec clarity and know what we are doing relative to it. I agree this is unnecessarily tricky.
Attachment:
pgpjtSjJq3P1M.pgp
Description: PGP signature