control

package
v0.0.0-...-522126a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2019 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package control provides internal representations of socket control messages.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AlignDown

func AlignDown(length int, align uint) int

AlignDown rounds a down to an alignment. align must be a power of 2.

func AlignUp

func AlignUp(length int, align uint) int

AlignUp rounds a length up to an alignment. align must be a power of 2.

func CmsgsSpace

func CmsgsSpace(t *kernel.Task, cmsgs socket.ControlMessages) int

CmsgsSpace returns the number of bytes needed to fit the control messages represented in cmsgs.

func New

func New(t *kernel.Task, socketOrEndpoint interface{}, rights SCMRights) transport.ControlMessages

New creates default control messages if needed.

func PackControlMessages

func PackControlMessages(t *kernel.Task, cmsgs socket.ControlMessages, buf []byte) []byte

PackControlMessages packs control messages into the given buffer.

We skip control messages specific to Unix domain sockets.

Note that some control messages may be truncated if they do not fit under the capacity of buf.

func PackCredentials

func PackCredentials(t *kernel.Task, creds SCMCredentials, buf []byte, flags int) ([]byte, int)

PackCredentials packs the credentials in the control message (or default credentials if none) into a buffer.

func PackInq

func PackInq(t *kernel.Task, inq int32, buf []byte) []byte

PackInq packs a TCP_INQ socket control message.

func PackRights

func PackRights(t *kernel.Task, rights SCMRights, cloexec bool, buf []byte, flags int) ([]byte, int)

PackRights packs as many FDs as will fit into the unused capacity of buf.

func PackTClass

func PackTClass(t *kernel.Task, tClass int32, buf []byte) []byte

PackTClass packs an IPV6_TCLASS socket control message.

func PackTOS

func PackTOS(t *kernel.Task, tos int8, buf []byte) []byte

PackTOS packs an IP_TOS socket control message.

func PackTimestamp

func PackTimestamp(t *kernel.Task, timestamp int64, buf []byte) []byte

PackTimestamp packs a SO_TIMESTAMP socket control message.

func Parse

func Parse(t *kernel.Task, socketOrEndpoint interface{}, buf []byte) (socket.ControlMessages, error)

Parse parses a raw socket control message into portable objects.

Types

type RightsFiles

type RightsFiles []*fs.File

RightsFiles represents a SCM_RIGHTS socket control message. A reference is maintained for each fs.File and is release either when an FD is created or when the Release method is called.

+stateify savable

func (*RightsFiles) Clone

Clone implements transport.RightsControlMessage.Clone.

func (*RightsFiles) Files

func (fs *RightsFiles) Files(ctx context.Context, max int) (RightsFiles, bool)

Files implements SCMRights.Files.

func (*RightsFiles) Release

func (fs *RightsFiles) Release()

Release implements transport.RightsControlMessage.Release.

type SCMCredentials

type SCMCredentials interface {
	transport.CredentialsControlMessage

	// Credentials returns properly namespaced values for the sender's pid, uid
	// and gid.
	Credentials(t *kernel.Task) (kernel.ThreadID, auth.UID, auth.GID)
}

SCMCredentials represents a SCM_CREDENTIALS socket control message.

func MakeCreds

func MakeCreds(t *kernel.Task) SCMCredentials

MakeCreds creates default SCMCredentials.

func NewSCMCredentials

func NewSCMCredentials(t *kernel.Task, cred linux.ControlMessageCredentials) (SCMCredentials, error)

NewSCMCredentials creates a new SCM_CREDENTIALS socket control message representation.

type SCMRights

type SCMRights interface {
	transport.RightsControlMessage

	// Files returns up to max RightsFiles.
	//
	// Returned files are consumed and ownership is transferred to the caller.
	// Subsequent calls to Files will return the next files.
	Files(ctx context.Context, max int) (rf RightsFiles, truncated bool)
}

SCMRights represents a SCM_RIGHTS socket control message.

func NewSCMRights

func NewSCMRights(t *kernel.Task, fds []int32) (SCMRights, error)

NewSCMRights creates a new SCM_RIGHTS socket control message representation using local sentry FDs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL