arping: save a few bytes by using mempcpy
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 25 Apr 2008 08:13:36 +0000 (08:13 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 25 Apr 2008 08:13:36 +0000 (08:13 -0000)
function                                             old     new   delta
catcher                                              357     339     -18

networking/arping.c

index 2b7a43cb63a9df9ecea40e3e4dfbbe8fd1a65139..9d2c671bc37992d3faefb857c4ebd124c5aaef13 100644 (file)
@@ -66,6 +66,13 @@ struct globals {
                count = -1; \
        } while (0)
 
+// If GNUisms are not available...
+//static void *mempcpy(void *_dst, const void *_src, int n)
+//{
+//     memcpy(_dst, _src, n);
+//     return (char*)_dst + n;
+//}
+
 static int send_pack(struct in_addr *src_addr,
                        struct in_addr *dst_addr, struct sockaddr_ll *ME,
                        struct sockaddr_ll *HE)
@@ -81,20 +88,15 @@ static int send_pack(struct in_addr *src_addr,
        ah->ar_pln = 4;
        ah->ar_op = option_mask32 & ADVERT ? htons(ARPOP_REPLY) : htons(ARPOP_REQUEST);
 
-       memcpy(p, &ME->sll_addr, ah->ar_hln);
-       p += ME->sll_halen;
-
-       memcpy(p, src_addr, 4);
-       p += 4;
+       p = mempcpy(p, &ME->sll_addr, ah->ar_hln);
+       p = mempcpy(p, src_addr, 4);
 
        if (option_mask32 & ADVERT)
-               memcpy(p, &ME->sll_addr, ah->ar_hln);
+               p = mempcpy(p, &ME->sll_addr, ah->ar_hln);
        else
-               memcpy(p, &HE->sll_addr, ah->ar_hln);
-       p += ah->ar_hln;
+               p = mempcpy(p, &HE->sll_addr, ah->ar_hln);
 
-       memcpy(p, dst_addr, 4);
-       p += 4;
+       p = mempcpy(p, dst_addr, 4);
 
        err = sendto(sock_fd, buf, p - buf, 0, (struct sockaddr *) HE, sizeof(*HE));
        if (err == p - buf) {