| // Copyright 2017 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. | |
| //go:build linux | |
| package ipv4 | |
| import ( | |
| "unsafe" | |
| "golang.org/x/net/bpf" | |
| "golang.org/x/net/internal/socket" | |
| "golang.org/x/sys/unix" | |
| ) | |
| func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { | |
| prog := unix.SockFprog{ | |
| Len: uint16(len(f)), | |
| Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), | |
| } | |
| b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] | |
| return so.Set(c, b) | |
| } |