diff --git a/libbpfgo.go b/libbpfgo.go index 0dd90917..4055cd01 100644 --- a/libbpfgo.go +++ b/libbpfgo.go @@ -928,7 +928,7 @@ func (p *BPFProg) GetPinPath() string { type BPFProgType uint32 const ( - BPFProgTypeUnspec uint32 = iota + BPFProgTypeUnspec BPFProgType = iota BPFProgTypeSocketFilter BPFProgTypeKprobe BPFProgTypeSchedCls @@ -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) } @@ -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)) @@ -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)