Skip to content

Commit a669a5f

Browse files
committed
remove BpfLoader.KmeshConfig to prevent writing using it, should always use the method provided
Signed-off-by: Zhonghu Xu <xuzhonghu@huawei.com>
1 parent 1844e9e commit a669a5f

File tree

1 file changed

+46
-42
lines changed

1 file changed

+46
-42
lines changed

pkg/bpf/bpf.go

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

6463
func 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

411407
func (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

424424
func (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

434436
func (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

456460
func (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

478482
func (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

503507
func (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

Comments
 (0)