diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0467fca5..cdacd49a 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -72,3 +72,33 @@ jobs: VALIDATE_MD: true DEFAULT_BRANCH: main GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + check-bpf: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v2 + with: + version: "17.0" + directory: ${{ runner.temp }}/llvm + - name: build-bpf + run: | + make generate-bpf-in-container + - name: check-bpf-update + run: | + for bpfobjfile in `git status --porcelain | awk '{print $2}'`; do + echo "check $bpfobjfile prog sections changes by remove .BTF debug section" + git show HEAD:$bpfobjfile > ${bpfobjfile}.old + if llvm-objdump --headers $bpfobjfile &>/dev/null; then + llvm-objcopy --remove-section '.BTF' ${bpfobjfile}.old + llvm-objcopy --remove-section '.BTF' $bpfobjfile + if ! diff ${bpfobjfile}.old $bpfobjfile; then + echo "$bpfobjfile changed; Please run 'make generate-bpf-in-container' and submit your changes" + exit 1 + fi + fi + rm -f ${bpfobjfile}.old + done diff --git a/Makefile b/Makefile index 7242c4db..823477e4 100644 --- a/Makefile +++ b/Makefile @@ -46,6 +46,10 @@ build-btfhack: build-webconsole: cd webui && CGO_ENABLED=0 go build -o ../bin/webconsole -ldflags $(ldflags) . -.PHONY: generate-btf -generate-btf: +.PHONY: generate-bpf +generate-bpf: go generate ./pkg/exporter/probe/... + +.PHONY: generate-bpf-in-container +generate-bpf-in-container: + docker run -v $(PWD):/go/src/github.com/alibaba/kubeskoop --workdir /go/src/github.com/alibaba/kubeskoop kubeskoop/bpf-build:go121-clang17 go generate ./pkg/exporter/probe/... diff --git a/pkg/exporter/probe/flow/bpf_bpfeb.o b/pkg/exporter/probe/flow/bpf_bpfeb.o index 47220b51..f850155b 100644 Binary files a/pkg/exporter/probe/flow/bpf_bpfeb.o and b/pkg/exporter/probe/flow/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/flow/bpf_bpfel.o b/pkg/exporter/probe/flow/bpf_bpfel.o index a3b51563..2ecb6423 100644 Binary files a/pkg/exporter/probe/flow/bpf_bpfel.o and b/pkg/exporter/probe/flow/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracebiolatency/bpf_bpfeb.o b/pkg/exporter/probe/tracebiolatency/bpf_bpfeb.o index 4d53c366..87983fce 100644 Binary files a/pkg/exporter/probe/tracebiolatency/bpf_bpfeb.o and b/pkg/exporter/probe/tracebiolatency/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracebiolatency/bpf_bpfel.o b/pkg/exporter/probe/tracebiolatency/bpf_bpfel.o index 47c09580..c8c5b4d7 100644 Binary files a/pkg/exporter/probe/tracebiolatency/bpf_bpfel.o and b/pkg/exporter/probe/tracebiolatency/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracekernel/bpf_bpfeb.go b/pkg/exporter/probe/tracekernel/bpf_bpfeb.go index 0e60c8b0..2b88c110 100644 --- a/pkg/exporter/probe/tracekernel/bpf_bpfeb.go +++ b/pkg/exporter/probe/tracekernel/bpf_bpfeb.go @@ -16,14 +16,8 @@ import ( type bpfInspKlEventT struct { Target [20]int8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracekernel/bpf_bpfeb.o b/pkg/exporter/probe/tracekernel/bpf_bpfeb.o index 6e537435..c5bf6651 100644 Binary files a/pkg/exporter/probe/tracekernel/bpf_bpfeb.o and b/pkg/exporter/probe/tracekernel/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracekernel/bpf_bpfel.go b/pkg/exporter/probe/tracekernel/bpf_bpfel.go index 6281f8aa..cf6234be 100644 --- a/pkg/exporter/probe/tracekernel/bpf_bpfel.go +++ b/pkg/exporter/probe/tracekernel/bpf_bpfel.go @@ -16,14 +16,8 @@ import ( type bpfInspKlEventT struct { Target [20]int8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracekernel/bpf_bpfel.o b/pkg/exporter/probe/tracekernel/bpf_bpfel.o index aacaf983..57215273 100644 Binary files a/pkg/exporter/probe/tracekernel/bpf_bpfel.o and b/pkg/exporter/probe/tracekernel/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.go b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.go index 43ab8824..79df65e1 100644 --- a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.go +++ b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.go @@ -17,14 +17,8 @@ type bpfInspNftxlatEventT struct { Target [20]int8 Type uint32 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.o b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.o index de90fa79..fafba502 100644 Binary files a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.o and b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.go b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.go index 6250d4c7..55d915eb 100644 --- a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.go +++ b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.go @@ -17,14 +17,8 @@ type bpfInspNftxlatEventT struct { Target [20]int8 Type uint32 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.o b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.o index 4e2b3047..0d3f79d1 100644 Binary files a/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.o and b/pkg/exporter/probe/tracenetiftxlatency/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracepacketloss/bpf_bpfeb.o b/pkg/exporter/probe/tracepacketloss/bpf_bpfeb.o index 5b8ae397..e266a438 100644 Binary files a/pkg/exporter/probe/tracepacketloss/bpf_bpfeb.o and b/pkg/exporter/probe/tracepacketloss/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracepacketloss/bpf_bpfel.o b/pkg/exporter/probe/tracepacketloss/bpf_bpfel.o index c539f623..618fa39d 100644 Binary files a/pkg/exporter/probe/tracepacketloss/bpf_bpfel.o and b/pkg/exporter/probe/tracepacketloss/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.go b/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.go index 2faf4a75..9e4607b8 100644 --- a/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.go +++ b/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.go @@ -16,14 +16,8 @@ import ( type bpfInspSklatEventT struct { Target [20]int8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.o b/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.o index 4a68f1c3..3efa0199 100644 Binary files a/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.o and b/pkg/exporter/probe/tracesocketlatency/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.go b/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.go index b11f6995..328a70d4 100644 --- a/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.go +++ b/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.go @@ -16,14 +16,8 @@ import ( type bpfInspSklatEventT struct { Target [20]int8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.o b/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.o index 11df115e..9bd0a33d 100644 Binary files a/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.o and b/pkg/exporter/probe/tracesocketlatency/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracesoftirq/bpf_bpfeb.o b/pkg/exporter/probe/tracesoftirq/bpf_bpfeb.o index 30f626bb..de83d1a8 100644 Binary files a/pkg/exporter/probe/tracesoftirq/bpf_bpfeb.o and b/pkg/exporter/probe/tracesoftirq/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracesoftirq/bpf_bpfel.o b/pkg/exporter/probe/tracesoftirq/bpf_bpfel.o index 0572857a..409a26eb 100644 Binary files a/pkg/exporter/probe/tracesoftirq/bpf_bpfel.o and b/pkg/exporter/probe/tracesoftirq/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.go b/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.go index 1416b904..c17e2102 100644 --- a/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.go +++ b/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.go @@ -17,14 +17,8 @@ type bpfInspTcpresetEventT struct { Type uint32 State uint8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.o b/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.o index 3a33981c..a58872be 100644 Binary files a/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.o and b/pkg/exporter/probe/tracetcpreset/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracetcpreset/bpf_bpfel.go b/pkg/exporter/probe/tracetcpreset/bpf_bpfel.go index c7ce86d7..465052a5 100644 --- a/pkg/exporter/probe/tracetcpreset/bpf_bpfel.go +++ b/pkg/exporter/probe/tracetcpreset/bpf_bpfel.go @@ -17,14 +17,8 @@ type bpfInspTcpresetEventT struct { Type uint32 State uint8 Tuple struct { - Saddr struct { - V4addr uint32 - _ [12]byte - } - Daddr struct { - V4addr uint32 - _ [12]byte - } + Saddr struct{ V6addr [16]uint8 } + Daddr struct{ V6addr [16]uint8 } Sport uint16 Dport uint16 L3Proto uint16 diff --git a/pkg/exporter/probe/tracetcpreset/bpf_bpfel.o b/pkg/exporter/probe/tracetcpreset/bpf_bpfel.o index d883d68e..7f4eca7e 100644 Binary files a/pkg/exporter/probe/tracetcpreset/bpf_bpfel.o and b/pkg/exporter/probe/tracetcpreset/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracetcpretrans/bpf_bpfeb.o b/pkg/exporter/probe/tracetcpretrans/bpf_bpfeb.o index d1f17ec9..43b94c27 100644 Binary files a/pkg/exporter/probe/tracetcpretrans/bpf_bpfeb.o and b/pkg/exporter/probe/tracetcpretrans/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracetcpretrans/bpf_bpfel.o b/pkg/exporter/probe/tracetcpretrans/bpf_bpfel.o index 8c4bcdb7..990f8681 100644 Binary files a/pkg/exporter/probe/tracetcpretrans/bpf_bpfel.o and b/pkg/exporter/probe/tracetcpretrans/bpf_bpfel.o differ diff --git a/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfeb.o b/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfeb.o index 57c6ac1e..70a45da8 100644 Binary files a/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfeb.o and b/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfeb.o differ diff --git a/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfel.o b/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfel.o index 32e1ca9f..6ace9162 100644 Binary files a/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfel.o and b/pkg/exporter/probe/tracevirtcmdlat/bpf_bpfel.o differ diff --git a/tools/Dockerfile.dev b/tools/Dockerfile.dev new file mode 100644 index 00000000..c4b8d3b0 --- /dev/null +++ b/tools/Dockerfile.dev @@ -0,0 +1,3 @@ +FROM alpine:3.19 +RUN apk add clang=17.0.5-r0 llvm=17.0.5-r0 go=1.21.9-r0 make bash +RUN go install github.com/cilium/ebpf/cmd/bpf2go@latest