unix: implement Linux AF_XDP sockets

Provides access to the Linux AF_XDP socket family.  For more
information on AF_XDP, see:
https://www.kernel.org/doc/html/latest/networking/af_xdp.html.

Change-Id: I7efb82c4a67da3e15932e3c0d882f0bad7ba16ef
Reviewed-on: https://go-review.googlesource.com/136695
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
Matt Layher
2018-09-21 16:39:48 +00:00
parent d641721ec2
commit d47a0f3392
27 changed files with 811 additions and 0 deletions
+16
View File
@@ -75,6 +75,7 @@ package unix
#include <linux/rtc.h>
#include <linux/blkpg.h>
#include <linux/net_namespace.h>
#include <linux/if_xdp.h>
// abi/abi.h generated by mkall.go.
#include "abi/abi.h"
@@ -427,6 +428,8 @@ type RawSockaddrALG C.struct_sockaddr_alg
type RawSockaddrVM C.struct_sockaddr_vm
type RawSockaddrXDP C.struct_sockaddr_xdp
type RawSockaddr C.struct_sockaddr
type RawSockaddrAny C.struct_sockaddr_any
@@ -474,6 +477,7 @@ const (
SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can
SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg
SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm
SizeofSockaddrXDP = C.sizeof_struct_sockaddr_xdp
SizeofLinger = C.sizeof_struct_linger
SizeofIovec = C.sizeof_struct_iovec
SizeofIPMreq = C.sizeof_struct_ip_mreq
@@ -1565,3 +1569,15 @@ const (
NETNSA_PID = C.NETNSA_PID
NETNSA_FD = C.NETNSA_FD
)
// AF_XDP:
type XDPRingOffset C.struct_xdp_ring_offset
type XDPMmapOffsets C.struct_xdp_mmap_offsets
type XDPUmemReg C.struct_xdp_umem_reg
type XDPStatistics C.struct_xdp_statistics
type XDPDesc C.struct_xdp_desc