github.com/inspektor-gadget/inspektor-gadget@v0.28.1/pkg/gadgets/trace/tcp/tracer/tcptracer_x86_bpfel.go (about) 1 // Code generated by bpf2go; DO NOT EDIT. 2 //go:build 386 || amd64 3 4 package tracer 5 6 import ( 7 "bytes" 8 _ "embed" 9 "fmt" 10 "io" 11 12 "github.com/cilium/ebpf" 13 ) 14 15 type tcptracerEvent struct { 16 Saddr [16]uint8 17 Daddr [16]uint8 18 Task [16]uint8 19 MntnsId uint64 20 Timestamp uint64 21 TsUs uint64 22 Pid uint32 23 Uid uint32 24 Gid uint32 25 Netns uint32 26 Af uint16 27 Dport uint16 28 Sport uint16 29 Type tcptracerEventType 30 _ [1]byte 31 } 32 33 type tcptracerEventType uint8 34 35 const ( 36 tcptracerEventTypeTCP_EVENT_TYPE_CONNECT tcptracerEventType = 0 37 tcptracerEventTypeTCP_EVENT_TYPE_ACCEPT tcptracerEventType = 1 38 tcptracerEventTypeTCP_EVENT_TYPE_CLOSE tcptracerEventType = 2 39 ) 40 41 // loadTcptracer returns the embedded CollectionSpec for tcptracer. 42 func loadTcptracer() (*ebpf.CollectionSpec, error) { 43 reader := bytes.NewReader(_TcptracerBytes) 44 spec, err := ebpf.LoadCollectionSpecFromReader(reader) 45 if err != nil { 46 return nil, fmt.Errorf("can't load tcptracer: %w", err) 47 } 48 49 return spec, err 50 } 51 52 // loadTcptracerObjects loads tcptracer and converts it into a struct. 53 // 54 // The following types are suitable as obj argument: 55 // 56 // *tcptracerObjects 57 // *tcptracerPrograms 58 // *tcptracerMaps 59 // 60 // See ebpf.CollectionSpec.LoadAndAssign documentation for details. 61 func loadTcptracerObjects(obj interface{}, opts *ebpf.CollectionOptions) error { 62 spec, err := loadTcptracer() 63 if err != nil { 64 return err 65 } 66 67 return spec.LoadAndAssign(obj, opts) 68 } 69 70 // tcptracerSpecs contains maps and programs before they are loaded into the kernel. 71 // 72 // It can be passed ebpf.CollectionSpec.Assign. 73 type tcptracerSpecs struct { 74 tcptracerProgramSpecs 75 tcptracerMapSpecs 76 } 77 78 // tcptracerSpecs contains programs before they are loaded into the kernel. 79 // 80 // It can be passed ebpf.CollectionSpec.Assign. 81 type tcptracerProgramSpecs struct { 82 IgTcpAccept *ebpf.ProgramSpec `ebpf:"ig_tcp_accept"` 83 IgTcpClose *ebpf.ProgramSpec `ebpf:"ig_tcp_close"` 84 IgTcpState *ebpf.ProgramSpec `ebpf:"ig_tcp_state"` 85 IgTcpV4CoE *ebpf.ProgramSpec `ebpf:"ig_tcp_v4_co_e"` 86 IgTcpV4CoX *ebpf.ProgramSpec `ebpf:"ig_tcp_v4_co_x"` 87 IgTcpV6CoE *ebpf.ProgramSpec `ebpf:"ig_tcp_v6_co_e"` 88 IgTcpV6CoX *ebpf.ProgramSpec `ebpf:"ig_tcp_v6_co_x"` 89 } 90 91 // tcptracerMapSpecs contains maps before they are loaded into the kernel. 92 // 93 // It can be passed ebpf.CollectionSpec.Assign. 94 type tcptracerMapSpecs struct { 95 Events *ebpf.MapSpec `ebpf:"events"` 96 GadgetMntnsFilterMap *ebpf.MapSpec `ebpf:"gadget_mntns_filter_map"` 97 Sockets *ebpf.MapSpec `ebpf:"sockets"` 98 Tuplepid *ebpf.MapSpec `ebpf:"tuplepid"` 99 } 100 101 // tcptracerObjects contains all objects after they have been loaded into the kernel. 102 // 103 // It can be passed to loadTcptracerObjects or ebpf.CollectionSpec.LoadAndAssign. 104 type tcptracerObjects struct { 105 tcptracerPrograms 106 tcptracerMaps 107 } 108 109 func (o *tcptracerObjects) Close() error { 110 return _TcptracerClose( 111 &o.tcptracerPrograms, 112 &o.tcptracerMaps, 113 ) 114 } 115 116 // tcptracerMaps contains all maps after they have been loaded into the kernel. 117 // 118 // It can be passed to loadTcptracerObjects or ebpf.CollectionSpec.LoadAndAssign. 119 type tcptracerMaps struct { 120 Events *ebpf.Map `ebpf:"events"` 121 GadgetMntnsFilterMap *ebpf.Map `ebpf:"gadget_mntns_filter_map"` 122 Sockets *ebpf.Map `ebpf:"sockets"` 123 Tuplepid *ebpf.Map `ebpf:"tuplepid"` 124 } 125 126 func (m *tcptracerMaps) Close() error { 127 return _TcptracerClose( 128 m.Events, 129 m.GadgetMntnsFilterMap, 130 m.Sockets, 131 m.Tuplepid, 132 ) 133 } 134 135 // tcptracerPrograms contains all programs after they have been loaded into the kernel. 136 // 137 // It can be passed to loadTcptracerObjects or ebpf.CollectionSpec.LoadAndAssign. 138 type tcptracerPrograms struct { 139 IgTcpAccept *ebpf.Program `ebpf:"ig_tcp_accept"` 140 IgTcpClose *ebpf.Program `ebpf:"ig_tcp_close"` 141 IgTcpState *ebpf.Program `ebpf:"ig_tcp_state"` 142 IgTcpV4CoE *ebpf.Program `ebpf:"ig_tcp_v4_co_e"` 143 IgTcpV4CoX *ebpf.Program `ebpf:"ig_tcp_v4_co_x"` 144 IgTcpV6CoE *ebpf.Program `ebpf:"ig_tcp_v6_co_e"` 145 IgTcpV6CoX *ebpf.Program `ebpf:"ig_tcp_v6_co_x"` 146 } 147 148 func (p *tcptracerPrograms) Close() error { 149 return _TcptracerClose( 150 p.IgTcpAccept, 151 p.IgTcpClose, 152 p.IgTcpState, 153 p.IgTcpV4CoE, 154 p.IgTcpV4CoX, 155 p.IgTcpV6CoE, 156 p.IgTcpV6CoX, 157 ) 158 } 159 160 func _TcptracerClose(closers ...io.Closer) error { 161 for _, closer := range closers { 162 if err := closer.Close(); err != nil { 163 return err 164 } 165 } 166 return nil 167 } 168 169 // Do not access this directly. 170 // 171 //go:embed tcptracer_x86_bpfel.o 172 var _TcptracerBytes []byte