ioctl(SIOCGIFINDEX) does not require clearing of entire ifr
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 27 Mar 2018 21:54:54 +0000 (23:54 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 27 Mar 2018 21:55:43 +0000 (23:55 +0200)
function                                             old     new   delta
INET6_setroute                                       492     472     -20
do_iplink                                           1357    1330     -27
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-47)             Total: -47 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/libiproute/iplink.c
networking/route.c
networking/udhcp/d6_socket.c

index 2aa8b683b41c16a209cdb5be13c21fa0282f7668..9c164a71d904ab7167995672eca542a361157390 100644 (file)
@@ -161,7 +161,7 @@ static int get_address(char *dev, int *htype)
 
        s = xsocket(PF_PACKET, SOCK_DGRAM, 0);
 
-       memset(&ifr, 0, sizeof(ifr));
+       /*memset(&ifr, 0, sizeof(ifr)); - SIOCGIFINDEX does not need to clear all */
        strncpy_IFNAMSIZ(ifr.ifr_name, dev);
        xioctl(s, SIOCGIFINDEX, &ifr);
 
index 6edc0f6d758301541062fb4b1d4cfcb1e9816165..8387ce1bb937b08fd548bd49cb714dffa0e08532 100644 (file)
@@ -444,7 +444,7 @@ static NOINLINE void INET6_setroute(int action, char **args)
 
        if (devname) {
                struct ifreq ifr;
-               memset(&ifr, 0, sizeof(ifr));
+               /*memset(&ifr, 0, sizeof(ifr)); - SIOCGIFINDEX does not need to clear all */
                strncpy_IFNAMSIZ(ifr.ifr_name, devname);
                xioctl(skfd, SIOCGIFINDEX, &ifr);
                rt.rtmsg_ifindex = ifr.ifr_ifindex;
index 315c8d98a33e92241f2b0fa060fc9e094a9054ae..6ad53a9c2bf0dd25dca42209eb64c9491cbe7b1d 100644 (file)
@@ -63,7 +63,7 @@ int FAST_FUNC d6_read_interface(const char *interface, int *ifindex, struct in6_
                struct ifreq ifr;
                int fd;
 
-               memset(&ifr, 0, sizeof(ifr));
+               /*memset(&ifr, 0, sizeof(ifr)); - SIOCGIFINDEX does not need to clear all */
                strncpy_IFNAMSIZ(ifr.ifr_name, interface);
                fd = xsocket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
                if (ioctl(fd, SIOCGIFINDEX, &ifr) == 0) {