svn commit: trunk/busybox: include libbb networking
Bernhard Fischer
rep.dot.nop at gmail.com
Fri Feb 9 10:49:44 PST 2007
On Fri, Feb 09, 2007 at 09:32:17AM -0800, vda at busybox.net wrote:
>Author: vda
>Date: 2007-02-09 09:32:16 -0800 (Fri, 09 Feb 2007)
>New Revision: 17842
>
>Log:
>ping: support -I addr in family neutral manner; reuse a bit of common code
>Modified: trunk/busybox/include/usage.h
>===================================================================
>--- trunk/busybox/include/usage.h 2007-02-09 17:30:14 UTC (rev 17841)
>+++ trunk/busybox/include/usage.h 2007-02-09 17:32:16 UTC (rev 17842)
>@@ -2428,20 +2428,22 @@
> #define ping_full_usage \
> "Send ICMP ECHO_REQUEST packets to network hosts" \
> "\n\nOptions:\n" \
>- " -c CNT Send only CNT pings\n" \
>- " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
>- " -I IP Use IP as source address\n" \
>- " -q Quiet mode, only displays output at start\n" \
>- " and when finished"
>+ " -4, -6 Force IPv4 or IPv6 hostname resolution\n" \
s/resolution/resolving/g
btw (re: usage.h)
let me suggest the attached stripping of redundant information in
busybox_main.
Furthermore, That helptext should really be moved to usage.h to be able
to compress it, just as a sidenote ;)
>+ " -c CNT Send only CNT pings\n" \
>+ " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
>+ " -I iface/IP Use interface or IP address as source\n" \
>+ " -q Quiet mode, only displays output at start\n" \
>+ " and when finished"
> #define ping6_trivial_usage \
> "[OPTION]... host"
> #define ping6_full_usage \
> "Send ICMP ECHO_REQUEST packets to network hosts" \
> "\n\nOptions:\n" \
>- " -c CNT Send only CNT pings\n" \
>- " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
>- " -q Quiet mode, only displays output at start\n" \
>- " and when finished"
"Be quiet."
should suffice, really
>+ " -c CNT Send only CNT pings\n" \
>+ " -s SIZE Send SIZE data bytes in packets (default=56)\n" \
>+ " -I iface/IP Use interface or IP address as source\n" \
>+ " -q Quiet mode, only displays output at start\n" \
>+ " and when finished"
ditto
>Modified: trunk/busybox/networking/ping.c
>===================================================================
>--- trunk/busybox/networking/ping.c 2007-02-09 17:30:14 UTC (rev 17841)
>+++ trunk/busybox/networking/ping.c 2007-02-09 17:32:16 UTC (rev 17842)
>@@ -254,7 +254,7 @@
> struct sockaddr_in6 sin6;
> #endif
> } pingaddr;
>-static struct sockaddr_in sourceaddr;
>+static len_and_sockaddr *source_lsa;
> static int pingsock = -1;
> static unsigned datalen; /* intentionally uninitialized to work around gcc bug */
/* huh? what bug, exactly? */
>@@ -561,9 +561,8 @@
>
> pingsock = create_icmp_socket();
> pingaddr.sin = lsa->sin;
>- if (sourceaddr.sin_addr.s_addr) {
>- xbind(pingsock, (struct sockaddr*)&sourceaddr, sizeof(sourceaddr));
>- }
>+ if (source_lsa)
>+ xbind(pingsock, &lsa->sa, lsa->len);
Didn't look, but are there any users that can't rely on xbind using
#parm2->len so we could drop that explicit len parm?
> /* enable broadcast pings */
> setsockopt_broadcast(pingsock);
>@@ -695,25 +685,21 @@
> }
> #endif
>
>-/* TODO: consolidate ether-wake.c, dnsd.c, ifupdown.c, nslookup.c
>- * versions of below thing. BTW we have far too many "%u.%u.%u.%u" too...
>-*/
>-static int parse_nipquad(const char *str, struct sockaddr_in* addr)
>+static void ping(len_and_sockaddr *lsa)
const len_and_sockaddr * const lsa , perhaps?
>@@ -732,9 +718,11 @@
> if (option_mask32 & OPT_s) datalen = xatou16(opt_s); // -s
> if (option_mask32 & OPT_I) { // -I
> if_index = if_nametoindex(opt_I);
>- if (!if_index)
>- if (parse_nipquad(opt_I, &sourceaddr))
>- bb_show_usage();
>+ if (!if_index) {
>+ /* TODO: I'm not sure it takes IPv6 unless in [XX:XX..] format */
I'm unsure whether the decision to require that [XX:XX..] format was a
good idea since it sounds to be non-standard to me
cheers,
More information about the busybox
mailing list