sys_bpf.go (611B)
1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build linux 6 // +build linux 7 8 package ipv4 9 10 import ( 11 "unsafe" 12 13 "golang.org/x/net/bpf" 14 "golang.org/x/net/internal/socket" 15 "golang.org/x/sys/unix" 16 ) 17 18 func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { 19 prog := unix.SockFprog{ 20 Len: uint16(len(f)), 21 Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), 22 } 23 b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] 24 return so.Set(c, b) 25 }