From 97f9ba67be6b9595136c06c397e478f1c18d0695 Mon Sep 17 00:00:00 2001 From: Konstantin Belyalov Date: Thu, 23 Jan 2020 12:15:42 -0800 Subject: [PATCH] Save XDP attach mode into LinkXdp. --- link.go | 9 +++++---- link_linux.go | 3 ++- nl/link_linux.go | 8 ++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/link.go b/link.go index 886d88d1..28222452 100644 --- a/link.go +++ b/link.go @@ -196,10 +196,11 @@ type LinkStatistics64 struct { } type LinkXdp struct { - Fd int - Attached bool - Flags uint32 - ProgId uint32 + Fd int + Attached bool + AttachMode uint32 + Flags uint32 + ProgId uint32 } // Device links cannot be created via netlink. These links diff --git a/link_linux.go b/link_linux.go index ec915a0b..89450da6 100644 --- a/link_linux.go +++ b/link_linux.go @@ -2513,7 +2513,8 @@ func parseLinkXdp(data []byte) (*LinkXdp, error) { case nl.IFLA_XDP_FD: xdp.Fd = int(native.Uint32(attr.Value[0:4])) case nl.IFLA_XDP_ATTACHED: - xdp.Attached = attr.Value[0] != 0 + xdp.AttachMode = uint32(attr.Value[0]) + xdp.Attached = xdp.AttachMode != 0 case nl.IFLA_XDP_FLAGS: xdp.Flags = native.Uint32(attr.Value[0:4]) case nl.IFLA_XDP_PROG_ID: diff --git a/nl/link_linux.go b/nl/link_linux.go index afb16a9c..5cb166c1 100644 --- a/nl/link_linux.go +++ b/nl/link_linux.go @@ -478,6 +478,14 @@ const ( IFLA_XDP_MAX = IFLA_XDP_PROG_ID ) +// XDP program attach mode (used as dump value for IFLA_XDP_ATTACHED) +const ( + XDP_ATTACHED_NONE = iota + XDP_ATTACHED_DRV + XDP_ATTACHED_SKB + XDP_ATTACHED_HW +) + const ( IFLA_IPTUN_UNSPEC = iota IFLA_IPTUN_LINK