Add reading of the pid from the kext

This commit is contained in:
Vladimir Stoilov
2023-06-13 18:03:22 +03:00
parent cee7e9b0c8
commit f754555979
2 changed files with 5 additions and 1 deletions

View File

@@ -33,7 +33,7 @@ const (
// VerdictRequest is the request structure from the Kext.
type VerdictRequest struct {
id uint32 // ID from RegisterPacket
_ uint64 // Process ID - does not yet work
pid uint64 // Process ID - info only packets
direction uint8
ipV6 uint8 // True: IPv6, False: IPv4
protocol uint8 // Protocol
@@ -108,6 +108,7 @@ func Handler(packets chan packet.Packet) {
info.Inbound = packetInfo.direction > 0
info.InTunnel = false
info.Protocol = packet.IPProtocol(packetInfo.protocol)
info.PID = packetInfo.pid
// IP version
if packetInfo.ipV6 == 1 {

View File

@@ -147,6 +147,9 @@ func RecvVerdictRequest() (*VerdictRequest, error) {
// SetVerdict sets the verdict for a packet and/or connection.
func SetVerdict(pkt *Packet, verdict network.Verdict) error {
if pkt.verdictRequest.pid != 0 {
return nil // Ignore info only packets
}
if pkt.verdictRequest.id == 0 {
log.Tracer(pkt.Ctx()).Errorf("kext: failed to set verdict %s: no packet ID", verdict)
return ErrNoPacketID