github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/net/ipv4/sys_bpf.go (about) 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 "github.com/hxx258456/ccgo/net/bpf" 14 "github.com/hxx258456/ccgo/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 }