xref: /OK3568_Linux_fs/u-boot/tools/netconsole (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun
3*4882a593Smuzhiyunusage() {
4*4882a593Smuzhiyun	(
5*4882a593Smuzhiyun	echo "Usage: $0 <board-IP> [board-port [board-in-port]]"
6*4882a593Smuzhiyun	echo ""
7*4882a593Smuzhiyun	echo "If port is not specified, '6666' will be used"
8*4882a593Smuzhiyun	[ -z "$*" ] && exit 0
9*4882a593Smuzhiyun	echo ""
10*4882a593Smuzhiyun	echo "ERROR: $*"
11*4882a593Smuzhiyun	exit 1
12*4882a593Smuzhiyun	) 1>&2
13*4882a593Smuzhiyun	exit $?
14*4882a593Smuzhiyun}
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunwhile [ -n "$1" ] ; do
17*4882a593Smuzhiyun	case $1 in
18*4882a593Smuzhiyun		-h|--help) usage;;
19*4882a593Smuzhiyun		--)        break;;
20*4882a593Smuzhiyun		-*)        usage "Invalid option $1";;
21*4882a593Smuzhiyun		*)         break;;
22*4882a593Smuzhiyun	esac
23*4882a593Smuzhiyun	shift
24*4882a593Smuzhiyundone
25*4882a593Smuzhiyun
26*4882a593Smuzhiyunip=$1
27*4882a593Smuzhiyunboard_out_port=${2:-6666}
28*4882a593Smuzhiyunboard_in_port=${3:-${board_out_port}}
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunecho Board out port: ${board_out_port}
31*4882a593Smuzhiyunecho Board in port: ${board_in_port}
32*4882a593Smuzhiyun
33*4882a593Smuzhiyunif [ -z "${ip}" ] || [ -n "$4" ] ; then
34*4882a593Smuzhiyun	usage "Invalid number of arguments"
35*4882a593Smuzhiyunfi
36*4882a593Smuzhiyun
37*4882a593Smuzhiyunfor nc in netcat nc ; do
38*4882a593Smuzhiyun	type ${nc} >/dev/null 2>&1 && break
39*4882a593Smuzhiyundone
40*4882a593Smuzhiyun
41*4882a593Smuzhiyuntrap "stty icanon echo intr ^C" 0 2 3 5 10 13 15
42*4882a593Smuzhiyunecho "NOTE: the interrupt signal (normally ^C) has been remapped to ^T"
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunstty -icanon -echo intr ^T
45*4882a593Smuzhiyun(
46*4882a593Smuzhiyunif type ncb 2>/dev/null ; then
47*4882a593Smuzhiyun	# see if ncb is in $PATH
48*4882a593Smuzhiyun	exec ncb ${board_out_port}
49*4882a593Smuzhiyun
50*4882a593Smuzhiyunelif [ -x ${0%/*}/ncb ] ; then
51*4882a593Smuzhiyun	# maybe it's in the same dir as the netconsole script
52*4882a593Smuzhiyun	exec ${0%/*}/ncb ${board_out_port}
53*4882a593Smuzhiyun
54*4882a593Smuzhiyunelse
55*4882a593Smuzhiyun	# blah, just use regular netcat
56*4882a593Smuzhiyun	while ${nc} -u -l -p ${board_out_port} < /dev/null ; do
57*4882a593Smuzhiyun		:
58*4882a593Smuzhiyun	done
59*4882a593Smuzhiyunfi
60*4882a593Smuzhiyun) &
61*4882a593Smuzhiyunpid=$!
62*4882a593Smuzhiyun${nc} -u ${ip} ${board_in_port}
63*4882a593Smuzhiyunkill ${pid} 2>/dev/null
64