aboutsummaryrefslogtreecommitdiff
path: root/networking/libiproute/ll_addr.c
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/ll_addr.c
parentd1a84a2880073f6cc5e2f9f4e5f236cd110f01a0 (diff)
downloadbusybox-efb545b9bdd3934dcdbf9bc0890a42081b330049.tar.gz
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/ll_addr.c')
-rw-r--r--networking/libiproute/ll_addr.c38
1 files changed, 19 insertions, 19 deletions
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
int ll_addr_a2n(unsigned char *lladdr, int len, char *arg)
{
+ int i;
+
if (strchr(arg, '.')) {
inet_prefix pfx;
if (get_addr_1(&pfx, arg, AF_INET)) {
@@ -54,26 +56,24 @@ int ll_addr_a2n(unsigned char *lladdr, int len, char *arg)
}
memcpy(lladdr, pfx.data, 4);
return 4;
- } else {
- int i;
+ }
- for (i=0; i<len; i++) {
- int temp;
- char *cp = strchr(arg, ':');
- if (cp) {
- *cp = 0;
- cp++;
- }
- if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) {
- bb_error_msg("\"%s\" is invalid lladdr", arg);
- return -1;
- }
- lladdr[i] = temp;
- if (!cp) {
- break;
- }
- arg = cp;
+ for (i = 0; i < len; i++) {
+ int temp;
+ char *cp = strchr(arg, ':');
+ if (cp) {
+ *cp = 0;
+ cp++;
+ }
+ if (sscanf(arg, "%x", &temp) != 1 || (temp < 0 || temp > 255)) {
+ bb_error_msg("\"%s\" is invalid lladdr", arg);
+ return -1;
+ }
+ lladdr[i] = temp;
+ if (!cp) {
+ break;
}
- return i+1;
+ arg = cp;
}
+ return i+1;
}