@@ -802,6 +802,16 @@ func (p *EBPFProbe) Start() error {
802802 return p .eventStream .Start (& p .wg )
803803}
804804
805+ // ReplayEvents replays the events from the rule set
806+ func (p * EBPFProbe ) ReplayEvents () {
807+ p .replayEventsState .Store (true )
808+
809+ // trigger a nop event to ensure that the replayed events are processed
810+ if err := p .triggerNopEvent (); err != nil {
811+ seclog .Warnf ("unable to trigger nop event: %v" , err )
812+ }
813+ }
814+
805815func (p * EBPFProbe ) replayEvents (notifyConsumers bool ) {
806816 seclog .Debugf ("playing the snapshot" )
807817
@@ -2416,16 +2426,16 @@ func isRawPacketActionPresent(rs *rules.RuleSet) bool {
24162426}
24172427
24182428// ApplyRuleSet apply the required update to handle the new ruleset
2419- func (p * EBPFProbe ) ApplyRuleSet (rs * rules.RuleSet ) (* kfilters.FilterReport , error ) {
2429+ func (p * EBPFProbe ) ApplyRuleSet (rs * rules.RuleSet ) (* kfilters.FilterReport , bool , error ) {
24202430 if p .opts .SyscallsMonitorEnabled {
24212431 if err := p .monitors .syscallsMonitor .Disable (); err != nil {
2422- return nil , err
2432+ return nil , false , err
24232433 }
24242434 }
24252435
24262436 filterReport , err := kfilters .ComputeFilters (p .config .Probe , rs )
24272437 if err != nil {
2428- return nil , err
2438+ return nil , false , err
24292439 }
24302440
24312441 if err := applyDNSDefaultDropMaskFromRules (p .Manager , rs ); err != nil {
@@ -2438,16 +2448,16 @@ func (p *EBPFProbe) ApplyRuleSet(rs *rules.RuleSet) (*kfilters.FilterReport, err
24382448 if err := p .setApprovers (eventType , report .Approvers ); err != nil {
24392449 seclog .Errorf ("Error while adding approvers fallback in-kernel policy to `%s` for `%s`: %s" , kfilters .PolicyModeAccept , eventType , err )
24402450 if err := fpb .add (eventType , kfilters .PolicyModeAccept ); err != nil {
2441- return nil , err
2451+ return nil , false , err
24422452 }
24432453 } else {
24442454 if err := fpb .add (eventType , report .Mode ); err != nil {
2445- return nil , err
2455+ return nil , false , err
24462456 }
24472457 }
24482458 }
24492459 if err := fpb .apply (p .Manager ); err != nil {
2450- return nil , fmt .Errorf ("unable to apply to filter policy: %w" , err )
2460+ return nil , false , fmt .Errorf ("unable to apply to filter policy: %w" , err )
24512461 }
24522462
24532463 eventTypes := rs .GetEventTypes ()
@@ -2488,15 +2498,15 @@ func (p *EBPFProbe) ApplyRuleSet(rs *rules.RuleSet) (*kfilters.FilterReport, err
24882498 }
24892499
24902500 if err := p .updateProbes (eventTypes , needRawSyscalls ); err != nil {
2491- return nil , fmt .Errorf ("failed to select probes: %w" , err )
2501+ return nil , false , fmt .Errorf ("failed to select probes: %w" , err )
24922502 }
24932503
24942504 if p .opts .SyscallsMonitorEnabled {
24952505 if err := p .monitors .syscallsMonitor .Flush (); err != nil {
2496- return nil , err
2506+ return nil , false , err
24972507 }
24982508 if err := p .monitors .syscallsMonitor .Enable (); err != nil {
2499- return nil , err
2509+ return nil , false , err
25002510 }
25012511 }
25022512
@@ -2520,18 +2530,10 @@ func (p *EBPFProbe) ApplyRuleSet(rs *rules.RuleSet) (*kfilters.FilterReport, err
25202530 }
25212531
25222532 // do not replay the snapshot if we are in the first rule set version, this was already done in the start method
2523- if p .ruleSetVersion != 0 {
2524- p .replayEventsState .Store (true )
2525- }
2526-
2533+ replayEvents := p .ruleSetVersion != 0
25272534 p .ruleSetVersion ++
25282535
2529- // trigger a nop event to ensure that the replayed events are processed
2530- if err := p .triggerNopEvent (); err != nil {
2531- seclog .Warnf ("unable to trigger nop event: %v" , err )
2532- }
2533-
2534- return filterReport , nil
2536+ return filterReport , replayEvents , nil
25352537}
25362538
25372539// OnNewRuleSetLoaded resets statistics and states once a new rule set is loaded
0 commit comments