my $n = $ifaces->{$p};
die "OVS bridge '$iface' - unable to find port '$p'\n"
if !$n;
+ $n->{autostart} = 0;
if ($n->{type} eq 'eth') {
$n->{type} = 'OVSPort';
$n->{ovs_bridge} = $iface;
}
}
+ # Remove autostart from linux bridge ports
+ foreach my $iface (keys %$ifaces) {
+ my $d = $ifaces->{$iface};
+ if ($d->{type} eq 'bridge' && $d->{bridge_ports}) {
+ foreach my $p (split (/\s+/, $d->{bridge_ports})) {
+ my $n = $ifaces->{$p};
+ die "bridge '$iface' - unable to find port '$p'\n"
+ if !$n;
+ $n->{autostart} = 0;
+ }
+ }
+ }
+
# check OVS bond ports
foreach my $iface (keys %$ifaces) {
my $d = $ifaces->{$iface};
my $if_type_hash = {
unknown => 0,
- loopback => 10,
- eth => 20,
- bond => 30,
- bridge => 40,
+ loopback => 100000,
+ eth => 200000,
+ bond => 300000,
+ bridge => 400000,
};
my $lookup_type_prio = sub {
my $p1 = &$lookup_type_prio($a);
my $p2 = &$lookup_type_prio($b);
- return $p1 <=> $p2 if $p1 != $p2;
-
- $p1 = $ref1->{priority} || 100000;
- $p2 = $ref2->{priority} || 100000;
+ $p1 += $ref1->{priority} // 50000;
+ $p2 += $ref2->{priority} // 50000;
return $p1 <=> $p2 if $p1 != $p2;
return $a cmp $b;
- } keys %$ifaces) {
-
- my $d = $ifaces->{$iface};
-
+ } keys %$ifaces) {
next if $printed->{$iface};
- if (@options && $options[0]->[0] < $d->{priority}) {
+ my $d = $ifaces->{$iface};
+ my $pri = $d->{priority} // 0;
+ if (@options && $options[0]->[0] < $pri) {
do {
$raw .= (shift @options)->[1] . "\n";
- } while (@options && $options[0]->[0] < $d->{priority});
+ } while (@options && $options[0]->[0] < $pri);
$raw .= "\n";
}