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