aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.h8
-rw-r--r--Config.h.Hurd8
-rw-r--r--Makefile2
-rw-r--r--debian/Config.h-deb8
-rw-r--r--debian/Config.h-static8
-rw-r--r--debian/Config.h-udeb8
-rw-r--r--libbb/interface.c (renamed from interface.c)57
7 files changed, 24 insertions, 75 deletions
diff --git a/Config.h b/Config.h
index bf477f600..8c80f8e87 100644
--- a/Config.h
+++ b/Config.h
@@ -396,14 +396,6 @@
#define BB_NFSMOUNT
#endif
//
-#if defined BB_IFCONFIG
- #ifdef BB_FEATURE_IFCONFIG_STATUS
- #define BB_INTERFACE
- #endif
-#else
- #undef BB_INTERFACE
-#endif
-//
#if defined BB_FEATURE_AUTOWIDTH
#ifndef BB_FEATURE_USE_TERMIOS
#define BB_FEATURE_USE_TERMIOS
diff --git a/Config.h.Hurd b/Config.h.Hurd
index 369e376cd..43d59e069 100644
--- a/Config.h.Hurd
+++ b/Config.h.Hurd
@@ -345,14 +345,6 @@
#define BB_NFSMOUNT
#endif
//
-#if defined BB_IFCONFIG
- #ifdef BB_FEATURE_IFCONFIG_STATUS
- #define BB_INTERFACE
- #endif
-#else
- #undef BB_INTERFACE
-#endif
-//
#if defined BB_FEATURE_AUTOWIDTH
#ifndef BB_FEATURE_USE_TERMIOS
#define BB_FEATURE_USE_TERMIOS
diff --git a/Makefile b/Makefile
index 18c174f70..1fefecd10 100644
--- a/Makefile
+++ b/Makefile
@@ -247,7 +247,7 @@ parse_mode.c parse_number.c perror_msg.c perror_msg_and_die.c print_file.c \
process_escape_sequence.c read_package_field.c read_text_file_to_buffer.c \
recursive_action.c safe_read.c safe_strncpy.c seek_ared_file.c syscalls.c \
syslog_msg_with_name.c time_string.c trim.c untar.c unzip.c vdprintf.c \
-verror_msg.c vperror_msg.c wfopen.c xfuncs.c xgetcwd.c xregcomp.c
+verror_msg.c vperror_msg.c wfopen.c xfuncs.c xgetcwd.c xregcomp.c interface.c
LIBBB_OBJS=$(patsubst %.c,$(LIBBB)/%.o, $(LIBBB_CSRC))
LIBBB_CFLAGS = -I$(LIBBB)
diff --git a/debian/Config.h-deb b/debian/Config.h-deb
index 7737804c8..44046aa5d 100644
--- a/debian/Config.h-deb
+++ b/debian/Config.h-deb
@@ -413,14 +413,6 @@
#define BB_NFSMOUNT
#endif
//
-#if defined BB_IFCONFIG
- #ifdef BB_FEATURE_IFCONFIG_STATUS
- #define BB_INTERFACE
- #endif
-#else
- #undef BB_INTERFACE
-#endif
-//
#if defined BB_FEATURE_AUTOWIDTH
#ifndef BB_FEATURE_USE_TERMIOS
#define BB_FEATURE_USE_TERMIOS
diff --git a/debian/Config.h-static b/debian/Config.h-static
index c811b2b87..79dfbc8dd 100644
--- a/debian/Config.h-static
+++ b/debian/Config.h-static
@@ -413,14 +413,6 @@
#define BB_NFSMOUNT
#endif
//
-#if defined BB_IFCONFIG
- #ifdef BB_FEATURE_IFCONFIG_STATUS
- #define BB_INTERFACE
- #endif
-#else
- #undef BB_INTERFACE
-#endif
-//
#if defined BB_FEATURE_AUTOWIDTH
#ifndef BB_FEATURE_USE_TERMIOS
#define BB_FEATURE_USE_TERMIOS
diff --git a/debian/Config.h-udeb b/debian/Config.h-udeb
index 14901ed02..beb7d8176 100644
--- a/debian/Config.h-udeb
+++ b/debian/Config.h-udeb
@@ -413,14 +413,6 @@
#define BB_NFSMOUNT
#endif
//
-#if defined BB_IFCONFIG
- #ifdef BB_FEATURE_IFCONFIG_STATUS
- #define BB_INTERFACE
- #endif
-#else
- #undef BB_INTERFACE
-#endif
-//
#if defined BB_FEATURE_AUTOWIDTH
#ifndef BB_FEATURE_USE_TERMIOS
#define BB_FEATURE_USE_TERMIOS
diff --git a/interface.c b/libbb/interface.c
index a043d7223..b453b6f67 100644
--- a/interface.c
+++ b/libbb/interface.c
@@ -3,7 +3,7 @@
* that either displays or sets the characteristics of
* one or more of the system's networking interfaces.
*
- * Version: $Id: interface.c,v 1.6 2001/04/09 23:52:18 andersen Exp $
+ * Version: $Id: interface.c,v 1.1 2001/04/19 16:55:27 andersen Exp $
*
* Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
* and others. Copyright 1993 MicroWalt Corporation
@@ -37,7 +37,7 @@
/* #define KEEP_UNUSED */
-#include "busybox.h"
+#include "libbb.h"
/*
*
@@ -353,7 +353,7 @@ static int INET_resolve(char *name, struct sockaddr_in *sin, int hostfirst)
* & 0x4000: host instead of net,
* & 0x0fff: don't resolve
*/
-static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
+static int INET_rresolve(char *name, size_t len, struct sockaddr_in *s_in,
int numeric, unsigned int netmask)
{
struct hostent *ent;
@@ -363,14 +363,14 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
int host = 0;
/* Grmpf. -FvK */
- if (sin->sin_family != AF_INET) {
+ if (s_in->sin_family != AF_INET) {
#ifdef DEBUG
- fprintf(stderr, _("rresolve: unsupport address family %d !\n"), sin->sin_family);
+ fprintf(stderr, _("rresolve: unsupport address family %d !\n"), s_in->sin_family);
#endif
errno = EAFNOSUPPORT;
return (-1);
}
- ad = (unsigned long) sin->sin_addr.s_addr;
+ ad = (unsigned long) s_in->sin_addr.s_addr;
#ifdef DEBUG
fprintf (stderr, "rresolve: %08lx, mask %08x, num %08x \n", ad, netmask, numeric);
#endif
@@ -384,7 +384,7 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
}
}
if (numeric & 0x0FFF) {
- safe_strncpy(name, inet_ntoa(sin->sin_addr), len);
+ safe_strncpy(name, inet_ntoa(s_in->sin_addr), len);
return (0);
}
@@ -424,9 +424,9 @@ static int INET_rresolve(char *name, size_t len, struct sockaddr_in *sin,
safe_strncpy(name, np->n_name, len);
}
if ((ent == NULL) && (np == NULL))
- safe_strncpy(name, inet_ntoa(sin->sin_addr), len);
+ safe_strncpy(name, inet_ntoa(s_in->sin_addr), len);
pn = (struct addr *) xmalloc(sizeof(struct addr));
- pn->addr = *sin;
+ pn->addr = *s_in;
pn->next = INET_nn;
pn->host = host;
pn->name = (char *) xmalloc(strlen(name) + 1);
@@ -570,15 +570,18 @@ static struct aftype inet_aftype =
/* Display an UNSPEC address. */
static char *UNSPEC_print(unsigned char *ptr)
{
- static char buff[64];
+ static char buff[sizeof(struct sockaddr)*3+1];
char *pos;
unsigned int i;
pos = buff;
for (i = 0; i < sizeof(struct sockaddr); i++) {
- pos += sprintf(pos, "%02X-", (*ptr++ & 0377));
+ /* careful -- not every libc's sprintf returns # bytes written */
+ sprintf(pos, "%02X-", (*ptr++ & 0377));
+ pos += 3;
}
- buff[strlen(buff) - 1] = '\0';
+ /* Erase trailing "-". Works as long as sizeof(struct sockaddr) != 0 */
+ *--pos = '\0';
return (buff);
}
@@ -1029,17 +1032,18 @@ static int if_readconf(void)
struct ifconf ifc;
struct ifreq *ifr;
int n, err = -1;
- int skfd;
+ /* XXX Should this re-use the global skfd? */
+ int skfd2;
/* SIOCGIFCONF currently seems to only work properly on AF_INET sockets
(as of 2.1.128) */
- skfd = get_socket_for_af(AF_INET);
- if (skfd < 0) {
+ skfd2 = get_socket_for_af(AF_INET);
+ if (skfd2 < 0) {
fprintf(stderr, _("warning: no inet socket available: %s\n"),
strerror(errno));
/* Try to soldier on with whatever socket we can get hold of. */
- skfd = sockets_open(0);
- if (skfd < 0)
+ skfd2 = sockets_open(0);
+ if (skfd2 < 0)
return -1;
}
@@ -1048,7 +1052,7 @@ static int if_readconf(void)
ifc.ifc_len = sizeof(struct ifreq) * numreqs;
ifc.ifc_buf = xrealloc(ifc.ifc_buf, ifc.ifc_len);
- if (ioctl(skfd, SIOCGIFCONF, &ifc) < 0) {
+ if (ioctl(skfd2, SIOCGIFCONF, &ifc) < 0) {
perror("SIOCGIFCONF");
goto out;
}
@@ -1466,25 +1470,10 @@ struct hwtype {
int suppress_null_addr;
};
-/* Display an UNSPEC address. */
-static char *pr_unspec(unsigned char *ptr)
-{
- static char buff[64];
- char *pos;
- unsigned int i;
-
- pos = buff;
- for (i = 0; i < sizeof(struct sockaddr); i++) {
- pos += sprintf(pos, "%02X-", (*ptr++ & 0377));
- }
- buff[strlen(buff) - 1] = '\0';
- return (buff);
-}
-
static struct hwtype unspec_hwtype =
{
"unspec", "UNSPEC", -1, 0,
- pr_unspec, NULL, NULL
+ UNSPEC_print, NULL, NULL
};
static struct hwtype loop_hwtype =