summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasatake YAMATO <yamato@redhat.com>2014-03-11 23:37:37 +0900
committerDmitry V. Levin <ldv@altlinux.org>2014-03-11 22:56:42 +0000
commit2394a3d0e5ee5684a42b36218ada2dcf3b4e705f (patch)
treecc35aa3f668b49c2d6cb781a484e23318bd60564
parent033fb910a291a26d714d277c748683e67903f44c (diff)
downloadstrace-2394a3d0e5ee5684a42b36218ada2dcf3b4e705f.tar.gz
strace-2394a3d0e5ee5684a42b36218ada2dcf3b4e705f.tar.bz2
strace-2394a3d0e5ee5684a42b36218ada2dcf3b4e705f.tar.xz
Decode protocol argument for PF_NETLINK sockets
* net.c (protocols): Rename to inet_protocols. [PF_NETLINK] (netlink_protocols): New xlat structure. (sys_socket): Rename protocols to inet_protocols. [PF_NETLINK]: Decode protocol argument using netlink_protocols. Signed-off-by: Masatake YAMATO <yamato@redhat.com> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Acked-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--net.c81
1 files changed, 78 insertions, 3 deletions
diff --git a/net.c b/net.c
index 10b3528..a466efe 100644
--- a/net.c
+++ b/net.c
@@ -479,8 +479,8 @@ static const struct xlat socketlayers[] = {
/* The SOL_* array should remain not NULL-terminated. */
};
/*** WARNING: DANGER WILL ROBINSON: NOTE "socketlayers" array above
- falls into "protocols" array below!!!! This is intended!!! ***/
-static const struct xlat protocols[] = {
+ falls into "inet_protocols" array below!!!! This is intended!!! ***/
+static const struct xlat inet_protocols[] = {
XLAT(IPPROTO_IP),
XLAT(IPPROTO_ICMP),
XLAT(IPPROTO_TCP),
@@ -571,6 +571,76 @@ static const struct xlat protocols[] = {
#endif
XLAT_END
};
+
+#ifdef PF_NETLINK
+static const struct xlat netlink_protocols[] = {
+#ifdef NETLINK_ROUTE
+ XLAT(NETLINK_ROUTE),
+#endif
+#ifdef NETLINK_UNUSED
+ XLAT(NETLINK_UNUSED),
+#endif
+#ifdef NETLINK_USERSOCK
+ XLAT(NETLINK_USERSOCK),
+#endif
+#ifdef NETLINK_FIREWALL
+ XLAT(NETLINK_FIREWALL),
+#endif
+#ifdef NETLINK_SOCK_DIAG
+ XLAT(NETLINK_SOCK_DIAG),
+#endif
+#ifdef NETLINK_NFLOG
+ XLAT(NETLINK_NFLOG),
+#endif
+#ifdef NETLINK_XFRM
+ XLAT(NETLINK_XFRM),
+#endif
+#ifdef NETLINK_SELINUX
+ XLAT(NETLINK_SELINUX),
+#endif
+#ifdef NETLINK_ISCSI
+ XLAT(NETLINK_ISCSI),
+#endif
+#ifdef NETLINK_AUDIT
+ XLAT(NETLINK_AUDIT),
+#endif
+#ifdef NETLINK_FIB_LOOKUP
+ XLAT(NETLINK_FIB_LOOKUP),
+#endif
+#ifdef NETLINK_CONNECTOR
+ XLAT(NETLINK_CONNECTOR),
+#endif
+#ifdef NETLINK_NETFILTER
+ XLAT(NETLINK_NETFILTER),
+#endif
+#ifdef NETLINK_IP6_FW
+ XLAT(NETLINK_IP6_FW),
+#endif
+#ifdef NETLINK_DNRTMSG
+ XLAT(NETLINK_DNRTMSG),
+#endif
+#ifdef NETLINK_KOBJECT_UEVENT
+ XLAT(NETLINK_KOBJECT_UEVENT),
+#endif
+#ifdef NETLINK_GENERIC
+ XLAT(NETLINK_GENERIC),
+#endif
+#ifdef NETLINK_SCSITRANSPORT
+ XLAT(NETLINK_SCSITRANSPORT),
+#endif
+#ifdef NETLINK_ECRYPTFS
+ XLAT(NETLINK_ECRYPTFS),
+#endif
+#ifdef NETLINK_RDMA
+ XLAT(NETLINK_RDMA),
+#endif
+#ifdef NETLINK_CRYPTO
+ XLAT(NETLINK_CRYPTO),
+#endif
+ XLAT_END
+};
+#endif
+
static const struct xlat msg_flags[] = {
XLAT(MSG_OOB),
#ifdef MSG_PEEK
@@ -1689,7 +1759,7 @@ sys_socket(struct tcb *tcp)
#ifdef PF_INET6
case PF_INET6:
#endif
- printxval(protocols, tcp->u_arg[2], "IPPROTO_???");
+ printxval(inet_protocols, tcp->u_arg[2], "IPPROTO_???");
break;
#ifdef PF_IPX
case PF_IPX:
@@ -1699,6 +1769,11 @@ sys_socket(struct tcb *tcp)
tprints("]");
break;
#endif /* PF_IPX */
+#ifdef PF_NETLINK
+ case PF_NETLINK:
+ printxval(netlink_protocols, tcp->u_arg[2], "NETLINK_???");
+ break;
+#endif
default:
tprintf("%lu", tcp->u_arg[2]);
break;