feat: VLAN in FDB, persist vlan, enrich port-devices with hostname, UI columns

Made-with: Cursor
This commit is contained in:
PTah
2026-04-13 12:38:05 +10:00
parent 927110167c
commit 886300b6c0
8 changed files with 91 additions and 26 deletions
+6 -5
View File
@@ -542,8 +542,8 @@ func (s *PostgresStore) PurgeAllScanData() error {
func (s *PostgresStore) SavePortDeviceResult(scanID string, result PortDeviceResult) error {
query := `
insert into scan_port_devices (scan_id, ip, if_index, bridge_port, mac, learned_ip, checked_at)
values ($1, $2, $3, $4, $5, $6, $7)`
insert into scan_port_devices (scan_id, ip, if_index, bridge_port, vlan, mac, learned_ip, checked_at)
values ($1, $2, $3, $4, $5, $6, $7, $8)`
var learnedIP any
if v := strings.TrimSpace(result.LearnedIP); v != "" {
learnedIP = v
@@ -557,6 +557,7 @@ values ($1, $2, $3, $4, $5, $6, $7)`
result.IP,
result.IfIndex,
result.BridgePort,
result.Vlan,
result.MAC,
learnedIP,
result.CheckedAt,
@@ -569,12 +570,12 @@ func (s *PostgresStore) ListPortDeviceResults(scanID string, filterIP string, fi
limit = 20000
}
query := `
select ip::text, if_index, bridge_port, coalesce(mac, ''), coalesce(learned_ip::text, ''), checked_at
select ip::text, if_index, bridge_port, vlan, coalesce(mac, ''), coalesce(learned_ip::text, ''), checked_at
from scan_port_devices
where scan_id = $1
and ($2 = '' or ip = $2::inet)
and ($3 = 0 or if_index = $3 or bridge_port = $3)
order by if_index asc, mac asc, learned_ip asc
order by if_index asc, vlan asc, mac asc, learned_ip asc
limit $4`
rows, err := s.db.QueryContext(context.Background(), query, scanID, filterIP, filterIfIndex, limit)
if err != nil {
@@ -585,7 +586,7 @@ limit $4`
out := make([]PortDeviceResult, 0, 256)
for rows.Next() {
var r PortDeviceResult
if err = rows.Scan(&r.IP, &r.IfIndex, &r.BridgePort, &r.MAC, &r.LearnedIP, &r.CheckedAt); err != nil {
if err = rows.Scan(&r.IP, &r.IfIndex, &r.BridgePort, &r.Vlan, &r.MAC, &r.LearnedIP, &r.CheckedAt); err != nil {
return nil
}
out = append(out, r)