diff options
author | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
---|---|---|
committer | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
commit | f154da9e12608589e8d5f0508f908a0c3e88a1bb (patch) | |
tree | f8255d51e10c6f1e0ed69702200b966c9556a431 /src/pkg/syscall/lsf_linux.go | |
parent | 8d8329ed5dfb9622c82a9fbec6fd99a580f9c9f6 (diff) | |
download | golang-upstream/1.4.tar.gz |
Imported Upstream version 1.4upstream/1.4
Diffstat (limited to 'src/pkg/syscall/lsf_linux.go')
-rw-r--r-- | src/pkg/syscall/lsf_linux.go | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/pkg/syscall/lsf_linux.go b/src/pkg/syscall/lsf_linux.go deleted file mode 100644 index ee07fea3f..000000000 --- a/src/pkg/syscall/lsf_linux.go +++ /dev/null @@ -1,78 +0,0 @@ -// 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, error) { - var lsall SockaddrLinklayer - s, e := Socket(AF_PACKET, SOCK_RAW, proto) - if e != nil { - 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 != nil { - Close(s) - return 0, e - } - return s, nil -} - -type iflags struct { - name [IFNAMSIZ]byte - flags uint16 -} - -func SetLsfPromisc(name string, m bool) error { - s, e := Socket(AF_INET, SOCK_DGRAM, 0) - if e != nil { - 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 ep != 0 { - return Errno(ep) - } - 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 ep != 0 { - return Errno(ep) - } - return nil -} - -func AttachLsf(fd int, i []SockFilter) error { - var p SockFprog - p.Len = uint16(len(i)) - p.Filter = (*SockFilter)(unsafe.Pointer(&i[0])) - return setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, unsafe.Pointer(&p), unsafe.Sizeof(p)) -} - -func DetachLsf(fd int) error { - var dummy int - return setsockopt(fd, SOL_SOCKET, SO_DETACH_FILTER, unsafe.Pointer(&dummy), unsafe.Sizeof(dummy)) -} |