feat: VLAN in FDB, persist vlan, enrich port-devices with hostname, UI columns
Made-with: Cursor
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user