1
0
mirror of https://github.com/golang/go synced 2024-11-13 17:40:23 -07:00

syscall: add BPF support for darwin/386, darwin/amd64

note: due to issue 1466 the Msghdr and BpfProgram
struct for src/pkg/syscall/ztypes_darwin_386.go,
src/pkg/syscall/ztypes_darwin_amd64.go had to be
edited after the godefs generation.

R=rsc
CC=golang-dev
https://golang.org/cl/4403042
This commit is contained in:
Mikio Hara 2011-04-21 16:58:20 -04:00 committed by Russ Cox
parent ee154f5df5
commit 380f4ab2ff
6 changed files with 332 additions and 2 deletions

View File

@ -47,6 +47,7 @@ includes_Darwin='
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <net/bpf.h>
#include <net/if.h> #include <net/if.h>
#include <net/route.h> #include <net/route.h>
#include <netinet/in.h> #include <netinet/in.h>
@ -134,6 +135,7 @@ done
$2 ~ /^SIOC/ || $2 ~ /^SIOC/ ||
$2 ~ /^(IFF|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ || $2 ~ /^(IFF|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
$2 ~ /^BIOC/ || $2 ~ /^BIOC/ ||
$2 !~ /^(BPF_TIMEVAL)$/ &&
$2 ~ /^(BPF|DLT)_/ || $2 ~ /^(BPF|DLT)_/ ||
$2 !~ "WMESGLEN" && $2 !~ "WMESGLEN" &&
$2 ~ /^W[A-Z0-9]+$/ {printf("\t$%s = %s,\n", $2, $2)} $2 ~ /^W[A-Z0-9]+$/ {printf("\t$%s = %s,\n", $2, $2)}

View File

@ -29,6 +29,7 @@ Input to godefs. See also mkerrors.sh and mkall.sh
#include <sys/types.h> #include <sys/types.h>
#include <sys/un.h> #include <sys/un.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <net/bpf.h>
#include <net/if.h> #include <net/if.h>
#include <net/if_dl.h> #include <net/if_dl.h>
#include <net/if_var.h> #include <net/if_var.h>
@ -59,6 +60,7 @@ typedef long long $_C_long_long;
typedef struct timespec $Timespec; typedef struct timespec $Timespec;
typedef struct timeval $Timeval; typedef struct timeval $Timeval;
typedef struct timeval32 $Timeval32;
// Processes // Processes
@ -157,3 +159,19 @@ typedef struct if_data $IfData;
typedef struct ifa_msghdr $IfaMsghdr; typedef struct ifa_msghdr $IfaMsghdr;
typedef struct rt_msghdr $RtMsghdr; typedef struct rt_msghdr $RtMsghdr;
typedef struct rt_metrics $RtMetrics; typedef struct rt_metrics $RtMetrics;
// Berkeley packet filter
enum {
$SizeofBpfVersion = sizeof(struct bpf_version),
$SizeofBpfStat = sizeof(struct bpf_stat),
$SizeofBpfProgram = sizeof(struct bpf_program),
$SizeofBpfInsn = sizeof(struct bpf_insn),
$SizeofBpfHdr = sizeof(struct bpf_hdr),
};
typedef struct bpf_version $BpfVersion;
typedef struct bpf_stat $BpfStat;
typedef struct bpf_program $BpfProgram;
typedef struct bpf_insn $BpfInsn;
typedef struct bpf_hdr $BpfHdr;

View File

@ -45,8 +45,109 @@ const (
AF_SYSTEM = 0x20 AF_SYSTEM = 0x20
AF_UNIX = 0x1 AF_UNIX = 0x1
AF_UNSPEC = 0 AF_UNSPEC = 0
BIOCFLUSH = 0x20004268
BIOCGBLEN = 0x40044266
BIOCGDLT = 0x4004426a
BIOCGDLTLIST = 0xc00c4279
BIOCGETIF = 0x4020426b
BIOCGHDRCMPLT = 0x40044274
BIOCGRSIG = 0x40044272
BIOCGRTIMEOUT = 0x4008426e
BIOCGSEESENT = 0x40044276
BIOCGSTATS = 0x4008426f
BIOCIMMEDIATE = 0x80044270
BIOCPROMISC = 0x20004269
BIOCSBLEN = 0xc0044266
BIOCSDLT = 0x80044278
BIOCSETF = 0x80084267
BIOCSETIF = 0x8020426c
BIOCSHDRCMPLT = 0x80044275
BIOCSRSIG = 0x80044273
BIOCSRTIMEOUT = 0x8008426d
BIOCSSEESENT = 0x80044277
BIOCVERSION = 0x40044271
BPF_A = 0x10
BPF_ABS = 0x20
BPF_ADD = 0
BPF_ALIGNMENT = 0x4
BPF_ALU = 0x4
BPF_AND = 0x50
BPF_B = 0x10
BPF_DIV = 0x30
BPF_H = 0x8
BPF_IMM = 0
BPF_IND = 0x40
BPF_JA = 0
BPF_JEQ = 0x10
BPF_JGE = 0x30
BPF_JGT = 0x20
BPF_JMP = 0x5
BPF_JSET = 0x40
BPF_K = 0
BPF_LD = 0
BPF_LDX = 0x1
BPF_LEN = 0x80
BPF_LSH = 0x60
BPF_MAJOR_VERSION = 0x1
BPF_MAXBUFSIZE = 0x80000
BPF_MAXINSNS = 0x200
BPF_MEM = 0x60
BPF_MEMWORDS = 0x10
BPF_MINBUFSIZE = 0x20
BPF_MINOR_VERSION = 0x1
BPF_MISC = 0x7
BPF_MSH = 0xa0
BPF_MUL = 0x20
BPF_NEG = 0x80
BPF_OR = 0x40
BPF_RELEASE = 0x30bb6
BPF_RET = 0x6
BPF_RSH = 0x70
BPF_ST = 0x2
BPF_STX = 0x3
BPF_SUB = 0x10
BPF_TAX = 0
BPF_TXA = 0x80
BPF_W = 0
BPF_X = 0x8
CTL_MAXNAME = 0xc CTL_MAXNAME = 0xc
CTL_NET = 0x4 CTL_NET = 0x4
DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
DLT_ARCNET = 0x7
DLT_ATM_CLIP = 0x13
DLT_ATM_RFC1483 = 0xb
DLT_AX25 = 0x3
DLT_CHAOS = 0x5
DLT_CHDLC = 0x68
DLT_C_HDLC = 0x68
DLT_EN10MB = 0x1
DLT_EN3MB = 0x2
DLT_FDDI = 0xa
DLT_IEEE802 = 0x6
DLT_IEEE802_11 = 0x69
DLT_IEEE802_11_RADIO = 0x7f
DLT_IEEE802_11_RADIO_AVS = 0xa3
DLT_LINUX_SLL = 0x71
DLT_LOOP = 0x6c
DLT_NULL = 0
DLT_PFLOG = 0x75
DLT_PFSYNC = 0x12
DLT_PPP = 0x9
DLT_PPP_BSDOS = 0x10
DLT_PPP_SERIAL = 0x32
DLT_PRONET = 0x4
DLT_RAW = 0xc
DLT_SLIP = 0x8
DLT_SLIP_BSDOS = 0xf
DT_BLK = 0x6
DT_CHR = 0x2
DT_DIR = 0x4
DT_FIFO = 0x1
DT_LNK = 0xa
DT_REG = 0x8
DT_SOCK = 0xc
DT_UNKNOWN = 0
DT_WHT = 0xe
E2BIG = 0x7 E2BIG = 0x7
EACCES = 0xd EACCES = 0xd
EADDRINUSE = 0x30 EADDRINUSE = 0x30
@ -196,6 +297,7 @@ const (
F_GETLK = 0x7 F_GETLK = 0x7
F_GETOWN = 0x5 F_GETOWN = 0x5
F_GETPATH = 0x32 F_GETPATH = 0x32
F_GETPROTECTIONCLASS = 0x3e
F_GLOBAL_NOCACHE = 0x37 F_GLOBAL_NOCACHE = 0x37
F_LOG2PHYS = 0x31 F_LOG2PHYS = 0x31
F_MARKDEPENDENCY = 0x3c F_MARKDEPENDENCY = 0x3c
@ -212,6 +314,7 @@ const (
F_SETLK = 0x8 F_SETLK = 0x8
F_SETLKW = 0x9 F_SETLKW = 0x9
F_SETOWN = 0x6 F_SETOWN = 0x6
F_SETPROTECTIONCLASS = 0x3f
F_SETSIZE = 0x2b F_SETSIZE = 0x2b
F_THAW_FS = 0x36 F_THAW_FS = 0x36
F_UNLCK = 0x2 F_UNLCK = 0x2
@ -459,6 +562,16 @@ const (
IP_TOS = 0x3 IP_TOS = 0x3
IP_TRAFFIC_MGT_BACKGROUND = 0x41 IP_TRAFFIC_MGT_BACKGROUND = 0x41
IP_TTL = 0x4 IP_TTL = 0x4
MADV_CAN_REUSE = 0x9
MADV_DONTNEED = 0x4
MADV_FREE = 0x5
MADV_FREE_REUSABLE = 0x7
MADV_FREE_REUSE = 0x8
MADV_NORMAL = 0
MADV_RANDOM = 0x1
MADV_SEQUENTIAL = 0x2
MADV_WILLNEED = 0x3
MADV_ZERO_WIRED_PAGES = 0x6
MAP_ANON = 0x1000 MAP_ANON = 0x1000
MAP_COPY = 0x2 MAP_COPY = 0x2
MAP_FILE = 0 MAP_FILE = 0
@ -556,6 +669,7 @@ const (
RTF_DYNAMIC = 0x10 RTF_DYNAMIC = 0x10
RTF_GATEWAY = 0x2 RTF_GATEWAY = 0x2
RTF_HOST = 0x4 RTF_HOST = 0x4
RTF_IFREF = 0x4000000
RTF_IFSCOPE = 0x1000000 RTF_IFSCOPE = 0x1000000
RTF_LLINFO = 0x400 RTF_LLINFO = 0x400
RTF_LOCAL = 0x200000 RTF_LOCAL = 0x200000
@ -649,6 +763,7 @@ const (
SIOCDIFADDR = 0x80206919 SIOCDIFADDR = 0x80206919
SIOCDIFPHYADDR = 0x80206941 SIOCDIFPHYADDR = 0x80206941
SIOCDLIFADDR = 0x8118691f SIOCDLIFADDR = 0x8118691f
SIOCGDRVSPEC = 0xc01c697b
SIOCGETSGCNT = 0xc014721c SIOCGETSGCNT = 0xc014721c
SIOCGETVIFCNT = 0xc014721b SIOCGETVIFCNT = 0xc014721b
SIOCGETVLAN = 0xc020697f SIOCGETVLAN = 0xc020697f
@ -680,8 +795,10 @@ const (
SIOCGLOWAT = 0x40047303 SIOCGLOWAT = 0x40047303
SIOCGPGRP = 0x40047309 SIOCGPGRP = 0x40047309
SIOCIFCREATE = 0xc0206978 SIOCIFCREATE = 0xc0206978
SIOCIFCREATE2 = 0xc020697a
SIOCIFDESTROY = 0x80206979 SIOCIFDESTROY = 0x80206979
SIOCRSLVMULTI = 0xc008693b SIOCRSLVMULTI = 0xc008693b
SIOCSDRVSPEC = 0x801c697b
SIOCSETVLAN = 0x8020697e SIOCSETVLAN = 0x8020697e
SIOCSHIWAT = 0x80047300 SIOCSHIWAT = 0x80047300
SIOCSIFADDR = 0x8020690c SIOCSIFADDR = 0x8020690c

View File

@ -45,8 +45,109 @@ const (
AF_SYSTEM = 0x20 AF_SYSTEM = 0x20
AF_UNIX = 0x1 AF_UNIX = 0x1
AF_UNSPEC = 0 AF_UNSPEC = 0
BIOCFLUSH = 0x20004268
BIOCGBLEN = 0x40044266
BIOCGDLT = 0x4004426a
BIOCGDLTLIST = 0xc00c4279
BIOCGETIF = 0x4020426b
BIOCGHDRCMPLT = 0x40044274
BIOCGRSIG = 0x40044272
BIOCGRTIMEOUT = 0x4008426e
BIOCGSEESENT = 0x40044276
BIOCGSTATS = 0x4008426f
BIOCIMMEDIATE = 0x80044270
BIOCPROMISC = 0x20004269
BIOCSBLEN = 0xc0044266
BIOCSDLT = 0x80044278
BIOCSETF = 0x80104267
BIOCSETIF = 0x8020426c
BIOCSHDRCMPLT = 0x80044275
BIOCSRSIG = 0x80044273
BIOCSRTIMEOUT = 0x8008426d
BIOCSSEESENT = 0x80044277
BIOCVERSION = 0x40044271
BPF_A = 0x10
BPF_ABS = 0x20
BPF_ADD = 0
BPF_ALIGNMENT = 0x4
BPF_ALU = 0x4
BPF_AND = 0x50
BPF_B = 0x10
BPF_DIV = 0x30
BPF_H = 0x8
BPF_IMM = 0
BPF_IND = 0x40
BPF_JA = 0
BPF_JEQ = 0x10
BPF_JGE = 0x30
BPF_JGT = 0x20
BPF_JMP = 0x5
BPF_JSET = 0x40
BPF_K = 0
BPF_LD = 0
BPF_LDX = 0x1
BPF_LEN = 0x80
BPF_LSH = 0x60
BPF_MAJOR_VERSION = 0x1
BPF_MAXBUFSIZE = 0x80000
BPF_MAXINSNS = 0x200
BPF_MEM = 0x60
BPF_MEMWORDS = 0x10
BPF_MINBUFSIZE = 0x20
BPF_MINOR_VERSION = 0x1
BPF_MISC = 0x7
BPF_MSH = 0xa0
BPF_MUL = 0x20
BPF_NEG = 0x80
BPF_OR = 0x40
BPF_RELEASE = 0x30bb6
BPF_RET = 0x6
BPF_RSH = 0x70
BPF_ST = 0x2
BPF_STX = 0x3
BPF_SUB = 0x10
BPF_TAX = 0
BPF_TXA = 0x80
BPF_W = 0
BPF_X = 0x8
CTL_MAXNAME = 0xc CTL_MAXNAME = 0xc
CTL_NET = 0x4 CTL_NET = 0x4
DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
DLT_ARCNET = 0x7
DLT_ATM_CLIP = 0x13
DLT_ATM_RFC1483 = 0xb
DLT_AX25 = 0x3
DLT_CHAOS = 0x5
DLT_CHDLC = 0x68
DLT_C_HDLC = 0x68
DLT_EN10MB = 0x1
DLT_EN3MB = 0x2
DLT_FDDI = 0xa
DLT_IEEE802 = 0x6
DLT_IEEE802_11 = 0x69
DLT_IEEE802_11_RADIO = 0x7f
DLT_IEEE802_11_RADIO_AVS = 0xa3
DLT_LINUX_SLL = 0x71
DLT_LOOP = 0x6c
DLT_NULL = 0
DLT_PFLOG = 0x75
DLT_PFSYNC = 0x12
DLT_PPP = 0x9
DLT_PPP_BSDOS = 0x10
DLT_PPP_SERIAL = 0x32
DLT_PRONET = 0x4
DLT_RAW = 0xc
DLT_SLIP = 0x8
DLT_SLIP_BSDOS = 0xf
DT_BLK = 0x6
DT_CHR = 0x2
DT_DIR = 0x4
DT_FIFO = 0x1
DT_LNK = 0xa
DT_REG = 0x8
DT_SOCK = 0xc
DT_UNKNOWN = 0
DT_WHT = 0xe
E2BIG = 0x7 E2BIG = 0x7
EACCES = 0xd EACCES = 0xd
EADDRINUSE = 0x30 EADDRINUSE = 0x30
@ -196,6 +297,7 @@ const (
F_GETLK = 0x7 F_GETLK = 0x7
F_GETOWN = 0x5 F_GETOWN = 0x5
F_GETPATH = 0x32 F_GETPATH = 0x32
F_GETPROTECTIONCLASS = 0x3e
F_GLOBAL_NOCACHE = 0x37 F_GLOBAL_NOCACHE = 0x37
F_LOG2PHYS = 0x31 F_LOG2PHYS = 0x31
F_MARKDEPENDENCY = 0x3c F_MARKDEPENDENCY = 0x3c
@ -212,6 +314,7 @@ const (
F_SETLK = 0x8 F_SETLK = 0x8
F_SETLKW = 0x9 F_SETLKW = 0x9
F_SETOWN = 0x6 F_SETOWN = 0x6
F_SETPROTECTIONCLASS = 0x3f
F_SETSIZE = 0x2b F_SETSIZE = 0x2b
F_THAW_FS = 0x36 F_THAW_FS = 0x36
F_UNLCK = 0x2 F_UNLCK = 0x2
@ -459,6 +562,16 @@ const (
IP_TOS = 0x3 IP_TOS = 0x3
IP_TRAFFIC_MGT_BACKGROUND = 0x41 IP_TRAFFIC_MGT_BACKGROUND = 0x41
IP_TTL = 0x4 IP_TTL = 0x4
MADV_CAN_REUSE = 0x9
MADV_DONTNEED = 0x4
MADV_FREE = 0x5
MADV_FREE_REUSABLE = 0x7
MADV_FREE_REUSE = 0x8
MADV_NORMAL = 0
MADV_RANDOM = 0x1
MADV_SEQUENTIAL = 0x2
MADV_WILLNEED = 0x3
MADV_ZERO_WIRED_PAGES = 0x6
MAP_ANON = 0x1000 MAP_ANON = 0x1000
MAP_COPY = 0x2 MAP_COPY = 0x2
MAP_FILE = 0 MAP_FILE = 0
@ -556,6 +669,7 @@ const (
RTF_DYNAMIC = 0x10 RTF_DYNAMIC = 0x10
RTF_GATEWAY = 0x2 RTF_GATEWAY = 0x2
RTF_HOST = 0x4 RTF_HOST = 0x4
RTF_IFREF = 0x4000000
RTF_IFSCOPE = 0x1000000 RTF_IFSCOPE = 0x1000000
RTF_LLINFO = 0x400 RTF_LLINFO = 0x400
RTF_LOCAL = 0x200000 RTF_LOCAL = 0x200000
@ -649,6 +763,7 @@ const (
SIOCDIFADDR = 0x80206919 SIOCDIFADDR = 0x80206919
SIOCDIFPHYADDR = 0x80206941 SIOCDIFPHYADDR = 0x80206941
SIOCDLIFADDR = 0x8118691f SIOCDLIFADDR = 0x8118691f
SIOCGDRVSPEC = 0xc028697b
SIOCGETSGCNT = 0xc014721c SIOCGETSGCNT = 0xc014721c
SIOCGETVIFCNT = 0xc014721b SIOCGETVIFCNT = 0xc014721b
SIOCGETVLAN = 0xc020697f SIOCGETVLAN = 0xc020697f
@ -680,8 +795,10 @@ const (
SIOCGLOWAT = 0x40047303 SIOCGLOWAT = 0x40047303
SIOCGPGRP = 0x40047309 SIOCGPGRP = 0x40047309
SIOCIFCREATE = 0xc0206978 SIOCIFCREATE = 0xc0206978
SIOCIFCREATE2 = 0xc020697a
SIOCIFDESTROY = 0x80206979 SIOCIFDESTROY = 0x80206979
SIOCRSLVMULTI = 0xc010693b SIOCRSLVMULTI = 0xc010693b
SIOCSDRVSPEC = 0x8028697b
SIOCSETVLAN = 0x8020697e SIOCSETVLAN = 0x8020697e
SIOCSHIWAT = 0x80047300 SIOCSHIWAT = 0x80047300
SIOCSIFADDR = 0x8020690c SIOCSIFADDR = 0x8020690c

View File

@ -29,6 +29,11 @@ const (
SizeofIfaMsghdr = 0x14 SizeofIfaMsghdr = 0x14
SizeofRtMsghdr = 0x5c SizeofRtMsghdr = 0x5c
SizeofRtMetrics = 0x38 SizeofRtMetrics = 0x38
SizeofBpfVersion = 0x4
SizeofBpfStat = 0x8
SizeofBpfProgram = 0x8
SizeofBpfInsn = 0x8
SizeofBpfHdr = 0x14
) )
// Types // Types
@ -334,3 +339,33 @@ type RtMetrics struct {
Pksent uint32 Pksent uint32
Filler [4]uint32 Filler [4]uint32
} }
type BpfVersion struct {
Major uint16
Minor uint16
}
type BpfStat struct {
Recv uint32
Drop uint32
}
type BpfProgram struct {
Len uint32
Insns *BpfInsn
}
type BpfInsn struct {
Code uint16
Jt uint8
Jf uint8
K uint32
}
type BpfHdr struct {
Tstamp Timeval
Caplen uint32
Datalen uint32
Hdrlen uint16
Pad_godefs_0 [2]byte
}

View File

@ -29,6 +29,11 @@ const (
SizeofIfaMsghdr = 0x14 SizeofIfaMsghdr = 0x14
SizeofRtMsghdr = 0x5c SizeofRtMsghdr = 0x5c
SizeofRtMetrics = 0x38 SizeofRtMetrics = 0x38
SizeofBpfVersion = 0x4
SizeofBpfStat = 0x8
SizeofBpfProgram = 0x10
SizeofBpfInsn = 0x8
SizeofBpfHdr = 0x14
) )
// Types // Types
@ -52,6 +57,11 @@ type Timeval struct {
Pad_godefs_0 [4]byte Pad_godefs_0 [4]byte
} }
type Timeval32 struct {
Sec int32
Usec int32
}
type Rusage struct { type Rusage struct {
Utime Timeval Utime Timeval
Stime Timeval Stime Timeval
@ -229,7 +239,7 @@ type Msghdr struct {
Name *byte Name *byte
Namelen uint32 Namelen uint32
Pad_godefs_0 [4]byte Pad_godefs_0 [4]byte
Iov uint64 Iov *Iovec
Iovlen int32 Iovlen int32
Pad_godefs_1 [4]byte Pad_godefs_1 [4]byte
Control *byte Control *byte
@ -292,7 +302,7 @@ type IfData struct {
Noproto uint32 Noproto uint32
Recvtiming uint32 Recvtiming uint32
Xmittiming uint32 Xmittiming uint32
Lastchange [8]byte /* timeval32 */ Lastchange Timeval32
Unused2 uint32 Unused2 uint32
Hwassist uint32 Hwassist uint32
Reserved1 uint32 Reserved1 uint32
@ -339,3 +349,34 @@ type RtMetrics struct {
Pksent uint32 Pksent uint32
Filler [4]uint32 Filler [4]uint32
} }
type BpfVersion struct {
Major uint16
Minor uint16
}
type BpfStat struct {
Recv uint32
Drop uint32
}
type BpfProgram struct {
Len uint32
Pad_godefs_0 [4]byte
Insns *BpfInsn
}
type BpfInsn struct {
Code uint16
Jt uint8
Jf uint8
K uint32
}
type BpfHdr struct {
Tstamp Timeval32
Caplen uint32
Datalen uint32
Hdrlen uint16
Pad_godefs_0 [2]byte
}