-
Notifications
You must be signed in to change notification settings - Fork 303
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Dave Tucker <[email protected]>
- Loading branch information
1 parent
104f449
commit b9f2b6c
Showing
33 changed files
with
1,725 additions
and
198 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
//! Link types for BPFFS Permissions | ||
use crate::generated::bpf_attach_type; | ||
|
||
/// The type of BPF link | ||
#[derive(Copy, Clone, Debug)] | ||
pub enum BpfAttachType { | ||
/// Cgroup Inet Ingress | ||
CgroupInetIngress, | ||
/// Cgroup Inet Egress | ||
CgroupInetEgress, | ||
/// Cgroup Inet Sock Create | ||
CgroupInetSockCreate, | ||
/// Cgroup Sock Ops | ||
CgroupSockOps, | ||
/// Sk Skb Stream Parser | ||
SkSkbStreamParser, | ||
/// Sk Skb Stream Verdict | ||
SkSkbStreamVerdict, | ||
/// Cgroup Device | ||
CgroupDevice, | ||
/// Sk Msg Verdict | ||
SkMsgVerdict, | ||
/// Cgroup Inet4 Bind | ||
CgroupInet4Bind, | ||
/// Cgroup Inet6 Bind | ||
CgroupInet6Bind, | ||
/// Cgroup Inet4 Connect | ||
CgroupInet4Connect, | ||
/// Cgroup Inet6 Connect | ||
CgroupInet6Connect, | ||
/// Cgroup Inet4 Post Bind | ||
CgroupInet4PostBind, | ||
/// Cgroup Inet6 Post Bind | ||
CgroupInet6PostBind, | ||
/// Cgroup Udp4 Sendmsg | ||
CgroupUdp4Sendmsg, | ||
/// Cgroup Udp6 Sendmsg | ||
CgroupUdp6Sendmsg, | ||
/// Lirc Mode2 | ||
LircMode2, | ||
/// Flow Dissector | ||
FlowDissector, | ||
/// Cgroup Sysctl | ||
CgroupSysctl, | ||
/// Cgroup Udp4 Recvmsg | ||
CgroupUdp4Recvmsg, | ||
/// Cgroup Udp6 Recvmsg | ||
CgroupUdp6Recvmsg, | ||
/// Cgroup Getsockopt | ||
CgroupGetsockopt, | ||
/// Cgroup Setsockopt | ||
CgroupSetsockopt, | ||
/// Trace Raw Tp | ||
TraceRawTp, | ||
/// Trace Fentry | ||
TraceFentry, | ||
/// Trace Fexit | ||
TraceFexit, | ||
/// Modify Return | ||
ModifyReturn, | ||
/// Lsm Mac | ||
LsmMac, | ||
/// Trace Iter | ||
TraceIter, | ||
/// Cgroup Inet4 Getpeername | ||
CgroupInet4Getpeername, | ||
/// Cgroup Inet6 Getpeername | ||
CgroupInet6Getpeername, | ||
/// Cgroup Inet4 Getsockname | ||
CgroupInet4Getsockname, | ||
/// Cgroup Inet6 Getsockname | ||
CgroupInet6Getsockname, | ||
/// Xdp Devmap | ||
XdpDevmap, | ||
/// Cgroup Inet Sock Release | ||
CgroupInetSockRelease, | ||
/// Xdp Cpumap | ||
XdpCpumap, | ||
/// Sk Lookup | ||
SkLookup, | ||
/// Xdp | ||
Xdp, | ||
/// Sk Skb Verdict | ||
SkSkbVerdict, | ||
/// Sk Reuseport Select | ||
SkReuseportSelect, | ||
/// Sk Reuseport Select Or Migrate | ||
SkReuseportSelectOrMigrate, | ||
/// Perf Event | ||
PerfEvent, | ||
/// Trace Kprobe Multi | ||
TraceKprobeMulti, | ||
/// Lsm Cgroup | ||
LsmCgroup, | ||
/// Struct Ops | ||
StructOps, | ||
/// Netfilter | ||
Netfilter, | ||
/// Tcx Ingress | ||
TcxIngress, | ||
/// Tcx Egress | ||
TcxEgress, | ||
/// Trace Uprobe Multi | ||
TraceUprobeMulti, | ||
/// Cgroup Unix Connect | ||
CgroupUnixConnect, | ||
/// Cgroup Unix Sendmsg | ||
CgroupUnixSendmsg, | ||
/// Cgroup Unix Recvmsg | ||
CgroupUnixRecvmsg, | ||
/// Cgroup Unix Getpeername | ||
CgroupUnixGetpeername, | ||
/// Cgroup Unix Getsockname | ||
CgroupUnixGetsockname, | ||
/// Netkit Primary | ||
NetkitPrimary, | ||
/// Netkit Peer | ||
NetkitPeer, | ||
} | ||
|
||
impl From<BpfAttachType> for bpf_attach_type { | ||
fn from(attach_type: BpfAttachType) -> Self { | ||
match attach_type { | ||
BpfAttachType::CgroupInetIngress => bpf_attach_type::BPF_CGROUP_INET_INGRESS, | ||
BpfAttachType::CgroupInetEgress => bpf_attach_type::BPF_CGROUP_INET_EGRESS, | ||
BpfAttachType::CgroupInetSockCreate => bpf_attach_type::BPF_CGROUP_INET_SOCK_CREATE, | ||
BpfAttachType::CgroupSockOps => bpf_attach_type::BPF_CGROUP_SOCK_OPS, | ||
BpfAttachType::SkSkbStreamParser => bpf_attach_type::BPF_SK_SKB_STREAM_PARSER, | ||
BpfAttachType::SkSkbStreamVerdict => bpf_attach_type::BPF_SK_SKB_STREAM_VERDICT, | ||
BpfAttachType::CgroupDevice => bpf_attach_type::BPF_CGROUP_DEVICE, | ||
BpfAttachType::SkMsgVerdict => bpf_attach_type::BPF_SK_MSG_VERDICT, | ||
BpfAttachType::CgroupInet4Bind => bpf_attach_type::BPF_CGROUP_INET4_BIND, | ||
BpfAttachType::CgroupInet6Bind => bpf_attach_type::BPF_CGROUP_INET6_BIND, | ||
BpfAttachType::CgroupInet4Connect => bpf_attach_type::BPF_CGROUP_INET4_CONNECT, | ||
BpfAttachType::CgroupInet6Connect => bpf_attach_type::BPF_CGROUP_INET6_CONNECT, | ||
BpfAttachType::CgroupInet4PostBind => bpf_attach_type::BPF_CGROUP_INET4_POST_BIND, | ||
BpfAttachType::CgroupInet6PostBind => bpf_attach_type::BPF_CGROUP_INET6_POST_BIND, | ||
BpfAttachType::CgroupUdp4Sendmsg => bpf_attach_type::BPF_CGROUP_UDP4_SENDMSG, | ||
BpfAttachType::CgroupUdp6Sendmsg => bpf_attach_type::BPF_CGROUP_UDP6_SENDMSG, | ||
BpfAttachType::LircMode2 => bpf_attach_type::BPF_LIRC_MODE2, | ||
BpfAttachType::FlowDissector => bpf_attach_type::BPF_FLOW_DISSECTOR, | ||
BpfAttachType::CgroupSysctl => bpf_attach_type::BPF_CGROUP_SYSCTL, | ||
BpfAttachType::CgroupUdp4Recvmsg => bpf_attach_type::BPF_CGROUP_UDP4_RECVMSG, | ||
BpfAttachType::CgroupUdp6Recvmsg => bpf_attach_type::BPF_CGROUP_UDP6_RECVMSG, | ||
BpfAttachType::CgroupGetsockopt => bpf_attach_type::BPF_CGROUP_GETSOCKOPT, | ||
BpfAttachType::CgroupSetsockopt => bpf_attach_type::BPF_CGROUP_SETSOCKOPT, | ||
BpfAttachType::TraceRawTp => bpf_attach_type::BPF_TRACE_RAW_TP, | ||
BpfAttachType::TraceFentry => bpf_attach_type::BPF_TRACE_FENTRY, | ||
BpfAttachType::TraceFexit => bpf_attach_type::BPF_TRACE_FEXIT, | ||
BpfAttachType::ModifyReturn => bpf_attach_type::BPF_MODIFY_RETURN, | ||
BpfAttachType::LsmMac => bpf_attach_type::BPF_LSM_MAC, | ||
BpfAttachType::TraceIter => bpf_attach_type::BPF_TRACE_ITER, | ||
BpfAttachType::CgroupInet4Getpeername => bpf_attach_type::BPF_CGROUP_INET4_GETPEERNAME, | ||
BpfAttachType::CgroupInet6Getpeername => bpf_attach_type::BPF_CGROUP_INET6_GETPEERNAME, | ||
BpfAttachType::CgroupInet4Getsockname => bpf_attach_type::BPF_CGROUP_INET4_GETSOCKNAME, | ||
BpfAttachType::CgroupInet6Getsockname => bpf_attach_type::BPF_CGROUP_INET6_GETSOCKNAME, | ||
BpfAttachType::XdpDevmap => bpf_attach_type::BPF_XDP_DEVMAP, | ||
BpfAttachType::CgroupInetSockRelease => bpf_attach_type::BPF_CGROUP_INET_SOCK_RELEASE, | ||
BpfAttachType::XdpCpumap => bpf_attach_type::BPF_XDP_CPUMAP, | ||
BpfAttachType::SkLookup => bpf_attach_type::BPF_SK_LOOKUP, | ||
BpfAttachType::Xdp => bpf_attach_type::BPF_XDP, | ||
BpfAttachType::SkSkbVerdict => bpf_attach_type::BPF_SK_SKB_VERDICT, | ||
BpfAttachType::SkReuseportSelect => bpf_attach_type::BPF_SK_REUSEPORT_SELECT, | ||
BpfAttachType::SkReuseportSelectOrMigrate => { | ||
bpf_attach_type::BPF_SK_REUSEPORT_SELECT_OR_MIGRATE | ||
} | ||
BpfAttachType::PerfEvent => bpf_attach_type::BPF_PERF_EVENT, | ||
BpfAttachType::TraceKprobeMulti => bpf_attach_type::BPF_TRACE_KPROBE_MULTI, | ||
BpfAttachType::LsmCgroup => bpf_attach_type::BPF_LSM_CGROUP, | ||
BpfAttachType::StructOps => bpf_attach_type::BPF_STRUCT_OPS, | ||
BpfAttachType::Netfilter => bpf_attach_type::BPF_NETFILTER, | ||
BpfAttachType::TcxIngress => bpf_attach_type::BPF_TCX_INGRESS, | ||
BpfAttachType::TcxEgress => bpf_attach_type::BPF_TCX_EGRESS, | ||
BpfAttachType::TraceUprobeMulti => bpf_attach_type::BPF_TRACE_UPROBE_MULTI, | ||
BpfAttachType::CgroupUnixConnect => bpf_attach_type::BPF_CGROUP_UNIX_CONNECT, | ||
BpfAttachType::CgroupUnixSendmsg => bpf_attach_type::BPF_CGROUP_UNIX_SENDMSG, | ||
BpfAttachType::CgroupUnixRecvmsg => bpf_attach_type::BPF_CGROUP_UNIX_RECVMSG, | ||
BpfAttachType::CgroupUnixGetpeername => bpf_attach_type::BPF_CGROUP_UNIX_GETPEERNAME, | ||
BpfAttachType::CgroupUnixGetsockname => bpf_attach_type::BPF_CGROUP_UNIX_GETSOCKNAME, | ||
BpfAttachType::NetkitPrimary => bpf_attach_type::BPF_NETKIT_PRIMARY, | ||
BpfAttachType::NetkitPeer => bpf_attach_type::BPF_NETKIT_PEER, | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
//! Command types for BPFFS Permissions | ||
use crate::generated::bpf_cmd; | ||
|
||
/// The type of BPF link | ||
#[derive(Copy, Clone, Debug)] | ||
pub enum BpfCommand { | ||
/// Map Create | ||
MapCreate, | ||
/// Map Lookup Element | ||
MapLookupElem, | ||
/// Map Update Element | ||
MapUpdateElem, | ||
/// Map Delete Element | ||
MapDeleteElem, | ||
/// Map Get Next Key | ||
MapGetNextKey, | ||
/// Program Load | ||
ProgLoad, | ||
/// Object Pin | ||
ObjPin, | ||
/// Object Get | ||
ObjGet, | ||
/// Program Attach | ||
ProgAttach, | ||
/// Program Detach | ||
ProgDetach, | ||
/// Program Test Run | ||
ProgTestRun, | ||
/// Program Get Next Id | ||
ProgGetNextId, | ||
/// Map Get Next Id | ||
MapGetNextId, | ||
/// Program Get FD By Id | ||
ProgGetFdById, | ||
/// Map Get FD By Id | ||
MapGetFdById, | ||
/// Object Get Info By FD | ||
ObjGetInfoByFd, | ||
/// Program Query | ||
ProgQuery, | ||
/// Raw Tracepoint Open | ||
RawTracepointOpen, | ||
/// BTF Load | ||
BtfLoad, | ||
/// BTF Get FD By Id | ||
BtfGetFdById, | ||
/// Task FD Query | ||
TaskFdQuery, | ||
/// Map Lookup And Delete Element | ||
MapLookupAndDeleteElem, | ||
/// Map Freeze | ||
MapFreeze, | ||
/// BTF Get Next Id | ||
BtfGetNextId, | ||
/// Map Lookup Batch | ||
MapLookupBatch, | ||
/// Map Lookup And Delete Batch | ||
MapLookupAndDeleteBatch, | ||
/// Map Update Batch | ||
MapUpdateBatch, | ||
/// Map Delete Batch | ||
MapDeleteBatch, | ||
/// Link Create | ||
LinkCreate, | ||
/// Link Update | ||
LinkUpdate, | ||
/// Link Get FD By Id | ||
LinkGetFdById, | ||
/// Link Get Next Id | ||
LinkGetNextId, | ||
/// Enable Stats | ||
EnableStats, | ||
/// Iter Create | ||
IterCreate, | ||
/// Link Detach | ||
LinkDetach, | ||
/// Program Bind Map | ||
ProgBindMap, | ||
/// Token Create | ||
TokenCreate, | ||
} | ||
|
||
impl From<BpfCommand> for bpf_cmd { | ||
fn from(value: BpfCommand) -> Self { | ||
match value { | ||
BpfCommand::MapCreate => bpf_cmd::BPF_MAP_CREATE, | ||
BpfCommand::MapLookupElem => bpf_cmd::BPF_MAP_LOOKUP_ELEM, | ||
BpfCommand::MapUpdateElem => bpf_cmd::BPF_MAP_UPDATE_ELEM, | ||
BpfCommand::MapDeleteElem => bpf_cmd::BPF_MAP_DELETE_ELEM, | ||
BpfCommand::MapGetNextKey => bpf_cmd::BPF_MAP_GET_NEXT_KEY, | ||
BpfCommand::ProgLoad => bpf_cmd::BPF_PROG_LOAD, | ||
BpfCommand::ObjPin => bpf_cmd::BPF_OBJ_PIN, | ||
BpfCommand::ObjGet => bpf_cmd::BPF_OBJ_GET, | ||
BpfCommand::ProgAttach => bpf_cmd::BPF_PROG_ATTACH, | ||
BpfCommand::ProgDetach => bpf_cmd::BPF_PROG_DETACH, | ||
BpfCommand::ProgTestRun => bpf_cmd::BPF_PROG_TEST_RUN, | ||
BpfCommand::ProgGetNextId => bpf_cmd::BPF_PROG_GET_NEXT_ID, | ||
BpfCommand::MapGetNextId => bpf_cmd::BPF_MAP_GET_NEXT_ID, | ||
BpfCommand::ProgGetFdById => bpf_cmd::BPF_PROG_GET_FD_BY_ID, | ||
BpfCommand::MapGetFdById => bpf_cmd::BPF_MAP_GET_FD_BY_ID, | ||
BpfCommand::ObjGetInfoByFd => bpf_cmd::BPF_OBJ_GET_INFO_BY_FD, | ||
BpfCommand::ProgQuery => bpf_cmd::BPF_PROG_QUERY, | ||
BpfCommand::RawTracepointOpen => bpf_cmd::BPF_RAW_TRACEPOINT_OPEN, | ||
BpfCommand::BtfLoad => bpf_cmd::BPF_BTF_LOAD, | ||
BpfCommand::BtfGetFdById => bpf_cmd::BPF_BTF_GET_FD_BY_ID, | ||
BpfCommand::TaskFdQuery => bpf_cmd::BPF_TASK_FD_QUERY, | ||
BpfCommand::MapLookupAndDeleteElem => bpf_cmd::BPF_MAP_LOOKUP_AND_DELETE_ELEM, | ||
BpfCommand::MapFreeze => bpf_cmd::BPF_MAP_FREEZE, | ||
BpfCommand::BtfGetNextId => bpf_cmd::BPF_BTF_GET_NEXT_ID, | ||
BpfCommand::MapLookupBatch => bpf_cmd::BPF_MAP_LOOKUP_BATCH, | ||
BpfCommand::MapLookupAndDeleteBatch => bpf_cmd::BPF_MAP_LOOKUP_AND_DELETE_BATCH, | ||
BpfCommand::MapUpdateBatch => bpf_cmd::BPF_MAP_UPDATE_BATCH, | ||
BpfCommand::MapDeleteBatch => bpf_cmd::BPF_MAP_DELETE_BATCH, | ||
BpfCommand::LinkCreate => bpf_cmd::BPF_LINK_CREATE, | ||
BpfCommand::LinkUpdate => bpf_cmd::BPF_LINK_UPDATE, | ||
BpfCommand::LinkGetFdById => bpf_cmd::BPF_LINK_GET_FD_BY_ID, | ||
BpfCommand::LinkGetNextId => bpf_cmd::BPF_LINK_GET_NEXT_ID, | ||
BpfCommand::EnableStats => bpf_cmd::BPF_ENABLE_STATS, | ||
BpfCommand::IterCreate => bpf_cmd::BPF_ITER_CREATE, | ||
BpfCommand::LinkDetach => bpf_cmd::BPF_LINK_DETACH, | ||
BpfCommand::ProgBindMap => bpf_cmd::BPF_PROG_BIND_MAP, | ||
BpfCommand::TokenCreate => bpf_cmd::BPF_TOKEN_CREATE, | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.