mirror of
https://github.com/daeuniverse/dae.git
synced 2024-12-22 16:04:40 +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
|
||||
.idea
|
||||
*.o
|
||||
*.tmp
|
||||
bpf_bpfeb*.go
|
||||
bpf_bpfel*.go
|
||||
dae
|
||||
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