sys_bpf.go raw

   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  
   7  package ipv6
   8  
   9  import (
  10  	"unsafe"
  11  
  12  	"golang.org/x/net/bpf"
  13  	"golang.org/x/net/internal/socket"
  14  	"golang.org/x/sys/unix"
  15  )
  16  
  17  func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error {
  18  	prog := unix.SockFprog{
  19  		Len:    uint16(len(f)),
  20  		Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])),
  21  	}
  22  	b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog]
  23  	return so.Set(c, b)
  24  }
  25