#1111 Support for OUI28/MA-M and OUI36/MA-S

* new oui importer using IEEE csv for MA-L+M+S

* schema update for new vendor table

* change vendor to manufacturer because Device has a vendor field

* remove oui from manuf table, and update node oui after manuf update

* faster way to bulk update node oui

* switch from using oui table to manufacturer table for vendor lookup

* some other oui cleanup

* faster/scalable way to join a macaddr to manuf table

* remove device.oui support

* update node oui in bulk at end of macsuck run

* correct literal sql instead of bind

* more efficient to get oui base for each mac

* comment better the base lookup in macsuck
This commit is contained in:
Oliver Gorwits
2023-11-14 18:55:54 +00:00
committed by GitHub
parent 7766ce64d1
commit 534a9d9378
26 changed files with 427 additions and 193 deletions

View File

@@ -46,9 +46,9 @@ get '/ajax/content/report/nodevendor/data' => require_login sub {
my $match = $vendor eq 'blank' ? undef : $vendor;
$rs = $rs->search( { 'oui.abbrev' => $match },
{ '+columns' => [qw/ device.dns device.name oui.abbrev oui.company /],
join => [qw/ oui device /],
$rs = $rs->search( { 'manufacturer.abbrev' => $match },
{ '+columns' => [qw/ device.dns device.name manufacturer.abbrev manufacturer.company /],
join => [qw/ manufacturer device /],
collapse => 1,
});
@@ -85,9 +85,9 @@ get '/ajax/content/report/nodevendor' => require_login sub {
my $match = $vendor eq 'blank' ? undef : $vendor;
$rs = $rs->search( { 'oui.abbrev' => $match },
{ '+columns' => [qw/ device.dns device.name oui.abbrev oui.company /],
join => [qw/ oui device /],
$rs = $rs->search( { 'manufacturer.abbrev' => $match },
{ '+columns' => [qw/ device.dns device.name manufacturer.abbrev manufacturer.company /],
join => [qw/ manufacturer device /],
collapse => 1,
});
@@ -101,10 +101,10 @@ get '/ajax/content/report/nodevendor' => require_login sub {
elsif ( !defined $vendor ) {
$rs = $rs->search(
{ },
{ join => 'oui',
select => [ 'oui.abbrev', 'oui.company', { count => {distinct => 'me.mac'}} ],
{ join => 'manufacturer',
select => [ 'manufacturer.abbrev', 'manufacturer.company', { count => {distinct => 'me.mac'}} ],
as => [qw/ abbrev vendor count /],
group_by => [qw/ oui.abbrev oui.company /]
group_by => [qw/ manufacturer.abbrev manufacturer.company /]
}
)->order_by( { -desc => 'count' } );