whatcanGOwrong
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
// Code generated by bpf2go; DO NOT EDIT.
|
||||
{{ with .Constraints }}//go:build {{ . }}{{ end }}
|
||||
|
||||
package {{ .Package }}
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"{{ .Module }}"
|
||||
)
|
||||
|
||||
{{- if .Types }}
|
||||
{{- range $type := .Types }}
|
||||
{{ $.TypeDeclaration (index $.TypeNames $type) $type }}
|
||||
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
// {{ .Name.Load }} returns the embedded CollectionSpec for {{ .Name }}.
|
||||
func {{ .Name.Load }}() (*ebpf.CollectionSpec, error) {
|
||||
reader := bytes.NewReader({{ .Name.Bytes }})
|
||||
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("can't load {{ .Name }}: %w", err)
|
||||
}
|
||||
|
||||
return spec, err
|
||||
}
|
||||
|
||||
// {{ .Name.LoadObjects }} loads {{ .Name }} and converts it into a struct.
|
||||
//
|
||||
// The following types are suitable as obj argument:
|
||||
//
|
||||
// *{{ .Name.Objects }}
|
||||
// *{{ .Name.Programs }}
|
||||
// *{{ .Name.Maps }}
|
||||
//
|
||||
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
|
||||
func {{ .Name.LoadObjects }}(obj interface{}, opts *ebpf.CollectionOptions) (error) {
|
||||
spec, err := {{ .Name.Load }}()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return spec.LoadAndAssign(obj, opts)
|
||||
}
|
||||
|
||||
// {{ .Name.Specs }} contains maps and programs before they are loaded into the kernel.
|
||||
//
|
||||
// It can be passed ebpf.CollectionSpec.Assign.
|
||||
type {{ .Name.Specs }} struct {
|
||||
{{ .Name.ProgramSpecs }}
|
||||
{{ .Name.MapSpecs }}
|
||||
}
|
||||
|
||||
// {{ .Name.Specs }} contains programs before they are loaded into the kernel.
|
||||
//
|
||||
// It can be passed ebpf.CollectionSpec.Assign.
|
||||
type {{ .Name.ProgramSpecs }} struct {
|
||||
{{- range $name, $id := .Programs }}
|
||||
{{ $id }} *ebpf.ProgramSpec `ebpf:"{{ $name }}"`
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
// {{ .Name.MapSpecs }} contains maps before they are loaded into the kernel.
|
||||
//
|
||||
// It can be passed ebpf.CollectionSpec.Assign.
|
||||
type {{ .Name.MapSpecs }} struct {
|
||||
{{- range $name, $id := .Maps }}
|
||||
{{ $id }} *ebpf.MapSpec `ebpf:"{{ $name }}"`
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
// {{ .Name.Objects }} contains all objects after they have been loaded into the kernel.
|
||||
//
|
||||
// It can be passed to {{ .Name.LoadObjects }} or ebpf.CollectionSpec.LoadAndAssign.
|
||||
type {{ .Name.Objects }} struct {
|
||||
{{ .Name.Programs }}
|
||||
{{ .Name.Maps }}
|
||||
}
|
||||
|
||||
func (o *{{ .Name.Objects }}) Close() error {
|
||||
return {{ .Name.CloseHelper }}(
|
||||
&o.{{ .Name.Programs }},
|
||||
&o.{{ .Name.Maps }},
|
||||
)
|
||||
}
|
||||
|
||||
// {{ .Name.Maps }} contains all maps after they have been loaded into the kernel.
|
||||
//
|
||||
// It can be passed to {{ .Name.LoadObjects }} or ebpf.CollectionSpec.LoadAndAssign.
|
||||
type {{ .Name.Maps }} struct {
|
||||
{{- range $name, $id := .Maps }}
|
||||
{{ $id }} *ebpf.Map `ebpf:"{{ $name }}"`
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
func (m *{{ .Name.Maps }}) Close() error {
|
||||
return {{ .Name.CloseHelper }}(
|
||||
{{- range $id := .Maps }}
|
||||
m.{{ $id }},
|
||||
{{- end }}
|
||||
)
|
||||
}
|
||||
|
||||
// {{ .Name.Programs }} contains all programs after they have been loaded into the kernel.
|
||||
//
|
||||
// It can be passed to {{ .Name.LoadObjects }} or ebpf.CollectionSpec.LoadAndAssign.
|
||||
type {{ .Name.Programs }} struct {
|
||||
{{- range $name, $id := .Programs }}
|
||||
{{ $id }} *ebpf.Program `ebpf:"{{ $name }}"`
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
func (p *{{ .Name.Programs }}) Close() error {
|
||||
return {{ .Name.CloseHelper }}(
|
||||
{{- range $id := .Programs }}
|
||||
p.{{ $id }},
|
||||
{{- end }}
|
||||
)
|
||||
}
|
||||
|
||||
func {{ .Name.CloseHelper }}(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 {{ .File }}
|
||||
var {{ .Name.Bytes }} []byte
|
||||
Reference in New Issue
Block a user