]> granicus.if.org Git - strace/commitdiff
netlink_sock_diag: print inet_diag_sockid.idiag_if as an interface index
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sat, 1 Jul 2017 00:05:39 +0000 (00:05 +0000)
* netlink_sock_diag.c (print_inet_diag_sockid): Print idiag_if field
using print_ifindex.
* tests/nlattr_inet_diag_msg.c: Include <net/if.h>.
(IFINDEX_LO): New macro.
(init_inet_diag_msg): Set inet_diag_sockid.idiag_if field.
(print_inet_diag_msg): Update expected output.

netlink_sock_diag.c
tests/nlattr_inet_diag_msg.c

index 594fef0bed63cce3b9db63b9a3f2f218a1b7fc3b..c32480ea80a75f91561b9c912b74dab04ffd9ab7 100644 (file)
@@ -356,7 +356,9 @@ print_inet_diag_sockid(const struct inet_diag_sockid *id, const uint8_t family)
        print_inet_addr(family, id->idiag_dst,
                        sizeof(id->idiag_dst), "idiag_dst");
 
-       PRINT_FIELD_U(", ", *id, idiag_if);
+       tprints(", idiag_if=");
+       print_ifindex(id->idiag_if);
+
        PRINT_FIELD_COOKIE(", ", *id, idiag_cookie);
 
        tprints("}");
index 59c2e0d0ac4285b90a84f27f29ba266a014b116e..33397c7878dcd9a692e462e3a5e8a95ee5d22ea6 100644 (file)
 
 #include <stdio.h>
 #include <string.h>
-#include <netinet/tcp.h>
 #include <arpa/inet.h>
+#include <net/if.h>
+#include <netinet/tcp.h>
 #include "test_nlattr.h"
 #include <linux/inet_diag.h>
 #include <linux/sock_diag.h>
 
 static const char address[] = "10.11.12.13";
 
+#ifdef HAVE_IF_INDEXTONAME
+# define IFINDEX_LO    (if_nametoindex("lo"))
+#else
+# define IFINDEX_LO    1
+#endif
+
 static void
 init_inet_diag_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -50,7 +57,8 @@ init_inet_diag_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
        struct inet_diag_msg *const msg = NLMSG_DATA(nlh);
        SET_STRUCT(struct inet_diag_msg, msg,
                .idiag_family = AF_INET,
-               .idiag_state = TCP_LISTEN
+               .idiag_state = TCP_LISTEN,
+               .id.idiag_if = IFINDEX_LO
        );
 
        if (!inet_pton(AF_INET, address, msg->id.idiag_src) ||
@@ -67,9 +75,9 @@ print_inet_diag_msg(const unsigned int msg_len)
               ", id={idiag_sport=htons(0), idiag_dport=htons(0)"
               ", inet_pton(AF_INET, \"%s\", &idiag_src)"
               ", inet_pton(AF_INET, \"%s\", &idiag_dst)"
-              ", idiag_if=0, idiag_cookie=[0, 0]}, idiag_expires=0"
-              ", idiag_rqueue=0, idiag_wqueue=0, idiag_uid=0"
-              ", idiag_inode=0}",
+              ", idiag_if=if_nametoindex(\"lo\"), idiag_cookie=[0, 0]}"
+              ", idiag_expires=0, idiag_rqueue=0, idiag_wqueue=0"
+              ", idiag_uid=0, idiag_inode=0}",
               msg_len, address, address);
 }