@@ -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
@@ -396,6 +389,9 @@ func (l *BpfLoader) UpdateBpfLogLevel(BpfLogLevel uint32) error {
396389 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 sendmsg BpfLogLevel failed %w" , err )
394+ }
399395 } else if l .obj != nil {
400396 if err := l .obj .SockConn .BpfLogLevel .Set (BpfLogLevel ); err != nil {
401397 return fmt .Errorf ("set sockcon BpfLogLevel failed %w" , err )
@@ -409,65 +405,73 @@ 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+ return 0
413+ }
414+ } else if l .obj != nil {
415+ if err := l .obj .SockConn .BpfLogLevel .Get (& BpfLogLevel ); err != nil {
415416 log .Errorf ("get BpfLogLevel failed %v" , err )
416417 return 0
417418 }
418- return BpfLogLevel
419419 }
420420
421421 return 0
422422}
423423
424424func (l * BpfLoader ) UpdateNodeIP (NodeIP [16 ]byte ) error {
425- if l .NodeIP != nil {
426- if err := l .NodeIP .Set (NodeIP ); err != nil {
425+ if l .workloadObj != nil {
426+ if err := l .workloadObj . SockOps . NodeIp .Set (NodeIP ); err != nil {
427427 return fmt .Errorf ("set NodeIP failed %w" , err )
428428 }
429+ } else if l .obj != nil {
430+ return fmt .Errorf ("unsupported nodeIP for kernel-native mode" )
429431 }
430432
431433 return nil
432434}
433435
434436func (l * BpfLoader ) GetNodeIP () [16 ]byte {
435- if l .NodeIP != nil {
436- var NodeIP [16 ]byte
437- if err := l .NodeIP . Get (& NodeIP ); err != nil {
437+ if l .workloadObj != nil {
438+ var nodeIP [16 ]byte
439+ if err := l .workloadObj . SockOps . NodeIp . Get (& nodeIP ); err != nil {
438440 log .Errorf ("get NodeIP failed %v" , err )
439441 return [16 ]byte {}
440442 }
441- return NodeIP
443+ return nodeIP
442444 }
443445 return [16 ]byte {}
444446}
445447
446- func (l * BpfLoader ) UpdatePodGateway (PodGateway [16 ]byte ) error {
447- if l .PodGateway != nil {
448- if err := l .PodGateway .Set (PodGateway ); err != nil {
448+ func (l * BpfLoader ) UpdatePodGateway (podGateway [16 ]byte ) error {
449+ if l .workloadObj != nil {
450+ if err := l .workloadObj . SockOps . PodGateway .Set (podGateway ); err != nil {
449451 return fmt .Errorf ("set PodGateway failed %w" , err )
450452 }
453+ } else if l .obj != nil {
454+ return fmt .Errorf ("unsupported PodGateway for kernel-native mode" )
451455 }
452456
453457 return nil
454458}
455459
456460func (l * BpfLoader ) GetPodGateway () [16 ]byte {
457- if l .PodGateway != nil {
458- var PodGateway [16 ]byte
459- if err := l .PodGateway .Get (& PodGateway ); err != nil {
461+ if l .workloadObj != nil {
462+ var podGateway [16 ]byte
463+ if err := l .workloadObj . SockOps . PodGateway .Get (& podGateway ); err != nil {
460464 log .Errorf ("get PodGateway failed %v" , err )
461465 return [16 ]byte {}
462466 }
463- return PodGateway
467+ return podGateway
464468 }
465469 return [16 ]byte {}
466470}
467471
468- func (l * BpfLoader ) UpdateAuthzOffload (AuthzOffload uint32 ) error {
469- if l .AuthzOffload != nil {
470- if err := l .AuthzOffload .Set (AuthzOffload ); err != nil {
472+ func (l * BpfLoader ) UpdateAuthzOffload (authzOffload uint32 ) error {
473+ if l .workloadObj != nil {
474+ if err := l .workloadObj . XdpAuth . AuthzOffload .Set (authzOffload ); err != nil {
471475 return fmt .Errorf ("set AuthzOffload failed %w" , err )
472476 }
473477 }
@@ -476,23 +480,23 @@ func (l *BpfLoader) UpdateAuthzOffload(AuthzOffload uint32) error {
476480}
477481
478482func (l * BpfLoader ) GetAuthzOffload () uint32 {
479- if l .AuthzOffload != nil {
480- var AuthzOffload uint32
481- if err := l .AuthzOffload .Get (& AuthzOffload ); err != nil {
483+ if l .workloadObj != nil {
484+ var authzOffload uint32
485+ if err := l .workloadObj . XdpAuth . AuthzOffload .Get (& authzOffload ); err != nil {
482486 log .Errorf ("get AuthzOffload failed %v" , err )
483487 return 0
484488 }
485- return AuthzOffload
489+ return authzOffload
486490 }
487491 return 0
488492}
489493
490- func (l * BpfLoader ) UpdateEnableMonitoring (EnableMonitoring uint32 ) error {
494+ func (l * BpfLoader ) UpdateEnableMonitoring (enableMonitoring uint32 ) error {
491495 if l .workloadObj != nil {
492- if err := l .workloadObj .CgroupSkb .EnableMonitoring .Set (EnableMonitoring ); err != nil {
496+ if err := l .workloadObj .CgroupSkb .EnableMonitoring .Set (enableMonitoring ); err != nil {
493497 return fmt .Errorf ("set CgroupSkb EnableMonitoring failed %w" , err )
494498 }
495- if err := l .workloadObj .SockOps .EnableMonitoring .Set (EnableMonitoring ); err != nil {
499+ if err := l .workloadObj .SockOps .EnableMonitoring .Set (enableMonitoring ); err != nil {
496500 return fmt .Errorf ("set SockOps EnableMonitoring failed %w" , err )
497501 }
498502 }
@@ -501,13 +505,13 @@ func (l *BpfLoader) UpdateEnableMonitoring(EnableMonitoring uint32) error {
501505}
502506
503507func (l * BpfLoader ) GetEnableMonitoring () uint32 {
504- if l .EnableMonitoring != nil {
505- var EnableMonitoring uint32
506- if err := l .EnableMonitoring .Get (& EnableMonitoring ); err != nil {
508+ if l .workloadObj != nil {
509+ var enableMonitoring uint32
510+ if err := l .workloadObj . CgroupSkb . EnableMonitoring .Get (& enableMonitoring ); err != nil {
507511 log .Errorf ("get EnableMonitoring failed %v" , err )
508512 return 0
509513 }
510- return EnableMonitoring
514+ return enableMonitoring
511515 }
512516 return 0
513517}
0 commit comments