@@ -266,20 +266,20 @@ func New(cfg Config) (*Tracee, error) {
266266 return nil , fmt .Errorf ("validation error: %v" , err )
267267 }
268268
269- // create tracee
269+ // Create Tracee
270270 t := & Tracee {
271271 config : cfg ,
272272 writtenFiles : make (map [string ]string ),
273273 capturedFiles : make (map [string ]int64 ),
274274 events : GetEssentialEventsList (),
275275 }
276276
277- // Start capabilities rings
278- // err = capabilities.NewCapabilities(t.config.Capabilities.BypassCaps)
279- err = capabilities .NewCapabilities (true ) // TODO: force until drop priv is finished
277+ // Initialize capabilities rings soon
278+ err = capabilities .Initialize (t .config .Capabilities .BypassCaps )
280279 if err != nil {
281280 return t , err
282281 }
282+ caps := capabilities .GetInstance ()
283283
284284 // Pseudo events added by capture
285285 for eventID , eCfg := range GetCaptureEventsList (cfg ) {
@@ -304,7 +304,7 @@ func New(cfg Config) (*Tracee, error) {
304304 return t , fmt .Errorf ("could not get event" )
305305 }
306306 for _ , capArray := range evt .Dependencies .Capabilities {
307- capabilities . Caps .Require (capArray )
307+ caps .Require (capArray )
308308 }
309309 }
310310
@@ -314,7 +314,7 @@ func New(cfg Config) (*Tracee, error) {
314314 if err != nil {
315315 return t , err
316316 }
317- err = capabilities . Caps .Require (capsToAdd ... )
317+ err = caps .Require (capsToAdd ... )
318318 if err != nil {
319319 return t , err
320320 }
@@ -323,7 +323,7 @@ func New(cfg Config) (*Tracee, error) {
323323 if err != nil {
324324 return t , err
325325 }
326- err = capabilities . Caps .Unrequire (capsToDrop ... )
326+ err = caps .Unrequire (capsToDrop ... )
327327 if err != nil {
328328 return t , err
329329 }
@@ -377,7 +377,7 @@ func (t *Tracee) Init() error {
377377 // Init kernel symbols map
378378
379379 if initReq .kallsyms {
380- err = capabilities .Caps .Requested (func () error { // ring2
380+ err = capabilities .GetInstance () .Requested (func () error { // ring2
381381
382382 t .kernelSymbols , err = helpers .NewKernelSymbolsMap ()
383383 if err != nil {
@@ -405,7 +405,7 @@ func (t *Tracee) Init() error {
405405
406406 // Initialize containers enrichment logic
407407
408- capabilities .Caps .Requested (func () error { // TODO: workaround until PR: #2233 is in place
408+ capabilities .GetInstance () .Requested (func () error { // TODO: workaround until PR: #2233 is in place
409409
410410 t .containers , err = containers .New (t .config .Sockets , "containers_map" , t .config .Debug )
411411 if err != nil {
@@ -1134,32 +1134,32 @@ func (t *Tracee) initBPF() error {
11341134 isCaptureNetSet := t .config .Capture .NetIfaces != nil
11351135 isFilterNetSet := len (t .config .Filter .NetFilter .Interfaces ()) != 0
11361136
1137- newModuleArgs := bpf.NewModuleArgs {
1138- KConfigFilePath : t .config .KernelConfig .GetKernelConfigFilePath (),
1139- BTFObjPath : t .config .BTFObjPath ,
1140- BPFObjBuff : t .config .BPFObjBytes ,
1141- BPFObjName : t .config .BPFObjPath ,
1142- }
1137+ // Execute code with higher privileges: ring1 (required)
11431138
1144- // Open the eBPF object file (create a new module)
1139+ err = capabilities . GetInstance (). Required ( func () error {
11451140
1146- t .bpfModule , err = bpf .NewModuleFromBufferArgs (newModuleArgs )
1147- if err != nil {
1148- return err
1149- }
1141+ newModuleArgs := bpf.NewModuleArgs {
1142+ KConfigFilePath : t .config .KernelConfig .GetKernelConfigFilePath (),
1143+ BTFObjPath : t .config .BTFObjPath ,
1144+ BPFObjBuff : t .config .BPFObjBytes ,
1145+ BPFObjName : t .config .BPFObjPath ,
1146+ }
11501147
1151- // Initialize probes
1148+ // Open the eBPF object file (create a new module)
11521149
1153- netEnabled := isCaptureNetSet || isFilterNetSet
1150+ t .bpfModule , err = bpf .NewModuleFromBufferArgs (newModuleArgs )
1151+ if err != nil {
1152+ return err
1153+ }
11541154
1155- t .probes , err = probes .Init (t .bpfModule , netEnabled )
1156- if err != nil {
1157- return err
1158- }
1155+ // Initialize probes
11591156
1160- // Execute code with higher privileges: ring1 (required)
1157+ netEnabled := isCaptureNetSet || isFilterNetSet
11611158
1162- err = capabilities .Caps .Required (func () error {
1159+ t .probes , err = probes .Init (t .bpfModule , netEnabled )
1160+ if err != nil {
1161+ return err
1162+ }
11631163
11641164 // Load the eBPF object into kernel
11651165
@@ -1326,7 +1326,7 @@ func (t *Tracee) Run(ctx gocontext.Context) error {
13261326
13271327// Close cleans up created resources
13281328func (t * Tracee ) Close () {
1329- err := capabilities .Caps .Required (func () error { // ring1
1329+ err := capabilities .GetInstance () .Required (func () error { // ring1
13301330
13311331 if t .probes != nil {
13321332 err := t .probes .DetachAll ()
@@ -1399,7 +1399,7 @@ func (t *Tracee) updateFileSHA() {
13991399
14001400func (t * Tracee ) invokeInitEvents () {
14011401 if t .events [events .InitNamespaces ].emit {
1402- capabilities .Caps .Requested (func () error { // ring2
1402+ capabilities .GetInstance () .Requested (func () error { // ring2
14031403 systemInfoEvent := events .InitNamespacesEvent ()
14041404 t .config .ChanEvents <- systemInfoEvent
14051405 return nil
@@ -1483,7 +1483,7 @@ func (t *Tracee) triggerSeqOpsIntegrityCheckCall(
14831483}
14841484
14851485func (t * Tracee ) updateKallsyms () error {
1486- return capabilities .Caps .Requested (func () error { // ring2
1486+ return capabilities .GetInstance () .Requested (func () error { // ring2
14871487
14881488 kernelSymbols , err := helpers .NewKernelSymbolsMap ()
14891489 if err != nil {
0 commit comments