diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-08-14 02:08:56 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-08-14 02:08:56 +0200 |
commit | 454829379951cb15d03d7e51ff292addde8548df (patch) | |
tree | 29e6ba865e59d7491fd94a0406a178a2d91adabe | |
parent | 34ecc3b7aefdd6c31e8691bd5485037bbabedbd4 (diff) | |
download | busybox-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.c | 8 | ||||
-rw-r--r-- | networking/libiproute/libnetlink.c | 50 |
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 | ||
69 | int FAST_FUNC rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) | 69 | int 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 | ||
97 | static int rtnl_dump_filter(struct rtnl_handle *rth, | 99 | static int rtnl_dump_filter(struct rtnl_handle *rth, |