gitee.com/ks-custle/core-gm@v0.0.0-20230922171213-b83bdd97b62c/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  	"gitee.com/ks-custle/core-gm/net/bpf"
    14  	"gitee.com/ks-custle/core-gm/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  }