socktest

package
v0.0.15 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2023 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package socktest provides utilities for socket testing.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AfterFilter

type AfterFilter func(*Status) error

An AfterFilter represents a socket system call filter after an execution of a system call.

It will only be executed after a system call for a socket that has an entry in internal table. If the filter returns a non-nil error, the system call function returns the non-nil error.

type Cookie uint64

A Cookie represents a 3-tuple of a socket; address family, socket type and protocol number.

func (Cookie) Family

func (c Cookie) Family() int

Family returns an address family.

func (Cookie) Protocol

func (c Cookie) Protocol() int

Protocol returns a protocol number.

func (Cookie) Type

func (c Cookie) Type() int

Type returns a socket type.

type Filter

type Filter func(*Status) (AfterFilter, error)

A Filter represents a socket system call filter.

It will only be executed before a system call for a socket that has an entry in internal table. If the filter returns a non-nil error, the execution of system call will be canceled and the system call function returns the non-nil error. It can return a non-nil AfterFilter for filtering after the execution of the system call.

type FilterType

type FilterType int

A FilterType represents a filter type.

const (
	FilterSocket        FilterType = iota // for Socket
	FilterConnect                         // for Connect or ConnectEx
	FilterListen                          // for Listen
	FilterAccept                          // for Accept, Accept4 or AcceptEx
	FilterGetsockoptInt                   // for GetsockoptInt
	FilterClose                           // for Close or Closesocket
)

type Sockets

type Sockets map[int]Status

Sockets maps a socket descriptor to the status of socket.

type Stat

type Stat struct {
	Family   int // address family
	Type     int // socket type
	Protocol int // protocol number

	Opened    uint64 // number of sockets opened
	Connected uint64 // number of sockets connected
	Listened  uint64 // number of sockets listened
	Accepted  uint64 // number of sockets accepted
	Closed    uint64 // number of sockets closed

	OpenFailed    uint64 // number of sockets open failed
	ConnectFailed uint64 // number of sockets connect failed
	ListenFailed  uint64 // number of sockets listen failed
	AcceptFailed  uint64 // number of sockets accept failed
	CloseFailed   uint64 // number of sockets close failed
}

A Stat represents a per-cookie socket statistics.

func (Stat) String

func (st Stat) String() string

type Status

type Status struct {
	Cookie    Cookie
	Err       error // error status of socket system call
	SocketErr error // error status of socket by SO_ERROR
}

A Status represents the status of a socket.

func (Status) String

func (so Status) String() string

type Switch

type Switch struct {
	// contains filtered or unexported fields
}

A Switch represents a callpath point switch for socket system calls.

func (*Switch) Accept

func (sw *Switch) Accept(s int) (ns int, sa syscall.Sockaddr, err error)

Accept wraps syscall.Accept.

func (*Switch) Accept4

func (sw *Switch) Accept4(s, flags int) (ns int, sa syscall.Sockaddr, err error)

Accept4 wraps syscall.Accept4.

func (*Switch) Close

func (sw *Switch) Close(s int) (err error)

Close wraps syscall.Close.

func (*Switch) Connect

func (sw *Switch) Connect(s int, sa syscall.Sockaddr) (err error)

Connect wraps syscall.Connect.

func (*Switch) GetsockoptInt

func (sw *Switch) GetsockoptInt(s, level, opt int) (soerr int, err error)

GetsockoptInt wraps syscall.GetsockoptInt.

func (*Switch) Listen

func (sw *Switch) Listen(s, backlog int) (err error)

Listen wraps syscall.Listen.

func (*Switch) Set

func (sw *Switch) Set(t FilterType, f Filter)

Set deploys the socket system call filter f for the filter type t.

func (*Switch) Socket

func (sw *Switch) Socket(family, sotype, proto int) (s int, err error)

Socket wraps syscall.Socket.

func (*Switch) Sockets

func (sw *Switch) Sockets() Sockets

Sockets returns mappings of socket descriptor to socket status.

func (*Switch) Stats

func (sw *Switch) Stats() []Stat

Stats returns a list of per-cookie socket statistics.

Jump to

Keyboard shortcuts

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