#581 skip storing and displaying fabricated vlan 0
This commit is contained in:
@@ -399,6 +399,8 @@ sub carrying_vlan {
|
||||
die "vlan number required for carrying_vlan\n"
|
||||
if ref {} ne ref $cond or !exists $cond->{vlan};
|
||||
|
||||
return $rs unless $cond->{vlan};
|
||||
|
||||
return $rs
|
||||
->search_rs({ 'vlans.vlan' => $cond->{vlan} },
|
||||
{
|
||||
@@ -449,6 +451,7 @@ sub carrying_vlan_name {
|
||||
die "vlan name required for carrying_vlan_name\n"
|
||||
if ref {} ne ref $cond or !exists $cond->{name};
|
||||
|
||||
$cond->{'vlans.vlan'} = { '>' => 0 };
|
||||
$cond->{'vlans.description'} = { '-ilike' => delete $cond->{name} };
|
||||
|
||||
return $rs
|
||||
|
||||
@@ -17,7 +17,8 @@ get '/ajax/content/device/vlans' => require_login sub {
|
||||
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
my @results = $device->vlans->search( {}, { order_by => 'vlan' } )->hri->all;
|
||||
my @results = $device->vlans->search(
|
||||
{ vlan => { '>' => 0 } }, { order_by => 'vlan' } )->hri->all;
|
||||
|
||||
return unless scalar @results;
|
||||
|
||||
|
||||
@@ -16,7 +16,10 @@ register_report(
|
||||
|
||||
get '/ajax/content/report/vlaninventory' => require_login sub {
|
||||
my @results = schema('netdisco')->resultset('DeviceVlan')->search(
|
||||
{ 'me.description' => { '!=', 'NULL' } },
|
||||
{ 'me.description' => { '!=', 'NULL' },
|
||||
'me.vlan' => { '>' => 0 },
|
||||
'ports.vlan' => { '>' => 0 },
|
||||
},
|
||||
{ join => { 'ports' => 'vlan' },
|
||||
select => [
|
||||
'me.vlan',
|
||||
|
||||
@@ -48,6 +48,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
||||
my $type = $i_vlan_type->{$entry};
|
||||
|
||||
foreach my $vlan (@{ $i_vlan_membership_untagged->{$entry} || [] }) {
|
||||
next unless $vlan;
|
||||
next if $this_port_vlans{$vlan};
|
||||
my $native = ((defined $i_vlan->{$entry})
|
||||
and ($vlan eq $i_vlan->{$entry})) ? 't' : 'f';
|
||||
@@ -66,6 +67,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
||||
}
|
||||
|
||||
foreach my $vlan (@{ $i_vlan_membership->{$entry} || [] }) {
|
||||
next unless $vlan;
|
||||
next if $this_port_vlans{$vlan};
|
||||
my $native = ((defined $i_vlan->{$entry})
|
||||
and ($vlan eq $i_vlan->{$entry})) ? 't' : 'f';
|
||||
@@ -100,6 +102,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
||||
# add named vlans to the device
|
||||
foreach my $entry (keys %$v_name) {
|
||||
my $vlan = $v_index->{$entry};
|
||||
next unless $vlan;
|
||||
next unless defined $vlan and $vlan;
|
||||
++$d_seen{$vlan};
|
||||
|
||||
@@ -112,6 +115,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
||||
|
||||
# also add unnamed vlans to the device
|
||||
foreach my $vlan (keys %p_seen) {
|
||||
next unless $vlan;
|
||||
next if $d_seen{$vlan};
|
||||
push @devicevlans, {
|
||||
vlan => $vlan,
|
||||
|
||||
@@ -54,8 +54,9 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
||||
# reverse sort allows vlan 0 entries to be included only as fallback
|
||||
foreach my $vlan (reverse sort keys %$fwtable) {
|
||||
foreach my $port (keys %{ $fwtable->{$vlan} }) {
|
||||
my $vlabel = ($vlan ? $vlan : 'unknown');
|
||||
debug sprintf ' [%s] macsuck - port %s vlan %s : %s nodes',
|
||||
$device->ip, $port, $vlan, scalar keys %{ $fwtable->{$vlan}->{$port} };
|
||||
$device->ip, $port, $vlabel, scalar keys %{ $fwtable->{$vlan}->{$port} };
|
||||
|
||||
# make sure this port is UP in netdisco (unless it's a lag master,
|
||||
# because we can still see nodes without a functioning aggregate)
|
||||
@@ -200,7 +201,7 @@ sub get_vlan_list {
|
||||
}
|
||||
|
||||
debug sprintf ' [%s] macsuck - VLANs: %s', $device->ip,
|
||||
(join ',', sort keys %vlans);
|
||||
(join ',', sort grep {$_} keys %vlans);
|
||||
|
||||
my @ok_vlans = ();
|
||||
foreach my $vlan (sort keys %vlans) {
|
||||
@@ -240,11 +241,12 @@ sub get_vlan_list {
|
||||
next;
|
||||
}
|
||||
|
||||
if ($vlan == 0 or $vlan > 4094) {
|
||||
if ($vlan > 4094) {
|
||||
debug sprintf ' [%s] macsuck - invalid VLAN number %s',
|
||||
$device->ip, $vlan;
|
||||
next;
|
||||
}
|
||||
next if $vlan == 0; # quietly skip
|
||||
|
||||
# check in use by a port on this device
|
||||
if (!$vlans{$vlan} && !setting('macsuck_all_vlans')) {
|
||||
|
||||
@@ -189,14 +189,16 @@
|
||||
data-field="c_pvid" data-for-device="[% device.ip | html_entity %]" data-for-port="[% row.port | html_entity %]">
|
||||
<i class="icon-edit nd_edit-icon"></i>
|
||||
<div class="nd_editable-cell-content">
|
||||
[% IF row.vlan %][% row.vlan | html_entity %][% END %]
|
||||
[% IF row.vlan AND row.vlan > 0 %][% row.vlan | html_entity %][% END %]
|
||||
</div>
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td>
|
||||
[% IF row.vlan AND row.vlan > 0 %]
|
||||
<a class="nd_linkcell"
|
||||
href="[% uri_for('/search') %]?tab=vlan&q=[% row.vlan | uri %]">
|
||||
[% row.vlan | html_entity %]</a>
|
||||
[% END %]
|
||||
</td>
|
||||
[% END %]
|
||||
[% END %]
|
||||
@@ -204,14 +206,16 @@
|
||||
[% IF params.c_vmember %]
|
||||
<td>
|
||||
[% IF vlans.$portname.vlan_count <= settings.devport_vlan_limit %]
|
||||
[% SET vlan_count = vlans.$portname.vlan_count %]
|
||||
[% SET output = '' %]
|
||||
[% FOREACH vlan IN vlans.$portname.vlan_set.nsort %]
|
||||
[% IF vlan == 0 %][% SET vlan_count = (vlan_count - 1) %][% NEXT %][% END %]
|
||||
[% SET output = output _
|
||||
'<a href="' _ uri_for('/search') _ '?tab=vlan&q=' _ vlan _ '">' _ vlan _ '</a>' %]
|
||||
[% SET output = output _ ', ' IF NOT loop.last %]
|
||||
[% END %]
|
||||
[% IF vlans.$portname.vlan_count > 10 %] [%# TODO make this a settable variable %]
|
||||
[% SET output = '<div class="nd_vlan-total">(' _ vlans.$portname.vlan_count
|
||||
[% IF vlan_count > 10 %] [%# TODO make this a settable variable %]
|
||||
[% SET output = '<div class="nd_vlan-total">(' _ vlan_count
|
||||
_ ')</div><span class="nd_linkcell nd_collapse-vlans">
|
||||
<div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs</span>
|
||||
<div class="nd_collapsing nd_collapse-pre-hidden">' _ output %]
|
||||
|
||||
Reference in New Issue
Block a user