// 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 aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || windows || zos

package socket

import (
	
	
)

func ( *Conn) ( *Message,  int) error {
	.raceWrite()
	var (
		     error
		         int
		      int
		 int
		      net.Addr
	)
	 := func( uintptr) bool {
		, , , ,  = recvmsg(, .Buffers, .OOB, , .network)
		return ioComplete(, )
	}
	if  := .c.Read();  != nil {
		return 
	}
	if  != nil {
		return os.NewSyscallError("recvmsg", )
	}
	.Addr = 
	.N = 
	.NN = 
	.Flags = 
	return nil
}

func ( *Conn) ( *Message,  int) error {
	.raceRead()
	var (
		 error
		     int
	)
	 := func( uintptr) bool {
		,  = sendmsg(, .Buffers, .OOB, .Addr, )
		return ioComplete(, )
	}
	if  := .c.Write();  != nil {
		return 
	}
	if  != nil {
		return os.NewSyscallError("sendmsg", )
	}
	.N = 
	.NN = len(.OOB)
	return nil
}