package net
import (
)
type rawConn struct {
fd *netFD
}
func ( *rawConn) () bool { return != nil && .fd != nil }
func ( *rawConn) ( func(uintptr)) error {
if !.ok() {
return syscall.EINVAL
}
:= .fd.pfd.RawControl()
runtime.KeepAlive(.fd)
if != nil {
= &OpError{Op: "raw-control", Net: .fd.net, Source: nil, Addr: .fd.laddr, Err: }
}
return
}
func ( *rawConn) ( func(uintptr) bool) error {
if !.ok() {
return syscall.EINVAL
}
:= .fd.pfd.RawRead()
runtime.KeepAlive(.fd)
if != nil {
= &OpError{Op: "raw-read", Net: .fd.net, Source: .fd.laddr, Addr: .fd.raddr, Err: }
}
return
}
func ( *rawConn) ( func(uintptr) bool) error {
if !.ok() {
return syscall.EINVAL
}
:= .fd.pfd.RawWrite()
runtime.KeepAlive(.fd)
if != nil {
= &OpError{Op: "raw-write", Net: .fd.net, Source: .fd.laddr, Addr: .fd.raddr, Err: }
}
return
}
func ( *netFD) (*rawConn, error) {
return &rawConn{fd: }, nil
}
type rawListener struct {
rawConn
}
func ( *rawListener) (func(uintptr) bool) error {
return syscall.EINVAL
}
func ( *rawListener) (func(uintptr) bool) error {
return syscall.EINVAL
}
func ( *netFD) (*rawListener, error) {
return &rawListener{rawConn{fd: }}, nil
}