1219820Sjeff#!/bin/sh
2219820Sjeff#
3219820Sjeff# This simple script will collect outputs of ibroute for all switches
4219820Sjeff# on the subnet and drop it on stdout. It can be used for MFTs dump
5219820Sjeff# generation.
6219820Sjeff#
7219820Sjeff
8219820Sjeffusage ()
9219820Sjeff{
10219820Sjeff	echo Usage: `basename $0` "[-h] [-D] [-C ca_name]" \
11219820Sjeff	    "[-P ca_port] [-t(imeout) timeout_ms]"
12219820Sjeff	exit 2
13219820Sjeff}
14219820Sjeff
15219820Sjeffdump_by_lid ()
16219820Sjeff{
17219820Sjefffor sw_lid in `ibswitches $ca_info \
18219820Sjeff		| sed -ne 's/^.* lid \([0-9a-f]*\) .*$/\1/p'` ; do
19219820Sjeff	ibroute $ca_info -M $sw_lid
20219820Sjeffdone
21219820Sjeff}
22219820Sjeff
23219820Sjeffdump_by_dr_path ()
24219820Sjeff{
25219820Sjefffor sw_dr in `ibnetdiscover $ca_info -v \
26219820Sjeff		| sed -ne '/^DR path .* switch /s/^DR path \[\(.*\)\].*$/\1/p' \
27219820Sjeff		| sed -e 's/\]\[/,/g' \
28219820Sjeff		| sort -u` ; do
29219820Sjeff	ibroute $ca_info -M -D ${sw_dr}
30219820Sjeffdone
31219820Sjeff}
32219820Sjeff
33219820Sjeffuse_d=""
34219820Sjeffca_info=""
35219820Sjeff
36219820Sjeffwhile [ "$1" ]; do
37219820Sjeff	case $1 in
38219820Sjeff	-D)
39219820Sjeff		use_d="-D"
40219820Sjeff		;;
41219820Sjeff	-h)
42219820Sjeff		usage
43219820Sjeff		;;
44219820Sjeff	-P | -C | -t | -timeout)
45219820Sjeff		case $2 in
46219820Sjeff		-*)
47219820Sjeff			usage
48219820Sjeff			;;
49219820Sjeff		esac
50219820Sjeff		if [ x$2 = x ] ; then
51219820Sjeff			usage
52219820Sjeff		fi
53219820Sjeff		ca_info="$ca_info $1 $2"
54219820Sjeff		shift
55219820Sjeff		;;
56219820Sjeff	-*)
57219820Sjeff		usage
58219820Sjeff		;;
59219820Sjeff	*)
60219820Sjeff		usage
61219820Sjeff		;;
62219820Sjeff	esac
63219820Sjeff	shift
64219820Sjeffdone
65219820Sjeff
66219820Sjeffif [ "$use_d" = "-D" ] ; then
67219820Sjeff	dump_by_dr_path
68219820Sjeffelse
69219820Sjeff	dump_by_lid
70219820Sjefffi
71219820Sjeff
72219820Sjeffexit
73