mirror of
https://github.com/daeuniverse/dae.git
synced 2025-01-12 15:57:08 +07:00
Revert "chore: include compiled file for lib use"
This reverts commit a25d948515
.
This commit is contained in:
parent
a25d948515
commit
dced73cfdb
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,5 +1,8 @@
|
|||||||
.vscode
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
*.o
|
||||||
*.tmp
|
*.tmp
|
||||||
|
bpf_bpfeb*.go
|
||||||
|
bpf_bpfel*.go
|
||||||
dae
|
dae
|
||||||
outline.json
|
outline.json
|
1
control/.gitignore
vendored
Normal file
1
control/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
bpf_objects_wan_lan.go
|
@ -1,256 +0,0 @@
|
|||||||
// Code generated by bpf2go; DO NOT EDIT.
|
|
||||||
//go:build arm64be || armbe || mips || mips64 || mips64p32 || ppc64 || s390 || s390x || sparc || sparc64
|
|
||||||
// +build arm64be armbe mips mips64 mips64p32 ppc64 s390 s390x sparc sparc64
|
|
||||||
|
|
||||||
package control
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
_ "embed"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/cilium/ebpf"
|
|
||||||
)
|
|
||||||
|
|
||||||
type bpfDomainRouting struct{ Bitmap [3]uint32 }
|
|
||||||
|
|
||||||
type bpfDstRoutingResult struct {
|
|
||||||
Ip [4]uint32
|
|
||||||
Port uint16
|
|
||||||
_ [2]byte
|
|
||||||
RoutingResult bpfRoutingResult
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfIfParams struct {
|
|
||||||
RxCksmOffload bool
|
|
||||||
TxL4CksmIp4Offload bool
|
|
||||||
TxL4CksmIp6Offload bool
|
|
||||||
UseNonstandardOffloadAlgorithm bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfIpPort struct {
|
|
||||||
Ip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Port uint16
|
|
||||||
_ [6]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfLpmKey struct {
|
|
||||||
TrieKey struct {
|
|
||||||
Prefixlen uint32
|
|
||||||
Data [0]uint8
|
|
||||||
}
|
|
||||||
Data [4]uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfMatchSet struct {
|
|
||||||
Value [16]uint8
|
|
||||||
Not bool
|
|
||||||
Type uint8
|
|
||||||
Outbound uint8
|
|
||||||
Unused uint8
|
|
||||||
Mark uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfOutboundConnectivityQuery struct {
|
|
||||||
Outbound uint8
|
|
||||||
L4proto uint8
|
|
||||||
Ipversion uint8
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfPidPname struct {
|
|
||||||
Pid uint32
|
|
||||||
Pname [16]int8
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfRoutingResult struct {
|
|
||||||
Mark uint32
|
|
||||||
Mac [6]uint8
|
|
||||||
Outbound uint8
|
|
||||||
Pname [16]uint8
|
|
||||||
_ [1]byte
|
|
||||||
Pid uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfTuples struct {
|
|
||||||
Sip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Dip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Sport uint16
|
|
||||||
Dport uint16
|
|
||||||
L4proto uint8
|
|
||||||
_ [3]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadBpf returns the embedded CollectionSpec for bpf.
|
|
||||||
func loadBpf() (*ebpf.CollectionSpec, error) {
|
|
||||||
reader := bytes.NewReader(_BpfBytes)
|
|
||||||
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("can't load bpf: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadBpfObjects loads bpf and converts it into a struct.
|
|
||||||
//
|
|
||||||
// The following types are suitable as obj argument:
|
|
||||||
//
|
|
||||||
// *bpfObjects
|
|
||||||
// *bpfPrograms
|
|
||||||
// *bpfMaps
|
|
||||||
//
|
|
||||||
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
|
|
||||||
func loadBpfObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
|
|
||||||
spec, err := loadBpf()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec.LoadAndAssign(obj, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfSpecs contains maps and programs before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfSpecs struct {
|
|
||||||
bpfProgramSpecs
|
|
||||||
bpfMapSpecs
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfSpecs contains programs before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfProgramSpecs struct {
|
|
||||||
TproxyLanEgress *ebpf.ProgramSpec `ebpf:"tproxy_lan_egress"`
|
|
||||||
TproxyLanIngress *ebpf.ProgramSpec `ebpf:"tproxy_lan_ingress"`
|
|
||||||
TproxyWanCgConnect4 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_connect4"`
|
|
||||||
TproxyWanCgConnect6 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_connect6"`
|
|
||||||
TproxyWanCgSendmsg4 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sendmsg4"`
|
|
||||||
TproxyWanCgSendmsg6 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sendmsg6"`
|
|
||||||
TproxyWanCgSockCreate *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sock_create"`
|
|
||||||
TproxyWanCgSockRelease *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sock_release"`
|
|
||||||
TproxyWanEgress *ebpf.ProgramSpec `ebpf:"tproxy_wan_egress"`
|
|
||||||
TproxyWanIngress *ebpf.ProgramSpec `ebpf:"tproxy_wan_ingress"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfMapSpecs contains maps before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfMapSpecs struct {
|
|
||||||
CookiePidMap *ebpf.MapSpec `ebpf:"cookie_pid_map"`
|
|
||||||
DomainRoutingMap *ebpf.MapSpec `ebpf:"domain_routing_map"`
|
|
||||||
H_portMap *ebpf.MapSpec `ebpf:"h_port_map"`
|
|
||||||
IfindexParamsMap *ebpf.MapSpec `ebpf:"ifindex_params_map"`
|
|
||||||
L4protoIpversionMap *ebpf.MapSpec `ebpf:"l4proto_ipversion_map"`
|
|
||||||
ListenSocketMap *ebpf.MapSpec `ebpf:"listen_socket_map"`
|
|
||||||
LpmArrayMap *ebpf.MapSpec `ebpf:"lpm_array_map"`
|
|
||||||
LpmKeyMap *ebpf.MapSpec `ebpf:"lpm_key_map"`
|
|
||||||
OutboundConnectivityMap *ebpf.MapSpec `ebpf:"outbound_connectivity_map"`
|
|
||||||
ParamMap *ebpf.MapSpec `ebpf:"param_map"`
|
|
||||||
RoutingMap *ebpf.MapSpec `ebpf:"routing_map"`
|
|
||||||
RoutingTuplesMap *ebpf.MapSpec `ebpf:"routing_tuples_map"`
|
|
||||||
TcpDstMap *ebpf.MapSpec `ebpf:"tcp_dst_map"`
|
|
||||||
TgidPnameMap *ebpf.MapSpec `ebpf:"tgid_pname_map"`
|
|
||||||
UnusedLpmType *ebpf.MapSpec `ebpf:"unused_lpm_type"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfObjects contains all objects after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfObjects struct {
|
|
||||||
bpfPrograms
|
|
||||||
bpfMaps
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *bpfObjects) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
&o.bpfPrograms,
|
|
||||||
&o.bpfMaps,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfMaps contains all maps after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfMaps struct {
|
|
||||||
CookiePidMap *ebpf.Map `ebpf:"cookie_pid_map"`
|
|
||||||
DomainRoutingMap *ebpf.Map `ebpf:"domain_routing_map"`
|
|
||||||
H_portMap *ebpf.Map `ebpf:"h_port_map"`
|
|
||||||
IfindexParamsMap *ebpf.Map `ebpf:"ifindex_params_map"`
|
|
||||||
L4protoIpversionMap *ebpf.Map `ebpf:"l4proto_ipversion_map"`
|
|
||||||
ListenSocketMap *ebpf.Map `ebpf:"listen_socket_map"`
|
|
||||||
LpmArrayMap *ebpf.Map `ebpf:"lpm_array_map"`
|
|
||||||
LpmKeyMap *ebpf.Map `ebpf:"lpm_key_map"`
|
|
||||||
OutboundConnectivityMap *ebpf.Map `ebpf:"outbound_connectivity_map"`
|
|
||||||
ParamMap *ebpf.Map `ebpf:"param_map"`
|
|
||||||
RoutingMap *ebpf.Map `ebpf:"routing_map"`
|
|
||||||
RoutingTuplesMap *ebpf.Map `ebpf:"routing_tuples_map"`
|
|
||||||
TcpDstMap *ebpf.Map `ebpf:"tcp_dst_map"`
|
|
||||||
TgidPnameMap *ebpf.Map `ebpf:"tgid_pname_map"`
|
|
||||||
UnusedLpmType *ebpf.Map `ebpf:"unused_lpm_type"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *bpfMaps) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
m.CookiePidMap,
|
|
||||||
m.DomainRoutingMap,
|
|
||||||
m.H_portMap,
|
|
||||||
m.IfindexParamsMap,
|
|
||||||
m.L4protoIpversionMap,
|
|
||||||
m.ListenSocketMap,
|
|
||||||
m.LpmArrayMap,
|
|
||||||
m.LpmKeyMap,
|
|
||||||
m.OutboundConnectivityMap,
|
|
||||||
m.ParamMap,
|
|
||||||
m.RoutingMap,
|
|
||||||
m.RoutingTuplesMap,
|
|
||||||
m.TcpDstMap,
|
|
||||||
m.TgidPnameMap,
|
|
||||||
m.UnusedLpmType,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfPrograms contains all programs after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfPrograms struct {
|
|
||||||
TproxyLanEgress *ebpf.Program `ebpf:"tproxy_lan_egress"`
|
|
||||||
TproxyLanIngress *ebpf.Program `ebpf:"tproxy_lan_ingress"`
|
|
||||||
TproxyWanCgConnect4 *ebpf.Program `ebpf:"tproxy_wan_cg_connect4"`
|
|
||||||
TproxyWanCgConnect6 *ebpf.Program `ebpf:"tproxy_wan_cg_connect6"`
|
|
||||||
TproxyWanCgSendmsg4 *ebpf.Program `ebpf:"tproxy_wan_cg_sendmsg4"`
|
|
||||||
TproxyWanCgSendmsg6 *ebpf.Program `ebpf:"tproxy_wan_cg_sendmsg6"`
|
|
||||||
TproxyWanCgSockCreate *ebpf.Program `ebpf:"tproxy_wan_cg_sock_create"`
|
|
||||||
TproxyWanCgSockRelease *ebpf.Program `ebpf:"tproxy_wan_cg_sock_release"`
|
|
||||||
TproxyWanEgress *ebpf.Program `ebpf:"tproxy_wan_egress"`
|
|
||||||
TproxyWanIngress *ebpf.Program `ebpf:"tproxy_wan_ingress"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *bpfPrograms) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
p.TproxyLanEgress,
|
|
||||||
p.TproxyLanIngress,
|
|
||||||
p.TproxyWanCgConnect4,
|
|
||||||
p.TproxyWanCgConnect6,
|
|
||||||
p.TproxyWanCgSendmsg4,
|
|
||||||
p.TproxyWanCgSendmsg6,
|
|
||||||
p.TproxyWanCgSockCreate,
|
|
||||||
p.TproxyWanCgSockRelease,
|
|
||||||
p.TproxyWanEgress,
|
|
||||||
p.TproxyWanIngress,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _BpfClose(closers ...io.Closer) error {
|
|
||||||
for _, closer := range closers {
|
|
||||||
if err := closer.Close(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not access this directly.
|
|
||||||
//go:embed bpf_bpfeb.o
|
|
||||||
var _BpfBytes []byte
|
|
Binary file not shown.
@ -1,256 +0,0 @@
|
|||||||
// Code generated by bpf2go; DO NOT EDIT.
|
|
||||||
//go:build 386 || amd64 || amd64p32 || arm || arm64 || mips64le || mips64p32le || mipsle || ppc64le || riscv64
|
|
||||||
// +build 386 amd64 amd64p32 arm arm64 mips64le mips64p32le mipsle ppc64le riscv64
|
|
||||||
|
|
||||||
package control
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
_ "embed"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/cilium/ebpf"
|
|
||||||
)
|
|
||||||
|
|
||||||
type bpfDomainRouting struct{ Bitmap [3]uint32 }
|
|
||||||
|
|
||||||
type bpfDstRoutingResult struct {
|
|
||||||
Ip [4]uint32
|
|
||||||
Port uint16
|
|
||||||
_ [2]byte
|
|
||||||
RoutingResult bpfRoutingResult
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfIfParams struct {
|
|
||||||
RxCksmOffload bool
|
|
||||||
TxL4CksmIp4Offload bool
|
|
||||||
TxL4CksmIp6Offload bool
|
|
||||||
UseNonstandardOffloadAlgorithm bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfIpPort struct {
|
|
||||||
Ip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Port uint16
|
|
||||||
_ [6]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfLpmKey struct {
|
|
||||||
TrieKey struct {
|
|
||||||
Prefixlen uint32
|
|
||||||
Data [0]uint8
|
|
||||||
}
|
|
||||||
Data [4]uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfMatchSet struct {
|
|
||||||
Value [16]uint8
|
|
||||||
Not bool
|
|
||||||
Type uint8
|
|
||||||
Outbound uint8
|
|
||||||
Unused uint8
|
|
||||||
Mark uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfOutboundConnectivityQuery struct {
|
|
||||||
Outbound uint8
|
|
||||||
L4proto uint8
|
|
||||||
Ipversion uint8
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfPidPname struct {
|
|
||||||
Pid uint32
|
|
||||||
Pname [16]int8
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfRoutingResult struct {
|
|
||||||
Mark uint32
|
|
||||||
Mac [6]uint8
|
|
||||||
Outbound uint8
|
|
||||||
Pname [16]uint8
|
|
||||||
_ [1]byte
|
|
||||||
Pid uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
type bpfTuples struct {
|
|
||||||
Sip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Dip struct{ U6Addr8 [16]uint8 }
|
|
||||||
Sport uint16
|
|
||||||
Dport uint16
|
|
||||||
L4proto uint8
|
|
||||||
_ [3]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadBpf returns the embedded CollectionSpec for bpf.
|
|
||||||
func loadBpf() (*ebpf.CollectionSpec, error) {
|
|
||||||
reader := bytes.NewReader(_BpfBytes)
|
|
||||||
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("can't load bpf: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// loadBpfObjects loads bpf and converts it into a struct.
|
|
||||||
//
|
|
||||||
// The following types are suitable as obj argument:
|
|
||||||
//
|
|
||||||
// *bpfObjects
|
|
||||||
// *bpfPrograms
|
|
||||||
// *bpfMaps
|
|
||||||
//
|
|
||||||
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
|
|
||||||
func loadBpfObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
|
|
||||||
spec, err := loadBpf()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec.LoadAndAssign(obj, opts)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfSpecs contains maps and programs before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfSpecs struct {
|
|
||||||
bpfProgramSpecs
|
|
||||||
bpfMapSpecs
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfSpecs contains programs before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfProgramSpecs struct {
|
|
||||||
TproxyLanEgress *ebpf.ProgramSpec `ebpf:"tproxy_lan_egress"`
|
|
||||||
TproxyLanIngress *ebpf.ProgramSpec `ebpf:"tproxy_lan_ingress"`
|
|
||||||
TproxyWanCgConnect4 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_connect4"`
|
|
||||||
TproxyWanCgConnect6 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_connect6"`
|
|
||||||
TproxyWanCgSendmsg4 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sendmsg4"`
|
|
||||||
TproxyWanCgSendmsg6 *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sendmsg6"`
|
|
||||||
TproxyWanCgSockCreate *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sock_create"`
|
|
||||||
TproxyWanCgSockRelease *ebpf.ProgramSpec `ebpf:"tproxy_wan_cg_sock_release"`
|
|
||||||
TproxyWanEgress *ebpf.ProgramSpec `ebpf:"tproxy_wan_egress"`
|
|
||||||
TproxyWanIngress *ebpf.ProgramSpec `ebpf:"tproxy_wan_ingress"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfMapSpecs contains maps before they are loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed ebpf.CollectionSpec.Assign.
|
|
||||||
type bpfMapSpecs struct {
|
|
||||||
CookiePidMap *ebpf.MapSpec `ebpf:"cookie_pid_map"`
|
|
||||||
DomainRoutingMap *ebpf.MapSpec `ebpf:"domain_routing_map"`
|
|
||||||
H_portMap *ebpf.MapSpec `ebpf:"h_port_map"`
|
|
||||||
IfindexParamsMap *ebpf.MapSpec `ebpf:"ifindex_params_map"`
|
|
||||||
L4protoIpversionMap *ebpf.MapSpec `ebpf:"l4proto_ipversion_map"`
|
|
||||||
ListenSocketMap *ebpf.MapSpec `ebpf:"listen_socket_map"`
|
|
||||||
LpmArrayMap *ebpf.MapSpec `ebpf:"lpm_array_map"`
|
|
||||||
LpmKeyMap *ebpf.MapSpec `ebpf:"lpm_key_map"`
|
|
||||||
OutboundConnectivityMap *ebpf.MapSpec `ebpf:"outbound_connectivity_map"`
|
|
||||||
ParamMap *ebpf.MapSpec `ebpf:"param_map"`
|
|
||||||
RoutingMap *ebpf.MapSpec `ebpf:"routing_map"`
|
|
||||||
RoutingTuplesMap *ebpf.MapSpec `ebpf:"routing_tuples_map"`
|
|
||||||
TcpDstMap *ebpf.MapSpec `ebpf:"tcp_dst_map"`
|
|
||||||
TgidPnameMap *ebpf.MapSpec `ebpf:"tgid_pname_map"`
|
|
||||||
UnusedLpmType *ebpf.MapSpec `ebpf:"unused_lpm_type"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfObjects contains all objects after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfObjects struct {
|
|
||||||
bpfPrograms
|
|
||||||
bpfMaps
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *bpfObjects) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
&o.bpfPrograms,
|
|
||||||
&o.bpfMaps,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfMaps contains all maps after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfMaps struct {
|
|
||||||
CookiePidMap *ebpf.Map `ebpf:"cookie_pid_map"`
|
|
||||||
DomainRoutingMap *ebpf.Map `ebpf:"domain_routing_map"`
|
|
||||||
H_portMap *ebpf.Map `ebpf:"h_port_map"`
|
|
||||||
IfindexParamsMap *ebpf.Map `ebpf:"ifindex_params_map"`
|
|
||||||
L4protoIpversionMap *ebpf.Map `ebpf:"l4proto_ipversion_map"`
|
|
||||||
ListenSocketMap *ebpf.Map `ebpf:"listen_socket_map"`
|
|
||||||
LpmArrayMap *ebpf.Map `ebpf:"lpm_array_map"`
|
|
||||||
LpmKeyMap *ebpf.Map `ebpf:"lpm_key_map"`
|
|
||||||
OutboundConnectivityMap *ebpf.Map `ebpf:"outbound_connectivity_map"`
|
|
||||||
ParamMap *ebpf.Map `ebpf:"param_map"`
|
|
||||||
RoutingMap *ebpf.Map `ebpf:"routing_map"`
|
|
||||||
RoutingTuplesMap *ebpf.Map `ebpf:"routing_tuples_map"`
|
|
||||||
TcpDstMap *ebpf.Map `ebpf:"tcp_dst_map"`
|
|
||||||
TgidPnameMap *ebpf.Map `ebpf:"tgid_pname_map"`
|
|
||||||
UnusedLpmType *ebpf.Map `ebpf:"unused_lpm_type"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *bpfMaps) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
m.CookiePidMap,
|
|
||||||
m.DomainRoutingMap,
|
|
||||||
m.H_portMap,
|
|
||||||
m.IfindexParamsMap,
|
|
||||||
m.L4protoIpversionMap,
|
|
||||||
m.ListenSocketMap,
|
|
||||||
m.LpmArrayMap,
|
|
||||||
m.LpmKeyMap,
|
|
||||||
m.OutboundConnectivityMap,
|
|
||||||
m.ParamMap,
|
|
||||||
m.RoutingMap,
|
|
||||||
m.RoutingTuplesMap,
|
|
||||||
m.TcpDstMap,
|
|
||||||
m.TgidPnameMap,
|
|
||||||
m.UnusedLpmType,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// bpfPrograms contains all programs after they have been loaded into the kernel.
|
|
||||||
//
|
|
||||||
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
||||||
type bpfPrograms struct {
|
|
||||||
TproxyLanEgress *ebpf.Program `ebpf:"tproxy_lan_egress"`
|
|
||||||
TproxyLanIngress *ebpf.Program `ebpf:"tproxy_lan_ingress"`
|
|
||||||
TproxyWanCgConnect4 *ebpf.Program `ebpf:"tproxy_wan_cg_connect4"`
|
|
||||||
TproxyWanCgConnect6 *ebpf.Program `ebpf:"tproxy_wan_cg_connect6"`
|
|
||||||
TproxyWanCgSendmsg4 *ebpf.Program `ebpf:"tproxy_wan_cg_sendmsg4"`
|
|
||||||
TproxyWanCgSendmsg6 *ebpf.Program `ebpf:"tproxy_wan_cg_sendmsg6"`
|
|
||||||
TproxyWanCgSockCreate *ebpf.Program `ebpf:"tproxy_wan_cg_sock_create"`
|
|
||||||
TproxyWanCgSockRelease *ebpf.Program `ebpf:"tproxy_wan_cg_sock_release"`
|
|
||||||
TproxyWanEgress *ebpf.Program `ebpf:"tproxy_wan_egress"`
|
|
||||||
TproxyWanIngress *ebpf.Program `ebpf:"tproxy_wan_ingress"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *bpfPrograms) Close() error {
|
|
||||||
return _BpfClose(
|
|
||||||
p.TproxyLanEgress,
|
|
||||||
p.TproxyLanIngress,
|
|
||||||
p.TproxyWanCgConnect4,
|
|
||||||
p.TproxyWanCgConnect6,
|
|
||||||
p.TproxyWanCgSendmsg4,
|
|
||||||
p.TproxyWanCgSendmsg6,
|
|
||||||
p.TproxyWanCgSockCreate,
|
|
||||||
p.TproxyWanCgSockRelease,
|
|
||||||
p.TproxyWanEgress,
|
|
||||||
p.TproxyWanIngress,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func _BpfClose(closers ...io.Closer) error {
|
|
||||||
for _, closer := range closers {
|
|
||||||
if err := closer.Close(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not access this directly.
|
|
||||||
//go:embed bpf_bpfel.o
|
|
||||||
var _BpfBytes []byte
|
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user