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