7.3 ntfe.verdict.reported

  • Event type: ntfe.verdict.reported
  • Defined in: ntfe.evman
  • Tier: essential
  • Gating: an explicit report directive in the matching rule
  • Cardinality: once per matching evaluation

The record of a traffic policy decision that a rule explicitly asked to be reported. Not a record of every decision — the engine evaluates constantly and reports only where a rule says to.

A stock machine emits none of these. The shipped baseline rule set contains no report directives, so this event exists and never fires until an administrator adds one. Absence of these records says nothing about whether traffic was evaluated.

The engine's own record of every verdict goes to a private ring read by the userspace policy daemon, not to the event stream, and is overwritten when no reader is attached. So the complete decision history is neither in the event stream nor durable.

Address, port and protocol fields are conditional on how far up the stack evaluation reached: traffic matched at the raw-packet layer has no addresses to record.

7.3.1 Fields #

FieldTypePresenceMeaning
rule.namestrrequiredThe policy rule that produced this record, by name.
rule.hashuintrequiredThe FNV-1a-64 hash of the rule's whole registry path.
rule.name-truncatedbooloptionalWhether rule.name was cut short because the rule's path did not fit in the record.
rule.report-leveluintrequiredThe reporting level the matching rule asked for.
rule.layerstr.enumrequiredWhich evaluation layer the rule sat in.
rule.seatstr.enumrequiredWhere in the path evaluation happened.
outcome.verdictstr.enumrequiredThe decision a policy engine reached, where the decision has more than two states and outcome.success cannot express it.
outcome.reasonstr.enumwhen outcome.verdict == rejectWhich flavour of explicit rejection the rule asked for: the story the REJECT tells the sender. refused says nothing is listening and reveals no policy; prohibited says policy refused the traffic. When two REJECTs tie on priority, refused wins.

Values here (closed set): prohibited · refused.
network.directionstr.enumrequiredWhich way the traffic was moving relative to this machine.
network.interface.namestroptionalAbsent when the traffic was evaluated with no device attached, in which case network.interface.index is 0.
network.interface.indexuintrequiredThe kernel's index for that interface.
network.ether-typeuintrequiredThe link-layer protocol number of the frame.
network.familyuint.enumrequiredThe address family of the addresses in this record.
network.protocoluint.enumwhen network.family != 0The transport protocol number, from the IANA protocol numbers registry.
source.addressstr.ipwhen network.family != 0The address the traffic came from, rendered in the textual form for its family.
destination.addressstr.ipwhen network.family != 0The address the traffic was going to, rendered in the textual form for its family.
source.portuintoptionalPresent when the protocol has ports.
destination.portuintoptionalPresent when the protocol has ports.
flow.statestr.enumoptionalPresent when flow tracking applied.
network.lengthuint.bytesrequiredThe length of the traffic unit evaluated.
policy.generationuintrequiredThe generation counter of the rule set in force when the decision was made.

Every record also carries the header fields of the envelope, which no payload repeats.

Generated from ntfe.evman by pkm/tools/gen-events-book.py. Edit the fragment, not this page.

Edit this page