Kill off some unused code that was wasting several k, as noticed by Denis Vlasenko when building with -ffunction-sections -fdata-sections
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -319,134 +319,6 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer, | |
| } | |
| } | |
| - | int rtnl_listen(struct rtnl_handle *rtnl, |
| - | int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *), |
| - | void *jarg) |
| - | { |
| - | int status; |
| - | struct nlmsghdr *h; |
| - | struct sockaddr_nl nladdr; |
| - | struct iovec iov; |
| - | char buf[8192]; |
| - | struct msghdr msg = { |
| - | (void*)&nladdr, sizeof(nladdr), |
| - | &iov, 1, |
| - | NULL, 0, |
| - | 0 |
| - | }; |
| - | |
| - | memset(&nladdr, 0, sizeof(nladdr)); |
| - | nladdr.nl_family = AF_NETLINK; |
| - | nladdr.nl_pid = 0; |
| - | nladdr.nl_groups = 0; |
| - | |
| - | |
| - | iov.iov_base = buf; |
| - | |
| - | while (1) { |
| - | iov.iov_len = sizeof(buf); |
| - | status = recvmsg(rtnl->fd, &msg, 0); |
| - | |
| - | if (status < 0) { |
| - | if (errno == EINTR) |
| - | continue; |
| - | bb_perror_msg("OVERRUN"); |
| - | continue; |
| - | } |
| - | if (status == 0) { |
| - | bb_error_msg("EOF on netlink"); |
| - | return -1; |
| - | } |
| - | if (msg.msg_namelen != sizeof(nladdr)) { |
| - | bb_error_msg_and_die("Sender address length == %d", msg.msg_namelen); |
| - | } |
| - | for (h = (struct nlmsghdr*)buf; status >= sizeof(*h); ) { |
| - | int err; |
| - | int len = h->nlmsg_len; |
| - | int l = len - sizeof(*h); |
| - | |
| - | if (l<0 || len>status) { |
| - | if (msg.msg_flags & MSG_TRUNC) { |
| - | bb_error_msg("Truncated message"); |
| - | return -1; |
| - | } |
| - | bb_error_msg_and_die("!!!malformed message: len=%d", len); |
| - | } |
| - | |
| - | err = handler(&nladdr, h, jarg); |
| - | if (err < 0) { |
| - | return err; |
| - | } |
| - | |
| - | status -= NLMSG_ALIGN(len); |
| - | h = (struct nlmsghdr*)((char*)h + NLMSG_ALIGN(len)); |
| - | } |
| - | if (msg.msg_flags & MSG_TRUNC) { |
| - | bb_error_msg("Message truncated"); |
| - | continue; |
| - | } |
| - | if (status) { |
| - | bb_error_msg_and_die("!!!Remnant of size %d", status); |
| - | } |
| - | } |
| - | } |
| - | |
| - | int rtnl_from_file(FILE *rtnl, |
| - | int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *), |
| - | void *jarg) |
| - | { |
| - | int status; |
| - | struct sockaddr_nl nladdr; |
| - | char buf[8192]; |
| - | struct nlmsghdr *h = (void*)buf; |
| - | |
| - | memset(&nladdr, 0, sizeof(nladdr)); |
| - | nladdr.nl_family = AF_NETLINK; |
| - | nladdr.nl_pid = 0; |
| - | nladdr.nl_groups = 0; |
| - | |
| - | while (1) { |
| - | int err, len, type; |
| - | int l; |
| - | |
| - | status = fread(&buf, 1, sizeof(*h), rtnl); |
| - | |
| - | if (status < 0) { |
| - | if (errno == EINTR) |
| - | continue; |
| - | bb_perror_msg("rtnl_from_file: fread"); |
| - | return -1; |
| - | } |
| - | if (status == 0) |
| - | return 0; |
| - | |
| - | len = h->nlmsg_len; |
| - | type= h->nlmsg_type; |
| - | l = len - sizeof(*h); |
| - | |
| - | if (l<0 || len>sizeof(buf)) { |
| - | bb_error_msg("!!!malformed message: len=%d @%lu", |
| - | len, ftell(rtnl)); |
| - | return -1; |
| - | } |
| - | |
| - | status = fread(NLMSG_DATA(h), 1, NLMSG_ALIGN(l), rtnl); |
| - | |
| - | if (status < 0) { |
| - | bb_perror_msg("rtnl_from_file: fread"); |
| - | return -1; |
| - | } |
| - | if (status < l) { |
| - | bb_error_msg("rtnl-from_file: truncated message"); |
| - | return -1; |
| - | } |
| - | |
| - | err = handler(&nladdr, h, jarg); |
| - | if (err < 0) |
| - | return err; |
| - | } |
| - | } |
| - | |
| int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data) | |
| { | |
| int len = RTA_LENGTH(4); | |
| @@ -37,10 +37,6 @@ extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, i | |
| extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len); | |
| - | extern int rtnl_listen(struct rtnl_handle *, int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *), |
| - | void *jarg); |
| - | extern int rtnl_from_file(FILE *, int (*handler)(struct sockaddr_nl *,struct nlmsghdr *n, void *), |
| - | void *jarg); |
| #endif /* __LIBNETLINK_H__ */ | |
| @@ -207,23 +207,6 @@ static void rtnl_rtrealm_initialize(void) | |
| rtnl_rtrealm_tab, 256); | |
| } | |
| - | const char * rtnl_rtrealm_n2a(int id, char *buf, int len) |
| - | { |
| - | if (id<0 || id>=256) { |
| - | snprintf(buf, len, "%d", id); |
| - | return buf; |
| - | } |
| - | if (!rtnl_rtrealm_tab[id]) { |
| - | if (!rtnl_rtrealm_init) |
| - | rtnl_rtrealm_initialize(); |
| - | } |
| - | if (rtnl_rtrealm_tab[id]) |
| - | return rtnl_rtrealm_tab[id]; |
| - | snprintf(buf, len, "%d", id); |
| - | return buf; |
| - | } |
| - | |
| - | |
| int rtnl_rtrealm_a2n(uint32_t *id, char *arg) | |
| { | |
| static char *cache = NULL; | |
| @@ -258,70 +241,6 @@ int rtnl_rtrealm_a2n(uint32_t *id, char *arg) | |
| - | static char * rtnl_rttable_tab[256] = { |
| - | "unspec", |
| - | }; |
| - | |
| - | static int rtnl_rttable_init; |
| - | |
| - | static void rtnl_rttable_initialize(void) |
| - | { |
| - | rtnl_rttable_init = 1; |
| - | rtnl_rttable_tab[255] = "local"; |
| - | rtnl_rttable_tab[254] = "main"; |
| - | rtnl_tab_initialize("/etc/iproute2/rt_tables", |
| - | rtnl_rttable_tab, 256); |
| - | } |
| - | |
| - | const char * rtnl_rttable_n2a(int id, char *buf, int len) |
| - | { |
| - | if (id<0 || id>=256) { |
| - | snprintf(buf, len, "%d", id); |
| - | return buf; |
| - | } |
| - | if (!rtnl_rttable_tab[id]) { |
| - | if (!rtnl_rttable_init) |
| - | rtnl_rttable_initialize(); |
| - | } |
| - | if (rtnl_rttable_tab[id]) |
| - | return rtnl_rttable_tab[id]; |
| - | snprintf(buf, len, "%d", id); |
| - | return buf; |
| - | } |
| - | |
| - | int rtnl_rttable_a2n(uint32_t *id, char *arg) |
| - | { |
| - | static char *cache = NULL; |
| - | static unsigned long res; |
| - | char *end; |
| - | int i; |
| - | |
| - | if (cache && strcmp(cache, arg) == 0) { |
| - | *id = res; |
| - | return 0; |
| - | } |
| - | |
| - | if (!rtnl_rttable_init) |
| - | rtnl_rttable_initialize(); |
| - | |
| - | for (i=0; i<256; i++) { |
| - | if (rtnl_rttable_tab[i] && |
| - | strcmp(rtnl_rttable_tab[i], arg) == 0) { |
| - | cache = rtnl_rttable_tab[i]; |
| - | res = i; |
| - | *id = res; |
| - | return 0; |
| - | } |
| - | } |
| - | |
| - | i = strtoul(arg, &end, 0); |
| - | if (!end || end == arg || *end || i > 255) |
| - | return -1; |
| - | *id = i; |
| - | return 0; |
| - | } |
| - | |
| - | |
| static char * rtnl_rtdsfield_tab[256] = { | |
| "0", | |
| }; | |
| @@ -5,12 +5,9 @@ | |
| extern const char* rtnl_rtprot_n2a(int id, char *buf, int len); | |
| extern const char* rtnl_rtscope_n2a(int id, char *buf, int len); | |
| - | extern const char* rtnl_rttable_n2a(int id, char *buf, int len); |
| - | extern const char* rtnl_rtrealm_n2a(int id, char *buf, int len); |
| extern const char* rtnl_dsfield_n2a(int id, char *buf, int len); | |
| extern int rtnl_rtprot_a2n(uint32_t *id, char *arg); | |
| extern int rtnl_rtscope_a2n(uint32_t *id, char *arg); | |
| - | extern int rtnl_rttable_a2n(uint32_t *id, char *arg); |
| extern int rtnl_rtrealm_a2n(uint32_t *id, char *arg); | |
| extern int rtnl_dsfield_a2n(uint32_t *id, char *arg); | |