tools/netconsole: use ncb automatically if available

The standard netcat, while ubiquitous, doesn't handle broadcast udp packets
properly.  The local ncb util does however.  So if ncb can be located in
the standard locations, automatically use that instead.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2009-09-09 12:20:21 -04:00 committed by Wolfgang Denk
parent 770931805d
commit 1c20e4a9fb
2 changed files with 17 additions and 24 deletions

View File

@ -36,27 +36,9 @@ you can just remove the -p option from the script.
It turns out that 'netcat' cannot be used to listen to broadcast It turns out that 'netcat' cannot be used to listen to broadcast
packets. We developed our own tool 'ncb' (see tools directory) that packets. We developed our own tool 'ncb' (see tools directory) that
listens to broadcast packets on a given port and dumps them to the listens to broadcast packets on a given port and dumps them to the
standard output. use it as follows: standard output. It will be built when compiling for a board which
has CONFIG_NETCONSOLE defined. If the netconsole script can find it
+++++++++++++++++++++++++++++++++++++++++++ in PATH or in the same directory, it will be used instead.
#! /bin/bash
[ $# = 1 ] || { echo "Usage: $0 target_ip" >&2 ; exit 1 ; }
TARGET_IP=$1
stty icanon echo intr ^T
./ncb &
nc -u ${TARGET_IP} 6666
stty icanon echo intr ^C
kill 0
+++++++++++++++++++++++++++++++++++++++++++
Again, this script takes exactly one argument, which is interpreted
as the target IP address (or host name, assuming DNS is working). The
script can be interrupted by pressing ^T (CTRL-T).
The 'ncb' tool can be found in the tools directory; it will be built
when compiling for a board which has CONFIG_NETCONSOLE defined.
For Linux, the network-based console needs special configuration. For Linux, the network-based console needs special configuration.
Minimally, the host IP address needs to be specified. This can be Minimally, the host IP address needs to be specified. This can be

View File

@ -39,9 +39,20 @@ echo "NOTE: the interrupt signal (normally ^C) has been remapped to ^T"
stty -icanon -echo intr ^T stty -icanon -echo intr ^T
( (
while ${nc} -u -l -p ${port} < /dev/null ; do if type ncb 2>/dev/null ; then
: # see if ncb is in $PATH
done exec ncb ${port}
elif [ -x ${0%/*}/ncb ] ; then
# maybe it's in the same dir as the netconsole script
exec ${0%/*}/ncb ${port}
else
# blah, just use regular netcat
while ${nc} -u -l -p ${port} < /dev/null ; do
:
done
fi
) & ) &
pid=$! pid=$!
${nc} -u ${ip} ${port} ${nc} -u ${ip} ${port}