-
Notifications
You must be signed in to change notification settings - Fork 8
/
map.go
44 lines (37 loc) · 917 Bytes
/
map.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package helpers
import (
"fmt"
"github.com/cilium/ebpf"
"github.com/flomesh-io/fsm/pkg/cni/config"
)
var (
podFibMap *ebpf.Map
natFibMap *ebpf.Map
)
// InitLoadPinnedMap init, load and pinned mapsß
func InitLoadPinnedMap() error {
var err error
podFibMap, err = ebpf.LoadPinnedMap(config.FsmPodFibEbpfMap, &ebpf.LoadPinOptions{})
if err != nil {
return fmt.Errorf("load map[%s] error: %v", config.FsmPodFibEbpfMap, err)
}
natFibMap, err = ebpf.LoadPinnedMap(config.FsmNatFibEbpfMap, &ebpf.LoadPinOptions{})
if err != nil {
return fmt.Errorf("load map[%s] error: %v", err, config.FsmNatFibEbpfMap)
}
return nil
}
// GetPodFibMap returns pod fib map
func GetPodFibMap() *ebpf.Map {
if podFibMap == nil {
_ = InitLoadPinnedMap()
}
return podFibMap
}
// GetNatFibMap returns nat fib map
func GetNatFibMap() *ebpf.Map {
if natFibMap == nil {
_ = InitLoadPinnedMap()
}
return natFibMap
}