mirror of
https://github.com/daeuniverse/dae.git
synced 2025-01-22 02:07:50 +07:00
257 lines
7.3 KiB
Go
257 lines
7.3 KiB
Go
// 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
|