@@ -57,8 +57,7 @@ type BpfLoader struct {
5757
5858 obj * ads.BpfAds
5959 workloadObj * workload.BpfWorkload
60- factory.KmeshBpfConfig
61- versionMap * ebpf.Map
60+ versionMap * ebpf.Map
6261}
6362
6463func NewBpfLoader (config * options.BpfConfig ) * BpfLoader {
@@ -89,15 +88,13 @@ func (l *BpfLoader) Start() error {
8988 if err = l .obj .Start (); err != nil {
9089 return err
9190 }
92- l .KmeshBpfConfig = l .obj .GetBpfConfigVariable ()
9391 } else if l .config .DualEngineEnabled () {
9492 if l .workloadObj , err = workload .NewBpfWorkload (l .config ); err != nil {
9593 return err
9694 }
9795 if err = l .workloadObj .Start (); err != nil {
9896 return err
9997 }
100- l .KmeshBpfConfig = l .workloadObj .GetBpfConfigVariable ()
10198 // TODO: set bpf prog option in kernel native node
10299 l .setBpfProgOptions ()
103100 }
@@ -294,22 +291,18 @@ func (l *BpfLoader) setBpfProgOptions() {
294291
295292 // Kmesh reboot updates only the nodeIP and pod sub gateway
296293 if restart .GetStartType () == restart .Normal {
297- if err := l .NodeIP . Set (nodeIP ); err != nil {
294+ if err := l .UpdateNodeIP (nodeIP ); err != nil {
298295 log .Error ("set NodeIP failed " , err )
299296 return
300297 }
301- if err := l .PodGateway . Set (gateway ); err != nil {
298+ if err := l .UpdatePodGateway (gateway ); err != nil {
302299 log .Error ("set PodGateway failed " , err )
303300 return
304301 }
305- if err := l .AuthzOffload . Set (constants .ENABLED ); err != nil {
302+ if err := l .UpdateAuthzOffload (constants .ENABLED ); err != nil {
306303 log .Error ("set AuthzOffload failed " , err )
307304 return
308305 }
309- if err := l .EnableMonitoring .Set (constants .ENABLED ); err != nil {
310- log .Error ("set EnableMonitoring failed " , err )
311- return
312- }
313306 }
314307}
315308
@@ -382,25 +375,28 @@ func (l *BpfLoader) GetKmeshConfigMap() factory.GlobalBpfConfig {
382375 }
383376}
384377
385- func (l * BpfLoader ) UpdateBpfLogLevel (BpfLogLevel uint32 ) error {
378+ func (l * BpfLoader ) UpdateBpfLogLevel (bpfLogLevel uint32 ) error {
386379 if l .workloadObj != nil {
387- if err := l .workloadObj .SockConn .BpfLogLevel .Set (BpfLogLevel ); err != nil {
380+ if err := l .workloadObj .SockConn .BpfLogLevel .Set (bpfLogLevel ); err != nil {
388381 return fmt .Errorf ("set sockcon BpfLogLevel failed %w" , err )
389382 }
390- if err := l .workloadObj .SockOps .BpfLogLevel .Set (BpfLogLevel ); err != nil {
383+ if err := l .workloadObj .SockOps .BpfLogLevel .Set (bpfLogLevel ); err != nil {
391384 return fmt .Errorf ("set sockops BpfLogLevel failed %w" , err )
392385 }
393- if err := l .workloadObj .XdpAuth .BpfLogLevel .Set (BpfLogLevel ); err != nil {
386+ if err := l .workloadObj .XdpAuth .BpfLogLevel .Set (bpfLogLevel ); err != nil {
394387 return fmt .Errorf ("set xdp BpfLogLevel failed %w" , err )
395388 }
396- if err := l .workloadObj .SendMsg .BpfLogLevel .Set (BpfLogLevel ); err != nil {
389+ if err := l .workloadObj .SendMsg .BpfLogLevel .Set (bpfLogLevel ); err != nil {
397390 return fmt .Errorf ("set sendmsg BpfLogLevel failed %w" , err )
398391 }
392+ if err := l .workloadObj .CgroupSkb .BpfLogLevel .Set (bpfLogLevel ); err != nil {
393+ return fmt .Errorf ("set cgroup_skb BpfLogLevel failed %w" , err )
394+ }
399395 } else if l .obj != nil {
400- if err := l .obj .SockConn .BpfLogLevel .Set (BpfLogLevel ); err != nil {
396+ if err := l .obj .SockConn .BpfLogLevel .Set (bpfLogLevel ); err != nil {
401397 return fmt .Errorf ("set sockcon BpfLogLevel failed %w" , err )
402398 }
403- if err := l .obj .SockOps .BpfLogLevel .Set (BpfLogLevel ); err != nil {
399+ if err := l .obj .SockOps .BpfLogLevel .Set (bpfLogLevel ); err != nil {
404400 return fmt .Errorf ("set sockops BpfLogLevel failed %w" , err )
405401 }
406402 }
@@ -409,65 +405,67 @@ func (l *BpfLoader) UpdateBpfLogLevel(BpfLogLevel uint32) error {
409405}
410406
411407func (l * BpfLoader ) GetBpfLogLevel () uint32 {
412- if l .BpfLogLevel != nil {
413- var BpfLogLevel uint32
414- if err := l .BpfLogLevel .Get (& BpfLogLevel ); err != nil {
408+ var bpfLogLevel uint32
409+ if l .workloadObj != nil {
410+ if err := l .workloadObj .SockConn .BpfLogLevel .Get (& bpfLogLevel ); err != nil {
411+ log .Errorf ("get BpfLogLevel failed %v" , err )
412+ }
413+ } else if l .obj != nil {
414+ if err := l .obj .SockConn .BpfLogLevel .Get (& bpfLogLevel ); err != nil {
415415 log .Errorf ("get BpfLogLevel failed %v" , err )
416- return 0
417416 }
418- return BpfLogLevel
419417 }
420418
421- return 0
419+ return bpfLogLevel
422420}
423421
424- func (l * BpfLoader ) UpdateNodeIP (NodeIP [16 ]byte ) error {
425- if l .NodeIP != nil {
426- if err := l .NodeIP . Set (NodeIP ); err != nil {
422+ func (l * BpfLoader ) UpdateNodeIP (nodeIP [16 ]byte ) error {
423+ if l .workloadObj != nil {
424+ if err := l .workloadObj . SockOps . NodeIp . Set (nodeIP ); err != nil {
427425 return fmt .Errorf ("set NodeIP failed %w" , err )
428426 }
427+ } else if l .obj != nil {
428+ return fmt .Errorf ("unsupported nodeIP for kernel-native mode" )
429429 }
430430
431431 return nil
432432}
433433
434434func (l * BpfLoader ) GetNodeIP () [16 ]byte {
435- if l . NodeIP != nil {
436- var NodeIP [ 16 ] byte
437- if err := l .NodeIP . Get (& NodeIP ); err != nil {
435+ var nodeIP [ 16 ] byte
436+ if l . workloadObj != nil {
437+ if err := l .workloadObj . SockOps . NodeIp . Get (& nodeIP ); err != nil {
438438 log .Errorf ("get NodeIP failed %v" , err )
439- return [16 ]byte {}
440439 }
441- return NodeIP
442440 }
443- return [ 16 ] byte {}
441+ return nodeIP
444442}
445443
446- func (l * BpfLoader ) UpdatePodGateway (PodGateway [16 ]byte ) error {
447- if l .PodGateway != nil {
448- if err := l .PodGateway .Set (PodGateway ); err != nil {
444+ func (l * BpfLoader ) UpdatePodGateway (podGateway [16 ]byte ) error {
445+ if l .workloadObj != nil {
446+ if err := l .workloadObj . SockOps . PodGateway .Set (podGateway ); err != nil {
449447 return fmt .Errorf ("set PodGateway failed %w" , err )
450448 }
449+ } else if l .obj != nil {
450+ return fmt .Errorf ("unsupported PodGateway for kernel-native mode" )
451451 }
452452
453453 return nil
454454}
455455
456456func (l * BpfLoader ) GetPodGateway () [16 ]byte {
457- if l . PodGateway != nil {
458- var PodGateway [ 16 ] byte
459- if err := l .PodGateway .Get (& PodGateway ); err != nil {
457+ var podGateway [ 16 ] byte
458+ if l . workloadObj != nil {
459+ if err := l .workloadObj . SockOps . PodGateway .Get (& podGateway ); err != nil {
460460 log .Errorf ("get PodGateway failed %v" , err )
461- return [16 ]byte {}
462461 }
463- return PodGateway
464462 }
465- return [ 16 ] byte {}
463+ return podGateway
466464}
467465
468- func (l * BpfLoader ) UpdateAuthzOffload (AuthzOffload uint32 ) error {
469- if l .AuthzOffload != nil {
470- if err := l .AuthzOffload .Set (AuthzOffload ); err != nil {
466+ func (l * BpfLoader ) UpdateAuthzOffload (authzOffload uint32 ) error {
467+ if l .workloadObj != nil {
468+ if err := l .workloadObj . XdpAuth . AuthzOffload .Set (authzOffload ); err != nil {
471469 return fmt .Errorf ("set AuthzOffload failed %w" , err )
472470 }
473471 }
@@ -476,23 +474,21 @@ func (l *BpfLoader) UpdateAuthzOffload(AuthzOffload uint32) error {
476474}
477475
478476func (l * BpfLoader ) GetAuthzOffload () uint32 {
479- if l . AuthzOffload != nil {
480- var AuthzOffload uint32
481- if err := l .AuthzOffload .Get (& AuthzOffload ); err != nil {
477+ var authzOffload uint32
478+ if l . workloadObj != nil {
479+ if err := l .workloadObj . XdpAuth . AuthzOffload .Get (& authzOffload ); err != nil {
482480 log .Errorf ("get AuthzOffload failed %v" , err )
483- return 0
484481 }
485- return AuthzOffload
486482 }
487- return 0
483+ return authzOffload
488484}
489485
490- func (l * BpfLoader ) UpdateEnableMonitoring (EnableMonitoring uint32 ) error {
486+ func (l * BpfLoader ) UpdateEnableMonitoring (enableMonitoring uint32 ) error {
491487 if l .workloadObj != nil {
492- if err := l .workloadObj .CgroupSkb .EnableMonitoring .Set (EnableMonitoring ); err != nil {
488+ if err := l .workloadObj .CgroupSkb .EnableMonitoring .Set (enableMonitoring ); err != nil {
493489 return fmt .Errorf ("set CgroupSkb EnableMonitoring failed %w" , err )
494490 }
495- if err := l .workloadObj .SockOps .EnableMonitoring .Set (EnableMonitoring ); err != nil {
491+ if err := l .workloadObj .SockOps .EnableMonitoring .Set (enableMonitoring ); err != nil {
496492 return fmt .Errorf ("set SockOps EnableMonitoring failed %w" , err )
497493 }
498494 }
@@ -501,15 +497,13 @@ func (l *BpfLoader) UpdateEnableMonitoring(EnableMonitoring uint32) error {
501497}
502498
503499func (l * BpfLoader ) GetEnableMonitoring () uint32 {
504- if l . EnableMonitoring != nil {
505- var EnableMonitoring uint32
506- if err := l .EnableMonitoring .Get (& EnableMonitoring ); err != nil {
500+ var enableMonitoring uint32
501+ if l . workloadObj != nil {
502+ if err := l .workloadObj . CgroupSkb . EnableMonitoring .Get (& enableMonitoring ); err != nil {
507503 log .Errorf ("get EnableMonitoring failed %v" , err )
508- return 0
509504 }
510- return EnableMonitoring
511505 }
512- return 0
506+ return enableMonitoring
513507}
514508
515509func (l * BpfLoader ) UpdateEnablePeriodicReport (EnablePeriodicReport uint32 ) error {
0 commit comments