Commit 4dfb99dc authored by Gary Wong's avatar Gary Wong
Browse files

Don't remove a special interface if it's in a VLAN (use -f to force).

parent 80dcaf1f
...@@ -42,15 +42,17 @@ sub usage() ...@@ -42,15 +42,17 @@ sub usage()
print STDERR " -n - Dry run mode\n"; print STDERR " -n - Dry run mode\n";
print STDERR " -t - Do not call snmpit to set trunk mode\n"; print STDERR " -t - Do not call snmpit to set trunk mode\n";
print STDERR " -r - Delete interface\n"; print STDERR " -r - Delete interface\n";
print STDERR " -f - (with -r) force deletion, even if iface used\n";
print STDERR " -b speed - Interface speed; 100Mb, 1Gb or 10Gb \n"; print STDERR " -b speed - Interface speed; 100Mb, 1Gb or 10Gb \n";
print STDERR " -s info - switchname,switchcard,switchport\n"; print STDERR " -s info - switchname,switchcard,switchport\n";
print STDERR " iface_id - eth0, eth1, etc (must end in an integer)\n"; print STDERR " iface_id - eth0, eth1, etc (must end in an integer)\n";
exit(-1); exit(-1);
} }
my $optlist = "b:dns:rt"; my $optlist = "b:dfns:rt";
my $debug = 0; my $debug = 0;
my $impotent = 0; my $impotent = 0;
my $removing = 0; my $removing = 0;
my $force = 0;
my $notrunk = 0; my $notrunk = 0;
my $speed; my $speed;
my $switchinfo; my $switchinfo;
...@@ -106,6 +108,9 @@ if (defined($options{'n'})) { ...@@ -106,6 +108,9 @@ if (defined($options{'n'})) {
if (defined($options{'r'})) { if (defined($options{'r'})) {
$removing = 1; $removing = 1;
} }
if (defined($options{'f'})) {
$force = 1;
}
if (defined($options{'t'})) { if (defined($options{'t'})) {
$notrunk = 1; $notrunk = 1;
} }
...@@ -147,19 +152,39 @@ else { ...@@ -147,19 +152,39 @@ else {
if (defined($interface)); if (defined($interface));
} }
if ($removing) { if ($removing) {
if ($node->IsReserved() && my $query_result =
$node->erole() eq "sharedhost" && !$notrunk) { DBQueryWarn("select lma1.lanid from lan_member_attributes as lma1, " .
print "Turning off trunk mode for $node_id:$iface_id\n"; "lan_member_attributes as lma2 where " .
system("$SNMPIT -U $node_id:$iface_id") == 0 "lma1.lanid = lma2.lanid and lma1.memberid=lma2.memberid " .
or fatal("Could not turn off port trunking mode"); "and lma1.attrkey='node_id' and " .
"lma1.attrvalue='$node_id' and " .
"lma2.attrkey='iface' and " .
"lma2.attrvalue='$iface_id'");
if( $query_result && $query_result->numrows > 0 ) {
if( $force ) {
print "$node_id:$iface_id appears to be in use; " .
"continuing anyway...\n";
} else {
print "warning: $node_id:$iface_id appears to be in use; " .
"entering impotent mode (use -f to force removal)\n";
$impotent = 1;
}
} }
if( !$impotent ) {
if ($node->IsReserved() &&
$node->erole() eq "sharedhost" && !$notrunk) {
print "Turning off trunk mode for $node_id:$iface_id\n";
system("$SNMPIT -U $node_id:$iface_id") == 0
or fatal("Could not turn off port trunking mode");
}
$interface->DeleteWire() == 0 $interface->DeleteWire() == 0
or fatal("Could not delete wire for $interface"); or fatal("Could not delete wire for $interface");
# Flag indicates it is okay to delete real interface. # Flag indicates it is okay to delete real interface.
$interface->Delete(1) == 0 $interface->Delete(1) == 0
or fatal("Could not delete $interface"); or fatal("Could not delete $interface");
}
exit(0); exit(0);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment