Skip to content

Issues with 32 -> 64 pointer translation for XDP #128

@daxzel

Description

@daxzel

Hello team!

I have tried to rbpf for testing an XDP program.

I use EbpfVmMbuff and providing xdp_md to my program using mbuff

The problem is that xdp_md uses u32 memory references , e.g. data and data_end
bpf.h#L6476

struct xdp_md {
	__u32 data;
	__u32 data_end;
	__u32 data_meta;
	/* Below access go through struct xdp_rxq_info */
	__u32 ingress_ifindex; /* rxq->dev->ifindex */
	__u32 rx_queue_index;  /* rxq->queue_index  */

	__u32 egress_ifindex;  /* txq->dev->ifindex */
};

As I understand in the real kernel those references will be translated to 64 bit references by kernel's verifier when we run in x64. It doesn't happen when I run EbpfVmMbuff so the XDP program has wrong references to the memory. I use an interpreter mode.

Is there a feature in rbpf which I wasn't able to find or XDP programs are not supported?

Please ping me if we need a test example I will try to set it up.

Thanks in advance for the help!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions