aboutsummaryrefslogtreecommitdiff
path: root/networking/libiproute
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-12-08 22:56:18 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-12-08 22:56:18 +0000
commitefb545b9bdd3934dcdbf9bc0890a42081b330049 (patch)
tree4dc9212e49a5dae9890bd324bcc9bf4941e2321d /networking/libiproute
parentd1a84a2880073f6cc5e2f9f4e5f236cd110f01a0 (diff)
downloadbusybox-w32-efb545b9bdd3934dcdbf9bc0890a42081b330049.tar.gz
busybox-w32-efb545b9bdd3934dcdbf9bc0890a42081b330049.tar.bz2
busybox-w32-efb545b9bdd3934dcdbf9bc0890a42081b330049.zip
optimize 16- and 32-bit moves
function old new delta udhcpd_main 1239 1257 +18 udhcp_add_simple_option 93 92 -1 buffer_read_le_u32 19 18 -1 unpack_gz_stream_with_info 526 520 -6 dnsd_main 1470 1463 -7 udhcp_run_script 1208 1186 -22 send_ACK 255 229 -26 arping_main 1661 1623 -38 send_offer 470 428 -42 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/8 up/down: 18/-143) Total: -125 bytes
Diffstat (limited to 'networking/libiproute')
-rw-r--r--networking/libiproute/libnetlink.c4
-rw-r--r--networking/libiproute/ll_addr.c38
2 files changed, 21 insertions, 21 deletions
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index 01454fbf5..6d51d8deb 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -341,7 +341,7 @@ int FAST_FUNC addattr32(struct nlmsghdr *n, int maxlen, int type, uint32_t data)
341 rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len)); 341 rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len));
342 rta->rta_type = type; 342 rta->rta_type = type;
343 rta->rta_len = len; 343 rta->rta_len = len;
344 memcpy(RTA_DATA(rta), &data, 4); 344 move_to_unaligned32(RTA_DATA(rta), data);
345 n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + len; 345 n->nlmsg_len = NLMSG_ALIGN(n->nlmsg_len) + len;
346 return 0; 346 return 0;
347} 347}
@@ -372,7 +372,7 @@ int FAST_FUNC rta_addattr32(struct rtattr *rta, int maxlen, int type, uint32_t d
372 subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len)); 372 subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len));
373 subrta->rta_type = type; 373 subrta->rta_type = type;
374 subrta->rta_len = len; 374 subrta->rta_len = len;
375 memcpy(RTA_DATA(subrta), &data, 4); 375 move_to_unaligned32(RTA_DATA(subrta), data);
376 rta->rta_len = NLMSG_ALIGN(rta->rta_len) + len; 376 rta->rta_len = NLMSG_ALIGN(rta->rta_len) + len;
377 return 0; 377 return 0;
378} 378}
diff --git a/networking/libiproute/ll_addr.c b/networking/libiproute/ll_addr.c
index e732efdb2..f50e37193 100644
--- a/networking/libiproute/ll_addr.c
+++ b/networking/libiproute/ll_addr.c
@@ -43,6 +43,8 @@ const char *ll_addr_n2a(unsigned char *addr, int alen, int type, char *buf, int
43 43
44int ll_addr_a2n(unsigned char *lladdr, int len, char *arg) 44int ll_addr_a2n(unsigned char *lladdr, int len, char *arg)
45{ 45{
46 int i;
47
46 if (strchr(arg, '.')) { 48 if (strchr(arg, '.')) {
47 inet_prefix pfx; 49 inet_prefix pfx;
48 if (get_addr_1(&pfx, arg, AF_INET)) { 50 if (get_addr_1(&pfx, arg, AF_INET)) {
@@ -54,26 +56,24 @@ int ll_addr_a2n(unsigned char *lladdr, int len, char *arg)
54 } 56 }
55 memcpy(lladdr, pfx.data, 4); 57 memcpy(lladdr, pfx.data, 4);
56 return 4; 58 return 4;
57 } else { 59 }
58 int i;
59 60
60 for (i=0; i<len; i++) { 61 for (i = 0; i < len; i++) {
61 int temp; 62 int temp;
62 char *cp = strchr(arg, ':'); 63 char *cp = strchr(arg, ':');
63 if (cp) { 64 if (cp) {
64 *cp = 0; 65 *cp = 0;
65 cp++; 66 cp++;
66 } 67 }
67 if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) { 68 if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) {
68 bb_error_msg("\"%s\" is invalid lladdr", arg); 69 bb_error_msg("\"%s\" is invalid lladdr", arg);
69 return -1; 70 return -1;
70 } 71 }
71 lladdr[i] = temp; 72 lladdr[i] = temp;
72 if (!cp) { 73 if (!cp) {
73 break; 74 break;
74 }
75 arg = cp;
76 } 75 }
77 return i+1; 76 arg = cp;
78 } 77 }
78 return i+1;
79} 79}