Documentation ¶
Overview ¶
Package control provides internal representations of socket control messages.
Index ¶
- func AlignDown(length int, align uint) int
- func AlignUp(length int, align uint) int
- func CmsgsSpace(t *kernel.Task, cmsgs socket.ControlMessages) int
- func New(t *kernel.Task, socketOrEndpoint interface{}, rights SCMRights) transport.ControlMessages
- func PackControlMessages(t *kernel.Task, cmsgs socket.ControlMessages, buf []byte) []byte
- func PackCredentials(t *kernel.Task, creds SCMCredentials, buf []byte, flags int) ([]byte, int)
- func PackInq(t *kernel.Task, inq int32, buf []byte) []byte
- func PackRights(t *kernel.Task, rights SCMRights, cloexec bool, buf []byte, flags int) ([]byte, int)
- func PackTClass(t *kernel.Task, tClass int32, buf []byte) []byte
- func PackTOS(t *kernel.Task, tos int8, buf []byte) []byte
- func PackTimestamp(t *kernel.Task, timestamp int64, buf []byte) []byte
- func Parse(t *kernel.Task, socketOrEndpoint interface{}, buf []byte) (socket.ControlMessages, error)
- type RightsFiles
- type SCMCredentials
- type SCMRights
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 ¶
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 ¶
PackCredentials packs the credentials in the control message (or default credentials if none) into a buffer.
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 ¶
PackTClass packs an IPV6_TCLASS socket control message.
func PackTimestamp ¶
PackTimestamp packs a SO_TIMESTAMP socket control message.
Types ¶
type RightsFiles ¶
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 ¶
func (fs *RightsFiles) Clone() transport.RightsControlMessage
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.