Skip to content

Commit

Permalink
Add APIs for setting attach targets so they're not just implied by SE…
Browse files Browse the repository at this point in the history
…C and name labels

Signed-off-by: grantseltzer <grantseltzer@gmail.com>
  • Loading branch information
grantseltzer committed Apr 6, 2022
1 parent 15a926a commit 13798dc
Showing 1 changed file with 58 additions and 2 deletions.
60 changes: 58 additions & 2 deletions libbpfgo.go
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@ func (p *BPFProg) GetPinPath() string {
type BPFProgType uint32

const (
BPFProgTypeUnspec uint32 = iota
BPFProgTypeUnspec BPFProgType = iota
BPFProgTypeSocketFilter
BPFProgTypeKprobe
BPFProgTypeSchedCls
Expand Down Expand Up @@ -962,6 +962,54 @@ const (
BPFProgTypeSyscall
)

type BPFAttachType uint32

const (
BPFAttachTypeCgroupInetIngress BPFAttachType = iota
BPFAttachTypeCgroupInetEgress
BPFAttachTypeCgroupInetSockCreate
BPFAttachTypeCgroupSockOps
BPFAttachTypeSKSKBStreamParser
BPFAttachTypeSKSKBStreamVerdict
BPFAttachTypeCgroupDevice
BPFAttachTypeSKMSGVerdict
BPFAttachTypeCgroupInet4Bind
BPFAttachTypeCgroupInet6Bind
BPFAttachTypeCgroupInet4Connect
BPFAttachTypeCgroupInet6Connect
BPFAttachTypeCgroupInet4PostBind
BPFAttachTypeCgroupInet6PostBind
BPFAttachTypeCgroupUDP4SendMsg
BPFAttachTypeCgroupUDP6SendMsg
BPFAttachTypeLircMode2
BPFAttachTypeFlowDissector
BPFAttachTypeCgroupSysctl
BPFAttachTypeCgroupUDP4RecvMsg
BPFAttachTypeCgroupUDP6RecvMsg
BPFAttachTypeCgroupGetSockOpt
BPFAttachTypeCgroupSetSockOpt
BPFAttachTypeTraceRawTP
BPFAttachTypeTraceFentry
BPFAttachTypeTraceFexit
BPFAttachTypeModifyReturn
BPFAttachTypeLSMMac
BPFAttachTypeTraceIter
BPFAttachTypeCgroupInet4GetPeerName
BPFAttachTypeCgroupInet6GetPeerName
BPFAttachTypeCgroupInet4GetSockName
BPFAttachTypeCgroupInet6GetSockName
BPFAttachTypeXDPDevMap
BPFAttachTypeCgroupInetSockRelease
BPFAttachTypeXDPCPUMap
BPFAttachTypeSKLookup
BPFAttachTypeXDP
BPFAttachTypeSKSKBVerdict
BPFAttachTypeSKReusePortSelect
BPFAttachTypeSKReusePortSelectorMigrate
BPFAttachTypePerfEvent
BPFAttachTypeTraceKprobeMulti
)

func (p *BPFProg) GetType() uint32 {
return C.bpf_program__get_type(p.prog)
}
Expand Down Expand Up @@ -997,7 +1045,7 @@ func (p *BPFProg) AttachGeneric() (*BPFLink, error) {
return bpfLink, nil
}

func (p *BPFProg) SetAttachType(attachProgFD int, attachFuncName string) error {
func (p *BPFProg) SetAttachTarget(attachProgFD int, attachFuncName string) error {
cs := C.CString(attachFuncName)
errC := C.bpf_program__set_attach_target(p.prog, C.int(attachProgFD), cs)
C.free(unsafe.Pointer(cs))
Expand All @@ -1007,6 +1055,14 @@ func (p *BPFProg) SetAttachType(attachProgFD int, attachFuncName string) error {
return nil
}

func (p *BPFProg) SetProgramType(progType BPFProgType) {
C.bpf_program__set_type(p.prog, C.enum_bpf_prog_type(int(progType)))
}

func (p *BPFProg) SetAttachType(attachType BPFAttachType) {
C.bpf_program__set_expected_attach_type(p.prog, C.enum_bpf_attach_type(int(attachType)))
}

func (p *BPFProg) AttachTracepoint(category, name string) (*BPFLink, error) {
tpCategory := C.CString(category)
tpName := C.CString(name)
Expand Down

0 comments on commit 13798dc

Please sign in to comment.