]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ss: Refactor to use macro for define diag nl request
authorvadimk <vadim4j@gmail.com>
Thu, 30 Oct 2014 16:49:25 +0000 (18:49 +0200)
committerStephen Hemminger <shemming@brocade.com>
Sat, 29 Nov 2014 19:29:36 +0000 (11:29 -0800)
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
misc/ss.c

index b7730b6e258c70928db0e2a67c186e9791a5635f..0526205cd9248fbe79d47799a007b04d79df7038 100644 (file)
--- a/misc/ss.c
+++ b/misc/ss.c
 #include <linux/packet_diag.h>
 #include <linux/netlink_diag.h>
 
+#define DIAG_REQUEST(_req, _r)                                             \
+       struct {                                                            \
+               struct nlmsghdr nlh;                                        \
+               _r;                                                         \
+       } _req = {                                                          \
+               .nlh = {                                                    \
+                       .nlmsg_type = SOCK_DIAG_BY_FAMILY,                  \
+                       .nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST,\
+                       .nlmsg_seq = 123456,                                \
+                       .nlmsg_len = sizeof(_req),                          \
+               },                                                          \
+       }
+
 #if HAVE_SELINUX
 #include <selinux/selinux.h>
 #else
@@ -1810,10 +1823,7 @@ static int tcpdiag_send(int fd, int protocol, struct filter *f)
 static int sockdiag_send(int family, int fd, int protocol, struct filter *f)
 {
        struct sockaddr_nl nladdr;
-       struct {
-               struct nlmsghdr nlh;
-               struct inet_diag_req_v2 r;
-       } req;
+       DIAG_REQUEST(req, struct inet_diag_req_v2 r);
        char    *bc = NULL;
        int     bclen;
        struct msghdr msg;
@@ -1826,11 +1836,6 @@ static int sockdiag_send(int family, int fd, int protocol, struct filter *f)
        memset(&nladdr, 0, sizeof(nladdr));
        nladdr.nl_family = AF_NETLINK;
 
-       req.nlh.nlmsg_len = sizeof(req);
-       req.nlh.nlmsg_type = SOCK_DIAG_BY_FAMILY;
-       req.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.nlh.nlmsg_pid = 0;
-       req.nlh.nlmsg_seq = 123456;
        memset(&req.r, 0, sizeof(req.r));
        req.r.sdiag_family = family;
        req.r.sdiag_protocol = protocol;
@@ -2592,16 +2597,7 @@ close_it:
 
 static int unix_show_netlink(struct filter *f, FILE *dump_fp)
 {
-       struct {
-               struct nlmsghdr nlh;
-               struct unix_diag_req r;
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.nlh.nlmsg_len = sizeof(req);
-       req.nlh.nlmsg_type = SOCK_DIAG_BY_FAMILY;
-       req.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.nlh.nlmsg_seq = 123456;
+       DIAG_REQUEST(req, struct unix_diag_req r);
 
        req.r.sdiag_family = AF_UNIX;
        req.r.udiag_states = f->states;
@@ -2793,21 +2789,12 @@ static int packet_show_sock(struct nlmsghdr *nlh, struct filter *f)
 static int packet_show_netlink(struct filter *f, FILE *dump_fp)
 {
        int fd;
-       struct {
-               struct nlmsghdr nlh;
-               struct packet_diag_req r;
-       } req;
+       DIAG_REQUEST(req, struct packet_diag_req r);
        char    buf[16384];
 
        if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_INET_DIAG)) < 0)
                return -1;
 
-       memset(&req, 0, sizeof(req));
-       req.nlh.nlmsg_len = sizeof(req);
-       req.nlh.nlmsg_type = SOCK_DIAG_BY_FAMILY;
-       req.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.nlh.nlmsg_seq = 123456;
-
        req.r.sdiag_family = AF_PACKET;
        req.r.pdiag_show = PACKET_SHOW_INFO | PACKET_SHOW_MEMINFO | PACKET_SHOW_FILTER;
 
@@ -3104,16 +3091,7 @@ static int netlink_show_sock(struct nlmsghdr *nlh, struct filter *f)
 
 static int netlink_show_netlink(struct filter *f, FILE *dump_fp)
 {
-       struct {
-               struct nlmsghdr nlh;
-               struct netlink_diag_req r;
-       } req;
-
-       memset(&req, 0, sizeof(req));
-       req.nlh.nlmsg_len = sizeof(req);
-       req.nlh.nlmsg_type = SOCK_DIAG_BY_FAMILY;
-       req.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
-       req.nlh.nlmsg_seq = 123456;
+       DIAG_REQUEST(req, struct netlink_diag_req r);
 
        req.r.sdiag_family = AF_NETLINK;
        req.r.sdiag_protocol = NDIAG_PROTO_ALL;