]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add LSF support for linux
authorMikio Hara <mikioh.mikioh@gmail.com>
Mon, 20 Jun 2011 18:51:34 +0000 (14:51 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 20 Jun 2011 18:51:34 +0000 (14:51 -0400)
R=rsc
CC=golang-dev
https://golang.org/cl/4626041

src/pkg/syscall/Makefile
src/pkg/syscall/lsf_linux.go [new file with mode: 0644]
src/pkg/syscall/mkerrors.sh
src/pkg/syscall/types_linux.c
src/pkg/syscall/zerrors_linux_386.go
src/pkg/syscall/zerrors_linux_amd64.go
src/pkg/syscall/zerrors_linux_arm.go
src/pkg/syscall/ztypes_linux_386.go
src/pkg/syscall/ztypes_linux_amd64.go
src/pkg/syscall/ztypes_linux_arm.go

index 517b0e4d50426bfbe5379b26acf2a73737e54c23..c7f1b942c538cc36965f07d8b2eefca320e79fb2 100644 (file)
@@ -32,6 +32,7 @@ GOFILES_darwin=\
 
 GOFILES_linux=\
        exec_unix.go\
+       lsf_linux.go\
        netlink_linux.go\
        syscall_unix.go\
 
diff --git a/src/pkg/syscall/lsf_linux.go b/src/pkg/syscall/lsf_linux.go
new file mode 100644 (file)
index 0000000..f2bd2b7
--- /dev/null
@@ -0,0 +1,78 @@
+// Copyright 2011 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Linux socket filter
+
+package syscall
+
+import (
+       "unsafe"
+)
+
+func LsfStmt(code, k int) *SockFilter {
+       return &SockFilter{Code: uint16(code), K: uint32(k)}
+}
+
+func LsfJump(code, k, jt, jf int) *SockFilter {
+       return &SockFilter{Code: uint16(code), Jt: uint8(jt), Jf: uint8(jf), K: uint32(k)}
+}
+
+func LsfSocket(ifindex, proto int) (int, int) {
+       var lsall SockaddrLinklayer
+       s, e := Socket(AF_PACKET, SOCK_RAW, proto)
+       if e != 0 {
+               return 0, e
+       }
+       p := (*[2]byte)(unsafe.Pointer(&lsall.Protocol))
+       p[0] = byte(proto >> 8)
+       p[1] = byte(proto)
+       lsall.Ifindex = ifindex
+       e = Bind(s, &lsall)
+       if e != 0 {
+               Close(s)
+               return 0, e
+       }
+       return s, 0
+}
+
+type iflags struct {
+       name  [IFNAMSIZ]byte
+       flags uint16
+}
+
+func SetLsfPromisc(name string, m bool) int {
+       s, e := Socket(AF_INET, SOCK_DGRAM, 0)
+       if e != 0 {
+               return e
+       }
+       defer Close(s)
+       var ifl iflags
+       copy(ifl.name[:], []byte(name))
+       _, _, ep := Syscall(SYS_IOCTL, uintptr(s), SIOCGIFFLAGS, uintptr(unsafe.Pointer(&ifl)))
+       if e := int(ep); e != 0 {
+               return e
+       }
+       if m {
+               ifl.flags |= uint16(IFF_PROMISC)
+       } else {
+               ifl.flags &= ^uint16(IFF_PROMISC)
+       }
+       _, _, ep = Syscall(SYS_IOCTL, uintptr(s), SIOCSIFFLAGS, uintptr(unsafe.Pointer(&ifl)))
+       if e := int(ep); e != 0 {
+               return e
+       }
+       return 0
+}
+
+func AttachLsf(fd int, i []SockFilter) int {
+       var p SockFprog
+       p.Len = uint16(len(i))
+       p.Filter = (*SockFilter)(unsafe.Pointer(&i[0]))
+       return setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, uintptr(unsafe.Pointer(&p)), unsafe.Sizeof(p))
+}
+
+func DetachLsf(fd int) int {
+       var dummy int
+       return setsockopt(fd, SOL_SOCKET, SO_DETACH_FILTER, uintptr(unsafe.Pointer(&dummy)), unsafe.Sizeof(dummy))
+}
index 20d261a79c299f6f474e1fcad055adbd484faec5..51ac3356ffee1284e2f424d53ebd1a433d4c4bcf 100755 (executable)
@@ -30,7 +30,9 @@ includes_Linux='
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <linux/if_addr.h>
+#include <linux/if_ether.h>
 #include <linux/if_tun.h>
+#include <linux/filter.h>
 #include <linux/netlink.h>
 #include <linux/reboot.h>
 #include <linux/rtnetlink.h>
@@ -141,7 +143,7 @@ done
                $2 ~ /^LINUX_REBOOT_CMD_/ ||
                $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
                $2 !~ "NLA_TYPE_MASK" &&
-               $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|RTM|RTN|RTPROT|RTA|RTAX|RTNH|ARPHRD)_/ ||
+               $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|RTM|RTN|RTPROT|RTA|RTAX|RTNH|ARPHRD|ETH_P)_/ ||
                $2 ~ /^SIOC/ ||
                $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
                $2 ~ /^BIOC/ ||
index ce7f96764a747c1ad53418f19f8cb143ab83cf12..abb2a91a7fed3b262112a6c67681f348e60dc50a 100644 (file)
@@ -38,6 +38,7 @@ Input to godefs.  See also mkerrors.sh and mkall.sh
 #include <sys/user.h>
 #include <sys/utsname.h>
 #include <sys/wait.h>
+#include <linux/filter.h>
 #include <linux/netlink.h>
 #include <linux/rtnetlink.h>
 #include <time.h>
@@ -225,6 +226,16 @@ typedef struct ifaddrmsg $IfAddrmsg;
 typedef struct rtmsg $RtMsg;
 typedef struct rtnexthop $RtNexthop;
 
+// Linux socket filter
+
+enum {
+       $SizeofSockFilter = sizeof(struct sock_filter),
+       $SizeofSockFprog = sizeof(struct sock_fprog),
+};
+
+typedef struct sock_filter $SockFilter;
+typedef struct sock_fprog $SockFprog;
+
 // Inotify
 
 typedef struct inotify_event $InotifyEvent;
index 73caed44ccb119491d7316fb7dd3570f33a0582a..8d315813d3b8b7ca76c595135c48bd76067333d7 100644 (file)
@@ -106,6 +106,46 @@ const (
        ARPHRD_TUNNEL6                   = 0x301
        ARPHRD_VOID                      = 0xffff
        ARPHRD_X25                       = 0x10f
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0
+       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_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       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
        DT_BLK                           = 0x6
        DT_CHR                           = 0x2
        DT_DIR                           = 0x4
@@ -256,6 +296,68 @@ const (
        ESRMNT                           = 0x45
        ESTALE                           = 0x74
        ESTRPIPE                         = 0x56
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
        ETIME                            = 0x3e
        ETIMEDOUT                        = 0x6e
        ETOOMANYREFS                     = 0x6d
index 89260740dab2c7161776735e6ac1ab3926b3968c..8f9147818cb99a4a0513e931c03b8ee89bf377d9 100644 (file)
@@ -106,6 +106,46 @@ const (
        ARPHRD_TUNNEL6                   = 0x301
        ARPHRD_VOID                      = 0xffff
        ARPHRD_X25                       = 0x10f
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0
+       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_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       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
        DT_BLK                           = 0x6
        DT_CHR                           = 0x2
        DT_DIR                           = 0x4
@@ -256,6 +296,68 @@ const (
        ESRMNT                           = 0x45
        ESTALE                           = 0x74
        ESTRPIPE                         = 0x56
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
        ETIME                            = 0x3e
        ETIMEDOUT                        = 0x6e
        ETOOMANYREFS                     = 0x6d
index 50cdaf18af721683889989efd9cacddb11e14b83..64a74c0ff2f35ffc3380847341e3cabc3499b577 100644 (file)
@@ -106,6 +106,46 @@ const (
        ARPHRD_TUNNEL6                   = 0x301
        ARPHRD_VOID                      = 0xffff
        ARPHRD_X25                       = 0x10f
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0
+       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_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       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
        DT_BLK                           = 0x6
        DT_CHR                           = 0x2
        DT_DIR                           = 0x4
@@ -258,6 +298,68 @@ const (
        ESRMNT                           = 0x45
        ESTALE                           = 0x74
        ESTRPIPE                         = 0x56
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
        ETIME                            = 0x3e
        ETIMEDOUT                        = 0x6e
        ETOOMANYREFS                     = 0x6d
@@ -696,6 +798,9 @@ const (
        PTRACE_SINGLESTEP                = 0x9
        PTRACE_SYSCALL                   = 0x18
        PTRACE_TRACEME                   = 0
+       PT_DATA_ADDR                     = 0x10004
+       PT_TEXT_ADDR                     = 0x10000
+       PT_TEXT_END_ADDR                 = 0x10008
        RTAX_ADVMSS                      = 0x8
        RTAX_CWND                        = 0x7
        RTAX_FEATURES                    = 0xc
index 65c8b87db1c7254b988d0b6097496adf92453eae..252fbff74a21d0d924eb9f1daa5e2726deeaffa9 100644 (file)
@@ -100,6 +100,8 @@ const (
        SizeofIfAddrmsg         = 0x8
        SizeofRtmsg             = 0xc
        SizeofRtNexthop         = 0x8
+       SizeofSockFilter        = 0x8
+       SizeofSockFprog         = 0x8
        SizeofInotifyEvent      = 0x10
 )
 
@@ -400,6 +402,19 @@ type RtNexthop struct {
        Ifindex int32
 }
 
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len          uint16
+       Pad_godefs_0 [2]byte
+       Filter       *SockFilter
+}
+
 type InotifyEvent struct {
        Wd     int32
        Mask   uint32
index e26b6bfd2d37371b631d3c3b7ccd8349308640a4..520ba963ab03780cdee5eeee500d9cd420a9271b 100644 (file)
@@ -100,6 +100,8 @@ const (
        SizeofIfAddrmsg         = 0x8
        SizeofRtmsg             = 0xc
        SizeofRtNexthop         = 0x8
+       SizeofSockFilter        = 0x8
+       SizeofSockFprog         = 0x10
        SizeofInotifyEvent      = 0x10
 )
 
@@ -402,6 +404,19 @@ type RtNexthop struct {
        Ifindex int32
 }
 
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len          uint16
+       Pad_godefs_0 [6]byte
+       Filter       *SockFilter
+}
+
 type InotifyEvent struct {
        Wd     int32
        Mask   uint32
index ebd5379cb57252a12545a47d8863bdddba6b5e37..2421df081bc455212fa5cdb8d2fc4355d89eb543 100644 (file)
@@ -105,6 +105,8 @@ const (
        SizeofIfAddrmsg         = 0x8
        SizeofRtmsg             = 0xc
        SizeofRtNexthop         = 0x8
+       SizeofSockFilter        = 0x8
+       SizeofSockFprog         = 0x8
        SizeofInotifyEvent      = 0x10
 )
 
@@ -407,6 +409,19 @@ type RtNexthop struct {
        Ifindex int32
 }
 
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len          uint16
+       Pad_godefs_0 [2]byte
+       Filter       *SockFilter
+}
+
 type InotifyEvent struct {
        Wd     int32
        Mask   uint32