mirror of
https://github.com/safing/portmaster
synced 2025-09-01 10:09:11 +00:00
38 lines
928 B
Go
38 lines
928 B
Go
package state
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/safing/portbase/database/record"
|
|
"github.com/safing/portmaster/netenv"
|
|
"github.com/safing/portmaster/network/socket"
|
|
)
|
|
|
|
// Info holds network state information as provided by the system.
|
|
type Info struct {
|
|
record.Base
|
|
sync.Mutex
|
|
|
|
TCP4Connections []*socket.ConnectionInfo
|
|
TCP4Listeners []*socket.BindInfo
|
|
TCP6Connections []*socket.ConnectionInfo
|
|
TCP6Listeners []*socket.BindInfo
|
|
UDP4Binds []*socket.BindInfo
|
|
UDP6Binds []*socket.BindInfo
|
|
}
|
|
|
|
// GetInfo returns all system state tables. The returned data must not be modified.
|
|
func GetInfo() *Info {
|
|
info := &Info{}
|
|
|
|
info.TCP4Connections, info.TCP4Listeners = tcp4Table.updateTables()
|
|
info.UDP4Binds = udp4Table.updateTables()
|
|
|
|
if netenv.IPv6Enabled() {
|
|
info.TCP6Connections, info.TCP6Listeners = tcp6Table.updateTables()
|
|
info.UDP6Binds = udp6Table.updateTables()
|
|
}
|
|
|
|
info.UpdateMeta()
|
|
return info
|
|
}
|