aboutsummaryrefslogtreecommitdiff
path: root/networking/libiproute/ll_proto.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-03-05 09:21:57 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-03-05 09:21:57 +0000
commit76140a77c9c47c41f244d90d4250d77b9504f7d4 (patch)
tree67c43b25beb904f111e8a96548bee1592f5010e2 /networking/libiproute/ll_proto.c
parent021de3f0297af87bfc098bd364dffb332d6ace20 (diff)
downloadbusybox-76140a77c9c47c41f244d90d4250d77b9504f7d4.tar.gz
networking/libiproute/*: code shrink by optimizing numeric conversions
and other misc stuff function old new delta print_tunnel 660 656 -4 format_host 5 - -5 get_unsigned 70 54 -16 get_u32 70 54 -16 do_iplink 1173 1151 -22 get_prefix 417 393 -24 print_rule 800 771 -29 print_addrinfo 1374 1342 -32 print_route 1745 1709 -36 iprule_modify 905 866 -39 iproute_modify 1105 1048 -57 get_integer 70 - -70 parse_args 1684 1440 -244 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 0/11 up/down: 0/-594) Total: -594 bytes text data bss dec hex filename 817378 476 7892 825746 c9992 busybox_old 816784 476 7892 825152 c9740 busybox_unstripped
Diffstat (limited to 'networking/libiproute/ll_proto.c')
-rw-r--r--networking/libiproute/ll_proto.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/networking/libiproute/ll_proto.c b/networking/libiproute/ll_proto.c
index b8268732e..a93493538 100644
--- a/networking/libiproute/ll_proto.c
+++ b/networking/libiproute/ll_proto.c
@@ -115,13 +115,15 @@ int ll_proto_a2n(unsigned short *id, char *buf)
unsigned i;
for (i = 0; i < ARRAY_SIZE(llproto_names); i++) {
if (strcasecmp(llproto_names[i].name, buf) == 0) {
- *id = htons(llproto_names[i].id);
- return 0;
+ i = llproto_names[i].id;
+ goto good;
}
}
- if (get_u16(id, buf, 0))
+ i = bb_strtou(buf, NULL, 0);
+ if (errno || i > 0xffff)
return -1;
- *id = htons(*id);
+ good:
+ *id = htons(i);
return 0;
}