1#!/bin/sh
2#
3# This simple script will collect outputs of ibroute for all switches
4# on the subnet and drop it on stdout. It can be used for LFTs dump
5# generation.
6#
7
8usage ()
9{
10	echo Usage: `basename $0` "[-h] [-D] [-C ca_name]" \
11	    "[-P ca_port] [-t(imeout) timeout_ms]"
12	exit 2
13}
14
15dump_by_lid ()
16{
17for sw_lid in `ibswitches $ca_info \
18		| sed -ne 's/^.* lid \([0-9a-f]*\) .*$/\1/p'` ; do
19	ibroute $ca_info $sw_lid
20done
21}
22
23dump_by_dr_path ()
24{
25for sw_dr in `ibnetdiscover $ca_info -v \
26	| sed -ne '/^DR path .* switch /s/^DR path \([,|0-9]\+\) ->.*{\([0-9|a-f]\+\)}.*$/\2 \1/p' \
27	| sort -u \
28	| awk 'BEGIN {guid=0;} {if ($1 != guid) { guid=$1; print $2; }}'` ; do
29	ibroute $ca_info -D ${sw_dr}
30done
31}
32
33use_d=""
34ca_info=""
35
36while [ "$1" ]; do
37	case $1 in
38	-D)
39		use_d="-D"
40		;;
41	-h)
42		usage
43		;;
44	-P | -C | -t | -timeout)
45		case $2 in
46		-*)
47			usage
48			;;
49		esac
50		if [ x$2 = x ] ; then
51			usage
52		fi
53		ca_info="$ca_info $1 $2"
54		shift
55		;;
56	-*)
57		usage
58		;;
59	*)
60		usage
61		;;
62	esac
63	shift
64done
65
66if [ "$use_d" = "-D" ] ; then
67	dump_by_dr_path
68else
69	dump_by_lid
70fi
71
72exit
73