Allow the flags to be specified in remove_xdp()
When detaching a generic XDP program to an interface without native XDP
support, remove_xdp() showed the following message:
bpf: nlmsg error Operation not supported
Add the flags parameter to notify the kernel that it's a generic XDP
program.
diff --git a/examples/networking/xdp/xdp_drop_count.py b/examples/networking/xdp/xdp_drop_count.py
index 0a5c740..ff0af0f 100755
--- a/examples/networking/xdp/xdp_drop_count.py
+++ b/examples/networking/xdp/xdp_drop_count.py
@@ -160,7 +160,7 @@
break;
if mode == BPF.XDP:
- b.remove_xdp(device)
+ b.remove_xdp(device, flags)
else:
ip.tc("del", "clsact", idx)
ipdb.release()
diff --git a/src/python/bcc/__init__.py b/src/python/bcc/__init__.py
index 5488f52..dcfa83f 100644
--- a/src/python/bcc/__init__.py
+++ b/src/python/bcc/__init__.py
@@ -591,12 +591,12 @@
% (dev, errstr))
@staticmethod
- def remove_xdp(dev):
+ def remove_xdp(dev, flags=0):
'''
This function removes any BPF function from a device on the
device driver level (XDP)
'''
- res = lib.bpf_attach_xdp(dev.encode("ascii"), -1, 0)
+ res = lib.bpf_attach_xdp(dev.encode("ascii"), -1, flags)
if res < 0:
errstr = os.strerror(ct.get_errno())
raise Exception("Failed to detach BPF from device %s: %s"