Merge branch 'master' of git+ssh://busybox.net/var/lib/git/busybox

This commit is contained in:
Denys Vlasenko 2010-10-27 11:24:40 +02:00
commit c386aa5dcd
4 changed files with 54 additions and 52 deletions

View File

@ -2709,27 +2709,6 @@ INSERT
" or\n" \
"$ nameif -c /etc/my_mactab_file\n" \
#define netstat_trivial_usage \
"[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
#define netstat_full_usage "\n\n" \
"Display networking information\n" \
"\nOptions:" \
"\n -l Display listening server sockets" \
"\n -a Display all sockets (default: connected)" \
"\n -e Display other/more information" \
"\n -n Don't resolve names" \
"\n -t Tcp sockets" \
"\n -u Udp sockets" \
"\n -w Raw sockets" \
"\n -x Unix sockets" \
"\n -r Display routing table" \
IF_FEATURE_NETSTAT_WIDE( \
"\n -W Display with no column truncation" \
) \
IF_FEATURE_NETSTAT_PRG( \
"\n -p Display PID/Program name for sockets" \
)
#define nmeter_trivial_usage \
"format_string"
#define nmeter_full_usage "\n\n" \

View File

@ -17,16 +17,37 @@
#include "libbb.h"
#include "inet_common.h"
//usage:#define netstat_trivial_usage
//usage: "[-"IF_ROUTE("r")"al] [-tuwx] [-en"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
//usage:#define netstat_full_usage "\n\n"
//usage: "Display networking information\n"
//usage: "\nOptions:"
//usage: IF_ROUTE(
//usage: "\n -r Routing table"
//usage: )
//usage: "\n -a All sockets"
//usage: "\n -l Listening sockets"
//usage: "\n Else: connected sockets"
//usage: "\n -t TCP sockets"
//usage: "\n -u UDP sockets"
//usage: "\n -w Raw sockets"
//usage: "\n -x Unix sockets"
//usage: "\n Else: all socket types"
//usage: "\n -e Other/more information"
//usage: "\n -n Don't resolve names"
//usage: IF_FEATURE_NETSTAT_WIDE(
//usage: "\n -W Wide display"
//usage: )
//usage: IF_FEATURE_NETSTAT_PRG(
//usage: "\n -p Show PID/program name for sockets"
//usage: )
#define NETSTAT_OPTS "laentuwx" \
IF_ROUTE( "r") \
IF_FEATURE_NETSTAT_WIDE("W") \
IF_FEATURE_NETSTAT_PRG( "p")
enum {
OPTBIT_KEEP_OLD = 7,
IF_ROUTE( OPTBIT_ROUTE,)
IF_FEATURE_NETSTAT_WIDE(OPTBIT_WIDE ,)
IF_FEATURE_NETSTAT_PRG( OPTBIT_PRG ,)
OPT_sock_listen = 1 << 0, // l
OPT_sock_all = 1 << 1, // a
OPT_extended = 1 << 2, // e
@ -35,6 +56,10 @@ enum {
OPT_sock_udp = 1 << 5, // u
OPT_sock_raw = 1 << 6, // w
OPT_sock_unix = 1 << 7, // x
OPTBIT_x = 7,
IF_ROUTE( OPTBIT_ROUTE,)
IF_FEATURE_NETSTAT_WIDE(OPTBIT_WIDE ,)
IF_FEATURE_NETSTAT_PRG( OPTBIT_PRG ,)
OPT_route = IF_ROUTE( (1 << OPTBIT_ROUTE)) + 0, // r
OPT_wide = IF_FEATURE_NETSTAT_WIDE((1 << OPTBIT_WIDE )) + 0, // W
OPT_prg = IF_FEATURE_NETSTAT_PRG( (1 << OPTBIT_PRG )) + 0, // p
@ -220,7 +245,7 @@ static long extract_socket_inode(const char *lname)
static int FAST_FUNC file_act(const char *fileName,
struct stat *statbuf UNUSED_PARAM,
void *userData,
void *pid_slash_progname,
int depth UNUSED_PARAM)
{
char *linkname;
@ -231,7 +256,7 @@ static int FAST_FUNC file_act(const char *fileName,
inode = extract_socket_inode(linkname);
free(linkname);
if (inode >= 0)
prg_cache_add(inode, (char *)userData);
prg_cache_add(inode, (char *)pid_slash_progname);
}
return TRUE;
}
@ -241,16 +266,16 @@ static int FAST_FUNC dir_act(const char *fileName,
void *userData UNUSED_PARAM,
int depth)
{
const char *shortName;
char *p, *q;
const char *pid;
char *p, *pid_slash_progname;
char cmdline_buf[512];
int i;
if (depth == 0) /* "/proc" itself */
return TRUE; /* continue looking one level below /proc */
shortName = fileName + sizeof("/proc/")-1; /* point after "/proc/" */
if (!isdigit(shortName[0])) /* skip /proc entries whic aren't processes */
pid = fileName + sizeof("/proc/")-1; /* point after "/proc/" */
if (!isdigit(pid[0])) /* skip /proc entries which aren't processes */
return SKIP;
p = concat_path_file(fileName, "cmdline"); /* "/proc/PID/cmdline" */
@ -259,20 +284,19 @@ static int FAST_FUNC dir_act(const char *fileName,
if (i < 0)
return FALSE;
cmdline_buf[i] = '\0';
q = concat_path_file(shortName, bb_basename(cmdline_buf)); /* "PID/argv0" */
/* go through all files in /proc/PID/fd */
pid_slash_progname = concat_path_file(pid, bb_basename(cmdline_buf)); /* "PID/argv0" */
p = concat_path_file(fileName, "fd");
i = recursive_action(p, ACTION_RECURSE | ACTION_QUIET,
file_act, NULL, (void *)q, 0);
file_act, NULL, (void *)pid_slash_progname, 0);
free(p);
free(q);
free(pid_slash_progname);
if (!i)
return FALSE; /* signal permissions error to caller */
return FALSE; /* signal permissions error to caller */
return SKIP; /* caller should not recurse further into this dir. */
return SKIP; /* caller should not recurse further into this dir */
}
static void prg_cache_load(void)
@ -624,25 +648,23 @@ int netstat_main(int argc UNUSED_PARAM, char **argv)
/* Option string must match NETSTAT_xxx constants */
opt = getopt32(argv, NETSTAT_OPTS);
if (opt & 0x1) { // -l
if (opt & OPT_sock_listen) { // -l
flags &= ~NETSTAT_CONNECTED;
flags |= NETSTAT_LISTENING;
}
if (opt & 0x2) flags |= NETSTAT_LISTENING | NETSTAT_CONNECTED; // -a
//if (opt & 0x4) // -e
if (opt & 0x8) flags |= NETSTAT_NUMERIC; // -n
//if (opt & 0x10) // -t: NETSTAT_TCP
//if (opt & 0x20) // -u: NETSTAT_UDP
//if (opt & 0x40) // -w: NETSTAT_RAW
//if (opt & 0x80) // -x: NETSTAT_UNIX
if (opt & OPT_route) { // -r
if (opt & OPT_sock_all) flags |= NETSTAT_LISTENING | NETSTAT_CONNECTED; // -a
//if (opt & OPT_extended) // -e
if (opt & OPT_noresolve) flags |= NETSTAT_NUMERIC; // -n
//if (opt & OPT_sock_tcp) // -t: NETSTAT_TCP
//if (opt & OPT_sock_udp) // -u: NETSTAT_UDP
//if (opt & OPT_sock_raw) // -w: NETSTAT_RAW
//if (opt & OPT_sock_unix) // -x: NETSTAT_UNIX
#if ENABLE_ROUTE
if (opt & OPT_route) { // -r
bb_displayroutes(flags & NETSTAT_NUMERIC, !(opt & OPT_extended));
return 0;
#else
bb_show_usage();
#endif
}
#endif
if (opt & OPT_wide) { // -W
net_conn_line = PRINT_NET_CONN_WIDE;
net_conn_line_header = PRINT_NET_CONN_HEADER_WIDE;

View File

@ -689,8 +689,8 @@ static void show_timerstats(void)
// no ACPI power usage estimate available
//
// Top causes for wakeups:
// 32.4% ( 26.7) <interrupt> : extra timer interrupt
// 29.0% ( 23.9) <kernel core> : hrtimer_start_range_ns (tick_sched_timer)
// 32.4% ( 26.7) <interrupt> : extra timer interrupt
// 29.0% ( 23.9) <kernel core> : hrtimer_start_range_ns (tick_sched_timer)
// 9.0% ( 7.5) <kernel core> : hrtimer_start (tick_sched_timer)
// 6.5% ( 5.3) <interrupt> : ata_piix
// 5.0% ( 4.1) inetd : hrtimer_start_range_ns (hrtimer_wakeup)

View File

@ -649,8 +649,9 @@ static void reset_term(void)
static void sig_catcher(int sig UNUSED_PARAM)
{
reset_term();
exit(EXIT_FAILURE);
_exit(EXIT_FAILURE);
}
#endif /* FEATURE_USE_TERMIOS */
/*