]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add BPF support for darwin/386, darwin/amd64
authorMikio Hara <mikioh.mikioh@gmail.com>
Thu, 21 Apr 2011 20:58:20 +0000 (16:58 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 21 Apr 2011 20:58:20 +0000 (16:58 -0400)
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

src/pkg/syscall/mkerrors.sh
src/pkg/syscall/types_darwin.c
src/pkg/syscall/zerrors_darwin_386.go
src/pkg/syscall/zerrors_darwin_amd64.go
src/pkg/syscall/ztypes_darwin_386.go
src/pkg/syscall/ztypes_darwin_amd64.go

index 68a16842a73d358472fe89baec3a876bfe6ed6cd..0bfd9af1d2a48d4ead4432d7c4f033eda96be997 100755 (executable)
@@ -47,6 +47,7 @@ includes_Darwin='
 #include <sys/sysctl.h>
 #include <sys/mman.h>
 #include <sys/wait.h>
+#include <net/bpf.h>
 #include <net/if.h>
 #include <net/route.h>
 #include <netinet/in.h>
@@ -134,6 +135,7 @@ done
                $2 ~ /^SIOC/ ||
                $2 ~ /^(IFF|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
                $2 ~ /^BIOC/ ||
+               $2 !~ /^(BPF_TIMEVAL)$/ &&
                $2 ~ /^(BPF|DLT)_/ ||
                $2 !~ "WMESGLEN" &&
                $2 ~ /^W[A-Z0-9]+$/ {printf("\t$%s = %s,\n", $2, $2)}
index 4096bcfd9f91493635d2d26fc966ef0e51d09e62..666923a6866e2e78c3c132d0c3f4950de0e117ba 100644 (file)
@@ -29,6 +29,7 @@ Input to godefs.  See also mkerrors.sh and mkall.sh
 #include <sys/types.h>
 #include <sys/un.h>
 #include <sys/wait.h>
+#include <net/bpf.h>
 #include <net/if.h>
 #include <net/if_dl.h>
 #include <net/if_var.h>
@@ -59,6 +60,7 @@ typedef long long $_C_long_long;
 
 typedef struct timespec $Timespec;
 typedef struct timeval $Timeval;
+typedef struct timeval32 $Timeval32;
 
 // Processes
 
@@ -157,3 +159,19 @@ typedef struct if_data $IfData;
 typedef struct ifa_msghdr $IfaMsghdr;
 typedef struct rt_msghdr $RtMsghdr;
 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;
index 48f563f4457911a5002825a18981e542171ad69d..7bc1280d6e8e1fb82b08c422a269879353298ca6 100644 (file)
@@ -45,8 +45,109 @@ const (
        AF_SYSTEM                   = 0x20
        AF_UNIX                     = 0x1
        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_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
        EACCES                      = 0xd
        EADDRINUSE                  = 0x30
@@ -196,6 +297,7 @@ const (
        F_GETLK                     = 0x7
        F_GETOWN                    = 0x5
        F_GETPATH                   = 0x32
+       F_GETPROTECTIONCLASS        = 0x3e
        F_GLOBAL_NOCACHE            = 0x37
        F_LOG2PHYS                  = 0x31
        F_MARKDEPENDENCY            = 0x3c
@@ -212,6 +314,7 @@ const (
        F_SETLK                     = 0x8
        F_SETLKW                    = 0x9
        F_SETOWN                    = 0x6
+       F_SETPROTECTIONCLASS        = 0x3f
        F_SETSIZE                   = 0x2b
        F_THAW_FS                   = 0x36
        F_UNLCK                     = 0x2
@@ -459,6 +562,16 @@ const (
        IP_TOS                      = 0x3
        IP_TRAFFIC_MGT_BACKGROUND   = 0x41
        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_COPY                    = 0x2
        MAP_FILE                    = 0
@@ -556,6 +669,7 @@ const (
        RTF_DYNAMIC                 = 0x10
        RTF_GATEWAY                 = 0x2
        RTF_HOST                    = 0x4
+       RTF_IFREF                   = 0x4000000
        RTF_IFSCOPE                 = 0x1000000
        RTF_LLINFO                  = 0x400
        RTF_LOCAL                   = 0x200000
@@ -649,6 +763,7 @@ const (
        SIOCDIFADDR                 = 0x80206919
        SIOCDIFPHYADDR              = 0x80206941
        SIOCDLIFADDR                = 0x8118691f
+       SIOCGDRVSPEC                = 0xc01c697b
        SIOCGETSGCNT                = 0xc014721c
        SIOCGETVIFCNT               = 0xc014721b
        SIOCGETVLAN                 = 0xc020697f
@@ -680,8 +795,10 @@ const (
        SIOCGLOWAT                  = 0x40047303
        SIOCGPGRP                   = 0x40047309
        SIOCIFCREATE                = 0xc0206978
+       SIOCIFCREATE2               = 0xc020697a
        SIOCIFDESTROY               = 0x80206979
        SIOCRSLVMULTI               = 0xc008693b
+       SIOCSDRVSPEC                = 0x801c697b
        SIOCSETVLAN                 = 0x8020697e
        SIOCSHIWAT                  = 0x80047300
        SIOCSIFADDR                 = 0x8020690c
index 840ea13ceb22cc80e966a9f2e334973d78498dc3..d76f09220c1a3f0ec45bd884410aae1c8cd7bb51 100644 (file)
@@ -45,8 +45,109 @@ const (
        AF_SYSTEM                   = 0x20
        AF_UNIX                     = 0x1
        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_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
        EACCES                      = 0xd
        EADDRINUSE                  = 0x30
@@ -196,6 +297,7 @@ const (
        F_GETLK                     = 0x7
        F_GETOWN                    = 0x5
        F_GETPATH                   = 0x32
+       F_GETPROTECTIONCLASS        = 0x3e
        F_GLOBAL_NOCACHE            = 0x37
        F_LOG2PHYS                  = 0x31
        F_MARKDEPENDENCY            = 0x3c
@@ -212,6 +314,7 @@ const (
        F_SETLK                     = 0x8
        F_SETLKW                    = 0x9
        F_SETOWN                    = 0x6
+       F_SETPROTECTIONCLASS        = 0x3f
        F_SETSIZE                   = 0x2b
        F_THAW_FS                   = 0x36
        F_UNLCK                     = 0x2
@@ -459,6 +562,16 @@ const (
        IP_TOS                      = 0x3
        IP_TRAFFIC_MGT_BACKGROUND   = 0x41
        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_COPY                    = 0x2
        MAP_FILE                    = 0
@@ -556,6 +669,7 @@ const (
        RTF_DYNAMIC                 = 0x10
        RTF_GATEWAY                 = 0x2
        RTF_HOST                    = 0x4
+       RTF_IFREF                   = 0x4000000
        RTF_IFSCOPE                 = 0x1000000
        RTF_LLINFO                  = 0x400
        RTF_LOCAL                   = 0x200000
@@ -649,6 +763,7 @@ const (
        SIOCDIFADDR                 = 0x80206919
        SIOCDIFPHYADDR              = 0x80206941
        SIOCDLIFADDR                = 0x8118691f
+       SIOCGDRVSPEC                = 0xc028697b
        SIOCGETSGCNT                = 0xc014721c
        SIOCGETVIFCNT               = 0xc014721b
        SIOCGETVLAN                 = 0xc020697f
@@ -680,8 +795,10 @@ const (
        SIOCGLOWAT                  = 0x40047303
        SIOCGPGRP                   = 0x40047309
        SIOCIFCREATE                = 0xc0206978
+       SIOCIFCREATE2               = 0xc020697a
        SIOCIFDESTROY               = 0x80206979
        SIOCRSLVMULTI               = 0xc010693b
+       SIOCSDRVSPEC                = 0x8028697b
        SIOCSETVLAN                 = 0x8020697e
        SIOCSHIWAT                  = 0x80047300
        SIOCSIFADDR                 = 0x8020690c
index 736c654ab40137d3c08dbba205b7dd37685443b6..b3541778e046179d8613f300ecca485706eba41f 100644 (file)
@@ -29,6 +29,11 @@ const (
        SizeofIfaMsghdr        = 0x14
        SizeofRtMsghdr         = 0x5c
        SizeofRtMetrics        = 0x38
+       SizeofBpfVersion       = 0x4
+       SizeofBpfStat          = 0x8
+       SizeofBpfProgram       = 0x8
+       SizeofBpfInsn          = 0x8
+       SizeofBpfHdr           = 0x14
 )
 
 // Types
@@ -334,3 +339,33 @@ type RtMetrics struct {
        Pksent   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
+}
index 936a4e8040922c769e097eeee2c1d62104e9c2ef..d61c8b8de3ddfdd8b0d6f87712d74de2ea2abfd5 100644 (file)
@@ -29,6 +29,11 @@ const (
        SizeofIfaMsghdr        = 0x14
        SizeofRtMsghdr         = 0x5c
        SizeofRtMetrics        = 0x38
+       SizeofBpfVersion       = 0x4
+       SizeofBpfStat          = 0x8
+       SizeofBpfProgram       = 0x10
+       SizeofBpfInsn          = 0x8
+       SizeofBpfHdr           = 0x14
 )
 
 // Types
@@ -52,6 +57,11 @@ type Timeval struct {
        Pad_godefs_0 [4]byte
 }
 
+type Timeval32 struct {
+       Sec  int32
+       Usec int32
+}
+
 type Rusage struct {
        Utime    Timeval
        Stime    Timeval
@@ -229,7 +239,7 @@ type Msghdr struct {
        Name         *byte
        Namelen      uint32
        Pad_godefs_0 [4]byte
-       Iov          uint64
+       Iov          *Iovec
        Iovlen       int32
        Pad_godefs_1 [4]byte
        Control      *byte
@@ -292,7 +302,7 @@ type IfData struct {
        Noproto    uint32
        Recvtiming uint32
        Xmittiming uint32
-       Lastchange [8]byte /* timeval32 */
+       Lastchange Timeval32
        Unused2    uint32
        Hwassist   uint32
        Reserved1  uint32
@@ -339,3 +349,34 @@ type RtMetrics struct {
        Pksent   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
+}