@@ -119,8 +119,6 @@ type Tracee struct {
119119 streamsManager * streams.StreamsManager
120120 // policyManager manages policy state
121121 policyManager * policyManager
122- // The dependencies of events used by Tracee
123- eventsDependencies * dependencies.Manager
124122
125123 // Ksymbols needed to be kept alive in table.
126124 // This does not mean they are required for tracee to function.
@@ -180,7 +178,7 @@ func (t *Tracee) addDependenciesToStateRecursive(eventNode *dependencies.EventNo
180178 eventID := eventNode .GetID ()
181179 for _ , dependencyEventID := range eventNode .GetDependencies ().GetIDs () {
182180 t .addDependencyEventToState (dependencyEventID , []events.ID {eventID })
183- dependencyNode , err := t . eventsDependencies .GetEvent (dependencyEventID )
181+ dependencyNode , err := dependencies . GetManagerInstance () .GetEvent (dependencyEventID )
184182 if err == nil {
185183 t .addDependenciesToStateRecursive (dependencyNode )
186184 }
@@ -189,7 +187,7 @@ func (t *Tracee) addDependenciesToStateRecursive(eventNode *dependencies.EventNo
189187
190188func (t * Tracee ) selectEvent (eventID events.ID , chosenState events.EventState ) {
191189 t .addEventState (eventID , chosenState )
192- eventNode , err := t . eventsDependencies .SelectEvent (eventID )
190+ eventNode , err := dependencies . GetManagerInstance () .SelectEvent (eventID )
193191 if err != nil {
194192 logger .Errorw ("Event selection failed" ,
195193 "event" , events .Core .GetDefinitionByID (eventID ).GetName ())
@@ -239,16 +237,17 @@ func New(cfg config.Config) (*Tracee, error) {
239237 eventSignatures : make (map [events.ID ]bool ),
240238 streamsManager : streams .NewStreamsManager (),
241239 policyManager : policyManager ,
242- eventsDependencies : dependencies .NewDependenciesManager (
243- func (id events.ID ) events.Dependencies {
244- return events .Core .GetDefinitionByID (id ).GetDependencies ()
245- }),
246- requiredKsyms : []string {},
240+ requiredKsyms : []string {},
247241 }
248242
243+ eventsDependencies := dependencies .NewDependenciesManager (
244+ func (id events.ID ) events.Dependencies {
245+ return events .Core .GetDefinitionByID (id ).GetDependencies ()
246+ })
247+
249248 // TODO: As dynamic event addition or removal becomes a thing, we should subscribe all the watchers
250249 // before selecting them. There is no reason to select the event in the New function anyhow.
251- t . eventsDependencies .SubscribeAdd (
250+ eventsDependencies .SubscribeAdd (
252251 dependencies .EventNodeType ,
253252 func (node interface {}) []dependencies.Action {
254253 eventNode , ok := node .(* dependencies.EventNode )
@@ -259,7 +258,7 @@ func New(cfg config.Config) (*Tracee, error) {
259258 t .addDependencyEventToState (eventNode .GetID (), eventNode .GetDependents ())
260259 return nil
261260 })
262- t . eventsDependencies .SubscribeRemove (
261+ eventsDependencies .SubscribeRemove (
263262 dependencies .EventNodeType ,
264263 func (node interface {}) []dependencies.Action {
265264 eventNode , ok := node .(* dependencies.EventNode )
@@ -353,7 +352,7 @@ func New(cfg config.Config) (*Tracee, error) {
353352 if ! events .Core .IsDefined (id ) {
354353 return t , errfmt .Errorf ("event %d is not defined" , id )
355354 }
356- depsNode , err := t . eventsDependencies .GetEvent (id )
355+ depsNode , err := eventsDependencies .GetEvent (id )
357356 if err == nil {
358357 deps := depsNode .GetDependencies ()
359358 evtCaps := deps .GetCapabilities ()
@@ -915,7 +914,7 @@ func (t *Tracee) initKsymTableRequiredSyms() error {
915914 return errfmt .Errorf ("event %d is not defined" , id )
916915 }
917916
918- depsNode , err := t . eventsDependencies .GetEvent (id )
917+ depsNode , err := dependencies . GetManagerInstance () .GetEvent (id )
919918 if err != nil {
920919 logger .Warnw ("failed to extract required ksymbols from event" , "event_id" , id , "error" , err )
921920 continue
@@ -1029,8 +1028,10 @@ func getUnavailbaleKsymbols(ksymbols []events.KSymbol, kernelSymbols *environmen
10291028// from the kallsyms file to check for missing symbols. If some symbols are
10301029// missing, it will cancel their event with informative error message.
10311030func (t * Tracee ) validateKallsymsDependencies () {
1031+ depsInstance := dependencies .GetManagerInstance ()
1032+
10321033 evtDefSymDeps := func (id events.ID ) []events.KSymbol {
1033- depsNode , _ := t . eventsDependencies .GetEvent (id )
1034+ depsNode , _ := depsInstance .GetEvent (id )
10341035 deps := depsNode .GetDependencies ()
10351036 return deps .GetKSymbols ()
10361037 }
@@ -1059,7 +1060,7 @@ func (t *Tracee) validateKallsymsDependencies() {
10591060 return true
10601061 }
10611062
1062- t . eventsDependencies .SubscribeAdd (
1063+ depsInstance .SubscribeAdd (
10631064 dependencies .EventNodeType ,
10641065 func (node interface {}) []dependencies.Action {
10651066 eventNode , ok := node .(* dependencies.EventNode )
@@ -1076,7 +1077,7 @@ func (t *Tracee) validateKallsymsDependencies() {
10761077 for eventId := range t .eventsState {
10771078 if ! validateEvent (eventId ) {
10781079 // Cancel the event, its dependencies and its dependent events
1079- err := t . eventsDependencies .RemoveEvent (eventId )
1080+ err := depsInstance .RemoveEvent (eventId )
10801081 if err != nil {
10811082 logger .Warnw ("Failed to remove event from dependencies manager" , "remove reason" , "missing ksymbols" , "error" , err )
10821083 }
@@ -1245,7 +1246,7 @@ func (t *Tracee) populateFilterMaps(newPolicies *policy.Policies, updateProcTree
12451246// Return whether the event was successfully attached or not.
12461247func (t * Tracee ) attachEvent (id events.ID ) error {
12471248 evtName := events .Core .GetDefinitionByID (id ).GetName ()
1248- depsNode , err := t . eventsDependencies .GetEvent (id )
1249+ depsNode , err := dependencies . GetManagerInstance () .GetEvent (id )
12491250 if err != nil {
12501251 logger .Errorw ("Missing event in dependencies" , "event" , evtName )
12511252 return err
@@ -1274,9 +1275,11 @@ func (t *Tracee) attachEvent(id events.ID) error {
12741275
12751276// attachProbes attaches selected events probes to their respective eBPF programs.
12761277func (t * Tracee ) attachProbes () error {
1278+ depsInstance := dependencies .GetManagerInstance ()
1279+
12771280 // Subscribe to all watchers on the dependencies to attach and/or detach
12781281 // probes upon changes
1279- t . eventsDependencies .SubscribeAdd (
1282+ depsInstance .SubscribeAdd (
12801283 dependencies .ProbeNodeType ,
12811284 func (node interface {}) []dependencies.Action {
12821285 probeNode , ok := node .(* dependencies.ProbeNode )
@@ -1291,7 +1294,7 @@ func (t *Tracee) attachProbes() error {
12911294 return nil
12921295 })
12931296
1294- t . eventsDependencies .SubscribeRemove (
1297+ depsInstance .SubscribeRemove (
12951298 dependencies .ProbeNodeType ,
12961299 func (node interface {}) []dependencies.Action {
12971300 probeNode , ok := node .(* dependencies.ProbeNode )
@@ -1312,7 +1315,7 @@ func (t *Tracee) attachProbes() error {
13121315 for eventID := range t .eventsState {
13131316 err := t .attachEvent (eventID )
13141317 if err != nil {
1315- err := t . eventsDependencies .RemoveEvent (eventID )
1318+ err := depsInstance .RemoveEvent (eventID )
13161319 if err != nil {
13171320 logger .Warnw ("Failed to remove event from dependencies manager" , "remove reason" , "failed probes attachment" , "error" , err )
13181321 }
0 commit comments