On 10/23/2012 09:42 PM, David Miller wrote:
From: Pavel Emelyanov <redacted>
Date: Tue, 23 Oct 2012 20:28:22 +0400
quoted
+static inline int shutdown_mask2u(int mask)
+{
+ /*
+ * map
+ * RCV_SHUTDOWN -> SHUT_RD
+ * SEND_SHUTDOWN -> SHUT_WR
+ * SHUTDOWN_MASK -> SHUT_RDWR
+ */
+
+ return mask - 1;
+}
This is horrible.
You're returning "-1" when the socket hasn't been shutdown in any way.
Do this:
1) Use a '1' based encoding like the kernel codes so that '0' means
no shutdown, as any sane interface would. That's why we use that
representation internally.
2) Get rid of all of this extension crap, and just report this value
in the pad byte. In older kernels it will just be zero, which is
fine.
The response message of inet-diag never had any pad bytes, I'll have to
add the new attrtype (the unix-diag response has one, but I plan to add
attrtype there too for uniformity).
Thanks,
Pavel