diff options
author | Bartosz Golaszewski <bartekgola@gmail.com> | 2013-07-25 04:39:04 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-07-25 04:39:04 +0200 |
commit | c19be75d57ff42dee54b53e21b3eb4723b8cf243 (patch) | |
tree | 7fc65e75d2c91ee1021e327aaa4e1ba0e81ccb15 /networking/interface.c | |
parent | b855460adcda8dfb18ac36755f128ce32088ae87 (diff) | |
download | busybox-w32-c19be75d57ff42dee54b53e21b3eb4723b8cf243.tar.gz busybox-w32-c19be75d57ff42dee54b53e21b3eb4723b8cf243.tar.bz2 busybox-w32-c19be75d57ff42dee54b53e21b3eb4723b8cf243.zip |
networking: code shrink
function old new delta
in_ether - 124 +124
hexchar2int 42 - -42
ifconfig_main 1237 1106 -131
ether_input 141 - -141
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 0/1 up/down: 124/-314) Total: -190 bytes
Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/interface.c')
-rw-r--r-- | networking/interface.c | 55 |
1 files changed, 1 insertions, 54 deletions
diff --git a/networking/interface.c b/networking/interface.c index 9ae8b3f03..3dc5b3640 100644 --- a/networking/interface.c +++ b/networking/interface.c | |||
@@ -722,68 +722,15 @@ static char* FAST_FUNC ether_print(unsigned char *ptr) | |||
722 | return buff; | 722 | return buff; |
723 | } | 723 | } |
724 | 724 | ||
725 | static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap); | ||
726 | |||
727 | static const struct hwtype ether_hwtype = { | 725 | static const struct hwtype ether_hwtype = { |
728 | .name = "ether", | 726 | .name = "ether", |
729 | .title = "Ethernet", | 727 | .title = "Ethernet", |
730 | .type = ARPHRD_ETHER, | 728 | .type = ARPHRD_ETHER, |
731 | .alen = ETH_ALEN, | 729 | .alen = ETH_ALEN, |
732 | .print = ether_print, | 730 | .print = ether_print, |
733 | .input = ether_input | 731 | .input = in_ether |
734 | }; | 732 | }; |
735 | 733 | ||
736 | static unsigned hexchar2int(char c) | ||
737 | { | ||
738 | if (isdigit(c)) | ||
739 | return c - '0'; | ||
740 | c &= ~0x20; /* a -> A */ | ||
741 | if ((unsigned)(c - 'A') <= 5) | ||
742 | return c - ('A' - 10); | ||
743 | return ~0U; | ||
744 | } | ||
745 | |||
746 | /* Input an Ethernet address and convert to binary. */ | ||
747 | static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap) | ||
748 | { | ||
749 | unsigned char *ptr; | ||
750 | char c; | ||
751 | int i; | ||
752 | unsigned val; | ||
753 | |||
754 | sap->sa_family = ether_hwtype.type; | ||
755 | ptr = (unsigned char*) sap->sa_data; | ||
756 | |||
757 | i = 0; | ||
758 | while ((*bufp != '\0') && (i < ETH_ALEN)) { | ||
759 | val = hexchar2int(*bufp++) * 0x10; | ||
760 | if (val > 0xff) { | ||
761 | errno = EINVAL; | ||
762 | return -1; | ||
763 | } | ||
764 | c = *bufp; | ||
765 | if (c == ':' || c == 0) | ||
766 | val >>= 4; | ||
767 | else { | ||
768 | val |= hexchar2int(c); | ||
769 | if (val > 0xff) { | ||
770 | errno = EINVAL; | ||
771 | return -1; | ||
772 | } | ||
773 | } | ||
774 | if (c != 0) | ||
775 | bufp++; | ||
776 | *ptr++ = (unsigned char) val; | ||
777 | i++; | ||
778 | |||
779 | /* We might get a semicolon here - not required. */ | ||
780 | if (*bufp == ':') { | ||
781 | bufp++; | ||
782 | } | ||
783 | } | ||
784 | return 0; | ||
785 | } | ||
786 | |||
787 | static const struct hwtype ppp_hwtype = { | 734 | static const struct hwtype ppp_hwtype = { |
788 | .name = "ppp", | 735 | .name = "ppp", |
789 | .title = "Point-to-Point Protocol", | 736 | .title = "Point-to-Point Protocol", |