summaryrefslogtreecommitdiff
path: root/networking
diff options
context:
space:
mode:
authorDenis Vlasenko2007-06-16 13:37:59 +0000
committerDenis Vlasenko2007-06-16 13:37:59 +0000
commit7b72fc12000c878e11d5f0b245f83c0d71b29f58 (patch)
treeae60975a107756cb3b7b6dd17e8f0d41427daed6 /networking
parent53a0e971960a520bd859b8aac6dbebec2045115f (diff)
downloadbusybox-7b72fc12000c878e11d5f0b245f83c0d71b29f58.zip
busybox-7b72fc12000c878e11d5f0b245f83c0d71b29f58.tar.gz
pscan: new applet (portscanner). ~1350 bytes. By Tito <farmatito@tiscali.it>
wget: lift 256 chars limitation on terminal width
Diffstat (limited to 'networking')
-rw-r--r--networking/Config.in6
-rw-r--r--networking/Kbuild1
-rw-r--r--networking/ping.c7
-rw-r--r--networking/wget.c9
4 files changed, 19 insertions, 4 deletions
diff --git a/networking/Config.in b/networking/Config.in
index 5ccc483..efa6aae 100644
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -527,6 +527,12 @@ config PING6
help
This will give you a ping that can talk IPv6.
+config PSCAN
+ bool "pscan"
+ default n
+ help
+ Simple network port scanner.
+
config FEATURE_FANCY_PING
bool "Enable fancy ping output"
default y
diff --git a/networking/Kbuild b/networking/Kbuild
index 13b4452..0f4ab7b 100644
--- a/networking/Kbuild
+++ b/networking/Kbuild
@@ -25,6 +25,7 @@ lib-$(CONFIG_NETSTAT) += netstat.o
lib-$(CONFIG_NSLOOKUP) += nslookup.o
lib-$(CONFIG_PING) += ping.o
lib-$(CONFIG_PING6) += ping.o
+lib-$(CONFIG_PSCAN) += pscan.o
lib-$(CONFIG_ROUTE) += route.o
lib-$(CONFIG_TELNET) += telnet.o
lib-$(CONFIG_TELNETD) += telnetd.o
diff --git a/networking/ping.c b/networking/ping.c
index 6b5045e..e94b791 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -341,7 +341,12 @@ static void sendping4(int junk ATTRIBUTE_UNUSED)
pkt->icmp_cksum = 0;
pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
pkt->icmp_id = myid;
+
+// I can't fucking believe someone thought it's okay to do it like this...
+// where's hton? Where is a provision for different word size, structure padding, etc??
+// FIXME!
gettimeofday((struct timeval *) &pkt->icmp_dun, NULL);
+
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, datalen + ICMP_MINLEN);
sendping_tail(sendping4, pkt, datalen + ICMP_MINLEN);
@@ -356,6 +361,8 @@ static void sendping6(int junk ATTRIBUTE_UNUSED)
pkt->icmp6_cksum = 0;
pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
pkt->icmp6_id = myid;
+
+// FIXME!
gettimeofday((struct timeval *) &pkt->icmp6_data8[4], NULL);
sendping_tail(sendping6, pkt, datalen + sizeof(struct icmp6_hdr));
diff --git a/networking/wget.c b/networking/wget.c
index 2c060d7..fe669bb 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -693,16 +693,15 @@ progressmeter(int flag)
struct timeval now, td, tvwait;
off_t abbrevsize;
int elapsed, ratio, barlength, i;
- char buf[256];
if (flag == -1) { /* first call to progressmeter */
- gettimeofday(&start, (struct timezone *) 0);
+ gettimeofday(&start, NULL);
lastupdate = start;
lastsize = 0;
totalsize = content_len + beg_range; /* as content_len changes.. */
}
- gettimeofday(&now, (struct timezone *) 0);
+ gettimeofday(&now, NULL);
ratio = 100;
if (totalsize != 0 && !chunked) {
/* long long helps to have working ETA even if !LFS */
@@ -713,7 +712,9 @@ progressmeter(int flag)
fprintf(stderr, "\r%-20.20s%4d%% ", curfile, ratio);
barlength = getttywidth() - 51;
- if (barlength > 0 && barlength < sizeof(buf)) {
+ if (barlength > 0) {
+ /* god bless gcc for variable arrays :) */
+ char buf[barlength+1];
i = barlength * ratio / 100;
memset(buf, '*', i);
memset(buf + i, ' ', barlength - i);