summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-09-09 12:20:21 -0400
committerWolfgang Denk <wd@denx.de>2009-09-15 22:55:45 +0200
commit1c20e4a9fbc531e2149ae061e8583f5fad82f163 (patch)
tree91ddbbefae4e11424e8e8d0f8be60031a789b501
parent770931805d292908a57a3d2c5f9a4fcde888b5a2 (diff)
downloadu-boot-1c20e4a9fbc531e2149ae061e8583f5fad82f163.tar.gz
u-boot-1c20e4a9fbc531e2149ae061e8583f5fad82f163.tar.xz
u-boot-1c20e4a9fbc531e2149ae061e8583f5fad82f163.zip
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>
-rw-r--r--doc/README.NetConsole24
-rwxr-xr-xtools/netconsole17
2 files changed, 17 insertions, 24 deletions
diff --git a/doc/README.NetConsole b/doc/README.NetConsole
index 639cc12a56..c8bcb90a39 100644
--- a/doc/README.NetConsole
+++ b/doc/README.NetConsole
@@ -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
packets. We developed our own tool 'ncb' (see tools directory) that
listens to broadcast packets on a given port and dumps them to the
-standard output. use it as follows:
-
-+++++++++++++++++++++++++++++++++++++++++++
-#! /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.
+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.
For Linux, the network-based console needs special configuration.
Minimally, the host IP address needs to be specified. This can be
diff --git a/tools/netconsole b/tools/netconsole
index 6ef2723f58..c8109bb095 100755
--- a/tools/netconsole
+++ b/tools/netconsole
@@ -39,9 +39,20 @@ echo "NOTE: the interrupt signal (normally ^C) has been remapped to ^T"
stty -icanon -echo intr ^T
(
-while ${nc} -u -l -p ${port} < /dev/null ; do
- :
-done
+if type ncb 2>/dev/null ; then
+ # see if ncb is in $PATH
+ 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=$!
${nc} -u ${ip} ${port}