!14 Apply for bugfix: tcp* BPF_SK_LOOKUP undeclared failed

From: @MrRlu
Reviewed-by: @myeuler
Signed-off-by: @myeuler
This commit is contained in:
openeuler-ci-bot 2021-06-21 15:51:59 +00:00 committed by Gitee
commit f83f777a44
2 changed files with 135 additions and 1 deletions

View File

@ -0,0 +1,129 @@
From 653b24ca8cc997c7248b2890f869de15eb0f2c7c Mon Sep 17 00:00:00 2001
From: l00478106 <luzhihao@huawei.com>
Date: Mon, 21 Jun 2021 19:25:01 +0800
Subject: [PATCH] bugfix: tcp and udp tools failed
When older bcc and newer kernel. bcc internal bpf.h does not define BPF_SK_LOOKUP
but newer kernel header file uses BPF_SK_LOOKUP.
---
tools/bindsnoop.py | 1 +
tools/tcpaccept.py | 1 +
tools/tcpconnlat.py | 1 +
tools/tcpdrop.py | 1 +
tools/tcplife.py | 1 +
tools/tcpretrans.py | 1 +
tools/tcpstates.py | 1 +
tools/tcptop.py | 1 +
tools/tcptracer.py | 1 +
9 files changed, 9 insertions(+)
diff --git a/tools/bindsnoop.py b/tools/bindsnoop.py
index e08ebf8..fce5366 100755
--- a/tools/bindsnoop.py
+++ b/tools/bindsnoop.py
@@ -97,6 +97,7 @@ args = parser.parse_args()
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
#include <net/sock.h>
diff --git a/tools/tcpaccept.py b/tools/tcpaccept.py
index 1a5f1c7..2eccb25 100755
--- a/tools/tcpaccept.py
+++ b/tools/tcpaccept.py
@@ -57,6 +57,7 @@ debug = 0
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <net/sock.h>
#include <bcc/proto.h>
diff --git a/tools/tcpconnlat.py b/tools/tcpconnlat.py
index e28a43a..2f3bf16 100755
--- a/tools/tcpconnlat.py
+++ b/tools/tcpconnlat.py
@@ -67,6 +67,7 @@ debug = 0
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <net/sock.h>
#include <net/tcp_states.h>
#include <bcc/proto.h>
diff --git a/tools/tcpdrop.py b/tools/tcpdrop.py
index aceff87..e5e3390 100755
--- a/tools/tcpdrop.py
+++ b/tools/tcpdrop.py
@@ -42,6 +42,7 @@ debug = 0
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <uapi/linux/tcp.h>
#include <uapi/linux/ip.h>
#include <net/sock.h>
diff --git a/tools/tcplife.py b/tools/tcplife.py
index 9fe9804..e576017 100755
--- a/tools/tcplife.py
+++ b/tools/tcplife.py
@@ -66,6 +66,7 @@ debug = 0
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <linux/tcp.h>
#include <net/sock.h>
#include <bcc/proto.h>
diff --git a/tools/tcpretrans.py b/tools/tcpretrans.py
index 7785d9b..44a1883 100755
--- a/tools/tcpretrans.py
+++ b/tools/tcpretrans.py
@@ -44,6 +44,7 @@ debug = 0
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <net/sock.h>
#include <bcc/proto.h>
diff --git a/tools/tcpstates.py b/tools/tcpstates.py
index 57fbb76..cd2bb29 100755
--- a/tools/tcpstates.py
+++ b/tools/tcpstates.py
@@ -61,6 +61,7 @@ debug = 0
# define BPF program
bpf_header = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <linux/tcp.h>
#include <net/sock.h>
#include <bcc/proto.h>
diff --git a/tools/tcptop.py b/tools/tcptop.py
index e9d0d1a..13c7e16 100755
--- a/tools/tcptop.py
+++ b/tools/tcptop.py
@@ -78,6 +78,7 @@ loadavg = "/proc/loadavg"
# define BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#include <net/sock.h>
#include <bcc/proto.h>
diff --git a/tools/tcptracer.py b/tools/tcptracer.py
index 2e486b1..636ffcb 100755
--- a/tools/tcptracer.py
+++ b/tools/tcptracer.py
@@ -42,6 +42,7 @@ args = parser.parse_args()
bpf_text = """
#include <uapi/linux/ptrace.h>
+#define BPF_SK_LOOKUP 36
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
#include <net/sock.h>
--
2.27.0

View File

@ -1,6 +1,6 @@
Name: bcc Name: bcc
Version: 0.15.0 Version: 0.15.0
Release: 2 Release: 3
Summary: BPF Compiler Collection (BCC) Summary: BPF Compiler Collection (BCC)
License: ASL 2.0 License: ASL 2.0
URL: https://github.com/iovisor/bcc URL: https://github.com/iovisor/bcc
@ -20,6 +20,8 @@ BuildRequires: util-linux
Requires: %{name}-tools = %{version}-%{release} Requires: %{name}-tools = %{version}-%{release}
Requires: libbpf >= 0.0.5-3 Requires: libbpf >= 0.0.5-3
Patch: 0001-bugfix-tcp-and-udp-tools-failed.patch
%description %description
BCC is a toolkit for creating efficient kernel tracing and manipulation BCC is a toolkit for creating efficient kernel tracing and manipulation
programs, and includes several useful tools and examples. It makes use of programs, and includes several useful tools and examples. It makes use of
@ -161,6 +163,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/tools/old/
%changelog %changelog
* Mon Jun 21 2021 luzhihao <luzhihao@huawei.com> - 0.15.0-3
- bugfix: tcp* BPF_SK_LOOKUP undeclared failed
* Wed Mar 10 2021 wuchangye <wuchangye@huawei.com> - 0.15.0-2 * Wed Mar 10 2021 wuchangye <wuchangye@huawei.com> - 0.15.0-2
- rebuild - rebuild