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 8package ipv4 9 10import ( 11 "unsafe" 12 13 "golang.org/x/net/bpf" 14 "golang.org/x/net/internal/socket" 15 "golang.org/x/sys/unix" 16) 17 18func (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} 26