Skip to content

attach xdp error #379

Description

@SohnYu

libbpf: prog 'target': failed to attach to xdp: Invalid argument
failed to attach xdp on device lo to program target: invalid argument

os version: ubuntu20.04-server
kernel version: 5.4.0-162-generic

#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>

#ifdef asm_inline
#undef asm_inline
#define asm_inline asm
#endif

SEC("xdp")
int target(struct xdp_md *ctx) {
    // Reserve space on the ringbuffer for the sample
    return XDP_PASS;
}

char LICENSE[] SEC("license") = "GPL";
package main

import "C"

import (
        "fmt"
        "os"

        bpf "github.com/aquasecurity/libbpfgo"
)

const (
        deviceName = "lo"
)

func main() {

        bpfModule, err := bpf.NewModuleFromFile("main.bpf.o")
        if err != nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }
        defer bpfModule.Close()

        err = bpfModule.BPFLoadObject()
        if err != nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }
        defer bpfModule.Close()

        err = bpfModule.BPFLoadObject()
        if err != nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }

        xdpProg, err := bpfModule.GetProgram("target")
        if xdpProg == nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }

        xdpProg, err := bpfModule.GetProgram("target")
        if xdpProg == nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }

        _, err = xdpProg.AttachXDP(deviceName)
        if err != nil {
                fmt.Fprintln(os.Stderr, err)
                os.Exit(-1)
        }
        select{}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions