Add -yy option: print ip and port associated with socket descriptors

When two ore more -y options are given, print local and remote ip:port
pairs associated with socket descriptors.  This implementation uses
NETLINK_INET_DIAG for sockaddr lookup; it's based on the patch
prepared by Zubin Mithra as a part of his GSoC 2014 strace project.

* Makefile.am (strace_SOURCES): Add socketutils.c
(EXTRA_DIST): Add linux/inet_diag.h and linux/sock_diag.h.
* defs.h (print_sockaddr_by_inode): New prototype.
* linux/inet_diag.h: New file.
* linux/sock_diag.h: Likewise.
* socketutils.c: Likewise.
* strace.1: Document -yy option.
* strace.c (usage): Likewise.
* util.c (printfd): Use print_sockaddr_by_inode.
diff --git a/linux/inet_diag.h b/linux/inet_diag.h
new file mode 100644
index 0000000..723a1b1
--- /dev/null
+++ b/linux/inet_diag.h
@@ -0,0 +1,38 @@
+#define TCPDIAG_GETSOCK 18
+#define DCCPDIAG_GETSOCK 19
+
+/* Socket identity */
+struct inet_diag_sockid {
+	uint16_t idiag_sport;
+	uint16_t idiag_dport;
+	uint32_t idiag_src[4];
+	uint32_t idiag_dst[4];
+	uint32_t idiag_if;
+	uint32_t idiag_cookie[2];
+};
+
+/* Request structure */
+struct inet_diag_req_v2 {
+	uint8_t sdiag_family;
+	uint8_t sdiag_protocol;
+	uint8_t idiag_ext;
+	uint8_t pad;
+	uint32_t idiag_states;
+	struct inet_diag_sockid id;
+};
+
+/* Info structure */
+struct inet_diag_msg {
+	uint8_t idiag_family;
+	uint8_t idiag_state;
+	uint8_t idiag_timer;
+	uint8_t idiag_retrans;
+
+	struct inet_diag_sockid id;
+
+	uint32_t idiag_expires;
+	uint32_t idiag_rqueue;
+	uint32_t idiag_wqueue;
+	uint32_t idiag_uid;
+	uint32_t idiag_inode;
+};