diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 |
commit | 80f18fc933cf3f3e829c5455a1023d69f7b86e52 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /src/pkg/syscall/lsf_linux.go | |
parent | 28592ee1ea1f5cdffcf85472f9de0285d928cf12 (diff) | |
download | golang-80f18fc933cf3f3e829c5455a1023d69f7b86e52.tar.gz |
Imported Upstream version 60
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 f2bd2b757..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, 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)) -} |