|
1 | 1 | #!/usr/bin/env perl
|
2 | 2 |
|
3 | 3 | #
|
4 |
| -# Copyright © 2013-2016 Inria. All rights reserved. |
| 4 | +# Copyright © 2013-2017 Inria. All rights reserved. |
5 | 5 | #
|
6 | 6 | # See COPYING in top-level directory.
|
7 | 7 | #
|
@@ -202,22 +202,24 @@ if (@forcesubnets) {
|
202 | 202 | my $boardname = undef;
|
203 | 203 | my $portnum = undef;
|
204 | 204 | while (my $line = <FILE>) {
|
205 |
| - if ($line =~ /<object type=\"OSDev\".* name=\"(.+)\".* osdev_type=\"3\".*>/) { |
| 205 | + if ($line =~ /<object type=\"OSDev\".* name=\"((?!hfi)(?!usnic).+)\".* osdev_type=\"3\".*>/) { |
206 | 206 | $boardname = $1;
|
207 |
| - } elsif ($line =~ /<\/object>/) { |
208 |
| - $boardname = undef; |
209 |
| - } elsif ($line =~ /<info name=\"Port([0-9]+)GID([0-9]+)\".* value=\"([0-9a-fA-F:]{19}):([0-9a-fA-F:]{19})\"\/.*>/) { |
210 |
| - $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{subnet} = $3; |
211 |
| - $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{guid} = $4; |
212 |
| - } elsif ($line =~ /<info name=\"Port([0-9]+)LID\" value=\"(0x[0-9a-fA-F]+)\"\/>/) { |
213 |
| - # lid must be between 0x1 and 0xbfff |
214 |
| - if ((hex $2) < 1 or (hex $2) > 49151) { |
215 |
| - $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; |
216 |
| - } |
217 |
| - } elsif ($line =~ /<info name=\"Port([0-9]+)State\" value=\"([0-9])\"\/>/) { |
218 |
| - # state must be active = 4 |
219 |
| - if ($2 != 4) { |
220 |
| - $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; |
| 207 | + } elsif (defined $boardname) { |
| 208 | + if ($line =~ /<\/object>/) { |
| 209 | + $boardname = undef; |
| 210 | + } elsif ($line =~ /<info name=\"Port([0-9]+)GID([0-9]+)\".* value=\"([0-9a-fA-F:]{19}):([0-9a-fA-F:]{19})\"\/.*>/) { |
| 211 | + $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{subnet} = $3; |
| 212 | + $servers{$hostname}->{gids}->{$boardname}->{$1}->{$2}->{guid} = $4; |
| 213 | + } elsif ($line =~ /<info name=\"Port([0-9]+)LID\" value=\"(0x[0-9a-fA-F]+)\"\/>/) { |
| 214 | + # lid must be between 0x1 and 0xbfff |
| 215 | + if ((hex $2) < 1 or (hex $2) > 49151) { |
| 216 | + $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; |
| 217 | + } |
| 218 | + } elsif ($line =~ /<info name=\"Port([0-9]+)State\" value=\"([0-9])\"\/>/) { |
| 219 | + # state must be active = 4 |
| 220 | + if ($2 != 4) { |
| 221 | + $servers{$hostname}->{gids}->{$boardname}->{$1}->{invalid} = 1; |
| 222 | + } |
221 | 223 | }
|
222 | 224 | }
|
223 | 225 | }
|
|
0 commit comments