aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2016-08-14 02:08:56 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-08-14 02:08:56 +0200
commit454829379951cb15d03d7e51ff292addde8548df (patch)
tree29e6ba865e59d7491fd94a0406a178a2d91adabe
parent34ecc3b7aefdd6c31e8691bd5485037bbabedbd4 (diff)
downloadbusybox-w32-454829379951cb15d03d7e51ff292addde8548df.tar.gz
busybox-w32-454829379951cb15d03d7e51ff292addde8548df.tar.bz2
busybox-w32-454829379951cb15d03d7e51ff292addde8548df.zip
libiproute: eliminate some redundant zero stores
function old new delta do_iprule 974 955 -19 rtnl_dump_request 173 146 -27 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-46) Total: -46 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/libiproute/iprule.c8
-rw-r--r--networking/libiproute/libnetlink.c50
2 files changed, 31 insertions, 27 deletions
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c
index dba64346f..c486834b0 100644
--- a/networking/libiproute/iprule.c
+++ b/networking/libiproute/iprule.c
@@ -197,9 +197,11 @@ static int iprule_modify(int cmd, char **argv)
197 req.n.nlmsg_flags = NLM_F_REQUEST; 197 req.n.nlmsg_flags = NLM_F_REQUEST;
198 req.r.rtm_family = preferred_family; 198 req.r.rtm_family = preferred_family;
199 req.r.rtm_protocol = RTPROT_BOOT; 199 req.r.rtm_protocol = RTPROT_BOOT;
200 req.r.rtm_scope = RT_SCOPE_UNIVERSE; 200 if (RT_SCOPE_UNIVERSE != 0)
201 req.r.rtm_table = 0; 201 req.r.rtm_scope = RT_SCOPE_UNIVERSE;
202 req.r.rtm_type = RTN_UNSPEC; 202 /*req.r.rtm_table = 0; - already is */
203 if (RTN_UNSPEC != 0)
204 req.r.rtm_type = RTN_UNSPEC;
203 205
204 if (cmd == RTM_NEWRULE) { 206 if (cmd == RTM_NEWRULE) {
205 req.n.nlmsg_flags |= NLM_F_CREATE|NLM_F_EXCL; 207 req.n.nlmsg_flags |= NLM_F_CREATE|NLM_F_EXCL;
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index cbb5daf95..9d5c6416b 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -68,30 +68,32 @@ int FAST_FUNC rtnl_send(struct rtnl_handle *rth, char *buf, int len)
68 68
69int FAST_FUNC rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) 69int FAST_FUNC rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len)
70{ 70{
71 struct nlmsghdr nlh; 71 struct {
72 struct sockaddr_nl nladdr; 72 struct nlmsghdr nlh;
73 struct iovec iov[2] = { { &nlh, sizeof(nlh) }, { req, len } }; 73 struct msghdr msg;
74 /* Use designated initializers, struct layout is non-portable */ 74 struct sockaddr_nl nladdr;
75 struct msghdr msg = { 75 } s;
76 .msg_name = (void*)&nladdr, 76 struct iovec iov[2] = { { &s.nlh, sizeof(s.nlh) }, { req, len } };
77 .msg_namelen = sizeof(nladdr), 77
78 .msg_iov = iov, 78 memset(&s, 0, sizeof(s));
79 .msg_iovlen = 2, 79
80 .msg_control = NULL, 80 s.msg.msg_name = (void*)&s.nladdr;
81 .msg_controllen = 0, 81 s.msg.msg_namelen = sizeof(s.nladdr);
82 .msg_flags = 0 82 s.msg.msg_iov = iov;
83 }; 83 s.msg.msg_iovlen = 2;
84 84 /*s.msg.msg_control = NULL; - already is */
85 memset(&nladdr, 0, sizeof(nladdr)); 85 /*s.msg.msg_controllen = 0; - already is */
86 nladdr.nl_family = AF_NETLINK; 86 /*s.msg.msg_flags = 0; - already is */
87 87
88 nlh.nlmsg_len = NLMSG_LENGTH(len); 88 s.nladdr.nl_family = AF_NETLINK;
89 nlh.nlmsg_type = type; 89
90 nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST; 90 s.nlh.nlmsg_len = NLMSG_LENGTH(len);
91 nlh.nlmsg_pid = 0; 91 s.nlh.nlmsg_type = type;
92 nlh.nlmsg_seq = rth->dump = ++rth->seq; 92 s.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
93 93 /*s.nlh.nlmsg_pid = 0; - already is */
94 return sendmsg(rth->fd, &msg, 0); 94 s.nlh.nlmsg_seq = rth->dump = ++rth->seq;
95
96 return sendmsg(rth->fd, &s.msg, 0);
95} 97}
96 98
97static int rtnl_dump_filter(struct rtnl_handle *rth, 99static int rtnl_dump_filter(struct rtnl_handle *rth,