Revamp process attribution of network connections
This commit is contained in:
37
network/state/system_linux.go
Normal file
37
network/state/system_linux.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"github.com/safing/portmaster/network/proc"
|
||||
"github.com/safing/portmaster/network/socket"
|
||||
)
|
||||
|
||||
var (
|
||||
getTCP4Table = proc.GetTCP4Table
|
||||
getTCP6Table = proc.GetTCP6Table
|
||||
getUDP4Table = proc.GetUDP4Table
|
||||
getUDP6Table = proc.GetUDP6Table
|
||||
)
|
||||
|
||||
func checkConnectionPID(socketInfo *socket.ConnectionInfo, connInbound bool) (pid int, inbound bool, err error) {
|
||||
if socketInfo.PID == proc.UnfetchedProcessID {
|
||||
pid, ok := proc.FindPID(socketInfo.UID, socketInfo.Inode)
|
||||
if ok {
|
||||
socketInfo.PID = pid
|
||||
} else {
|
||||
socketInfo.PID = UnidentifiedProcessID
|
||||
}
|
||||
}
|
||||
return socketInfo.PID, connInbound, nil
|
||||
}
|
||||
|
||||
func checkBindPID(socketInfo *socket.BindInfo, connInbound bool) (pid int, inbound bool, err error) {
|
||||
if socketInfo.PID == proc.UnfetchedProcessID {
|
||||
pid, ok := proc.FindPID(socketInfo.UID, socketInfo.Inode)
|
||||
if ok {
|
||||
socketInfo.PID = pid
|
||||
} else {
|
||||
socketInfo.PID = UnidentifiedProcessID
|
||||
}
|
||||
}
|
||||
return socketInfo.PID, connInbound, nil
|
||||
}
|
||||
Reference in New Issue
Block a user