]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ofed/management/infiniband-diags/scripts/dump_lfts.sh
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / ofed / management / infiniband-diags / scripts / dump_lfts.sh
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
8 usage ()
9 {
10         echo Usage: `basename $0` "[-h] [-D] [-C ca_name]" \
11             "[-P ca_port] [-t(imeout) timeout_ms]"
12         exit 2
13 }
14
15 dump_by_lid ()
16 {
17 for sw_lid in `ibswitches $ca_info \
18                 | sed -ne 's/^.* lid \([0-9a-f]*\) .*$/\1/p'` ; do
19         ibroute $ca_info $sw_lid
20 done
21 }
22
23 dump_by_dr_path ()
24 {
25 for 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}
30 done
31 }
32
33 use_d=""
34 ca_info=""
35
36 while [ "$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
64 done
65
66 if [ "$use_d" = "-D" ] ; then
67         dump_by_dr_path
68 else
69         dump_by_lid
70 fi
71
72 exit