-
Notifications
You must be signed in to change notification settings - Fork 277
Expand file tree
/
Copy pathtcpretrans_bpfel_x86.go
More file actions
134 lines (115 loc) · 3.21 KB
/
tcpretrans_bpfel_x86.go
File metadata and controls
134 lines (115 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Code generated by bpf2go; DO NOT EDIT.
//go:build 386 || amd64
package tcpretrans
import (
"bytes"
_ "embed"
"fmt"
"io"
"github.com/cilium/ebpf"
)
type tcpretransTcpretransEvent struct {
Timestamp uint64
SrcIp uint32
DstIp uint32
SrcPort uint16
DstPort uint16
State uint32
Tcpflags uint8
Af uint8
Pad [2]uint8
SrcIp6 [16]uint8
DstIp6 [16]uint8
_ [4]byte
}
// loadTcpretrans returns the embedded CollectionSpec for tcpretrans.
func loadTcpretrans() (*ebpf.CollectionSpec, error) {
reader := bytes.NewReader(_TcpretransBytes)
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
if err != nil {
return nil, fmt.Errorf("can't load tcpretrans: %w", err)
}
return spec, err
}
// loadTcpretransObjects loads tcpretrans and converts it into a struct.
//
// The following types are suitable as obj argument:
//
// *tcpretransObjects
// *tcpretransPrograms
// *tcpretransMaps
//
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
func loadTcpretransObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
spec, err := loadTcpretrans()
if err != nil {
return err
}
return spec.LoadAndAssign(obj, opts)
}
// tcpretransSpecs contains maps and programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpretransSpecs struct {
tcpretransProgramSpecs
tcpretransMapSpecs
}
// tcpretransSpecs contains programs before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpretransProgramSpecs struct {
RetinaTcpRetransmitSkb *ebpf.ProgramSpec `ebpf:"retina_tcp_retransmit_skb"`
}
// tcpretransMapSpecs contains maps before they are loaded into the kernel.
//
// It can be passed ebpf.CollectionSpec.Assign.
type tcpretransMapSpecs struct {
RetinaTcpretransEvents *ebpf.MapSpec `ebpf:"retina_tcpretrans_events"`
}
// tcpretransObjects contains all objects after they have been loaded into the kernel.
//
// It can be passed to loadTcpretransObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpretransObjects struct {
tcpretransPrograms
tcpretransMaps
}
func (o *tcpretransObjects) Close() error {
return _TcpretransClose(
&o.tcpretransPrograms,
&o.tcpretransMaps,
)
}
// tcpretransMaps contains all maps after they have been loaded into the kernel.
//
// It can be passed to loadTcpretransObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpretransMaps struct {
RetinaTcpretransEvents *ebpf.Map `ebpf:"retina_tcpretrans_events"`
}
func (m *tcpretransMaps) Close() error {
return _TcpretransClose(
m.RetinaTcpretransEvents,
)
}
// tcpretransPrograms contains all programs after they have been loaded into the kernel.
//
// It can be passed to loadTcpretransObjects or ebpf.CollectionSpec.LoadAndAssign.
type tcpretransPrograms struct {
RetinaTcpRetransmitSkb *ebpf.Program `ebpf:"retina_tcp_retransmit_skb"`
}
func (p *tcpretransPrograms) Close() error {
return _TcpretransClose(
p.RetinaTcpRetransmitSkb,
)
}
func _TcpretransClose(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 tcpretrans_bpfel_x86.o
var _TcpretransBytes []byte