rpctype

package
v0.0.0-...-af24b05 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 13 Imported by: 62

Documentation

Overview

Package rpctype contains types of message passed via net/rpc connections between various parts of the system.

Index

Constants

View Source
const (
	NoTask int64 = math.MaxInt64
)

Variables

This section is empty.

Functions

func Dial

func Dial(addr string, timeScale time.Duration) (net.Conn, error)

Types

type CheckArgs

type CheckArgs struct {
	Name          string
	Error         string
	EnabledCalls  map[string][]int
	DisabledCalls map[string][]SyscallReason
	Features      *host.Features
	GlobFiles     map[string][]string
}

type ConnectArgs

type ConnectArgs struct {
	Name        string
	MachineInfo []byte
	Modules     []host.KernelModule
}

type ConnectRes

type ConnectRes struct {
	EnabledCalls   []int
	GitRevision    string
	TargetRevision string
	AllSandboxes   bool
	// This is forwarded from CheckArgs, if checking was already done.
	Features          *host.Features
	MemoryLeakFrames  []string
	DataRaceFrames    []string
	CoverFilterBitmap []byte
}

type ExchangeInfoReply

type ExchangeInfoReply struct {
	Requests      []ExecutionRequest
	NewMaxSignal  []uint32
	DropMaxSignal []uint32
}

ExchangeInfoReply is a reply to ExchangeInfoRequest.

type ExchangeInfoRequest

type ExchangeInfoRequest struct {
	Name       string
	NeedProgs  int
	StatsDelta map[string]uint64
	Results    []ExecutionResult
	Latency    time.Duration // latency of the previous ExchangeInfo request
}

ExchangeInfoRequest is periodically sent by syz-fuzzer to syz-manager.

type ExecTask

type ExecTask struct {
	Prog []byte
	ID   int64
}

TODO: merge ExecutionRequest and ExecTask.

type ExecutingRequest

type ExecutingRequest struct {
	Name   string
	ID     int64
	ProcID int
	Try    int
}

ExecutingRequest is notification from the fuzzer that it started executing the program ProgID. We want this request to be as small and as fast as possible b/c we want it to reach manager (or at least leave the VM) before it crashes executing this program.

type ExecutionRequest

type ExecutionRequest struct {
	ID               int64
	ProgData         []byte
	NeedCover        bool
	NeedRawCover     bool
	NeedHints        bool
	NeedSignal       SignalType
	SignalFilter     signal.Signal
	SignalFilterCall int
}

ExecutionRequest describes the task of executing a particular program. Corresponds to Fuzzer.Request.

type ExecutionResult

type ExecutionResult struct {
	ID     int64
	ProcID int
	Try    int
	Info   ipc.ProgInfo
}

ExecutionResult is sent after ExecutionRequest is completed.

type HubConnectArgs

type HubConnectArgs struct {
	// Client/Key are used for authentication.
	Client string
	// The key may be a secret password or the oauth token prefixed by "Bearer ".
	Key string
	// Manager name, must start with Client.
	Manager string
	// See pkg/mgrconfig.Config.HubDomain.
	Domain string
	// Manager has started with an empty corpus and requests whole hub corpus.
	Fresh bool
	// Set of system call names supported by this manager.
	// Used to filter out programs with unsupported calls.
	Calls []string
	// Current manager corpus.
	Corpus [][]byte
}

type HubInput

type HubInput struct {
	// Domain of the source manager.
	Domain string
	Prog   []byte
}

type HubSyncArgs

type HubSyncArgs struct {
	// see HubConnectArgs.
	Client     string
	Key        string
	Manager    string
	NeedRepros bool
	// Programs added to corpus since last sync or connect.
	Add [][]byte
	// Hashes of programs removed from corpus since last sync or connect.
	Del []string
	// Repros found since last sync.
	Repros [][]byte
}

type HubSyncRes

type HubSyncRes struct {
	// Set of inputs from other managers.
	Inputs []HubInput
	// Same as Inputs but for legacy managers that don't understand new format (remove later).
	Progs [][]byte
	// Set of repros from other managers.
	Repros [][]byte
	// Number of remaining pending programs,
	// if >0 manager should do sync again.
	More int
}

type NextExchangeArgs

type NextExchangeArgs struct {
	// Pool/VM are used to identify the instance on which the client is running.
	Pool, VM int
	// ExecTaskID is used to uniquely identify the program for which the client is
	// sending results.
	ExecTaskID int64
	// Hanged is set to true if the program for which we are sending results
	// was killed due to hanging.
	Hanged bool
	// Info contains information about the execution of each system call in the
	// program.
	Info ipc.ProgInfo
}

NextExchangeArgs contains the data passed from client to server namely identification information of the VM and program execution results.

type NextExchangeRes

type NextExchangeRes struct {
	ExecTask
}

NextExchaneRes contains the data passed from server to client namely programs to execute on the VM.

type RPCClient

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

func NewRPCClient

func NewRPCClient(addr string, timeScale time.Duration, useTimeouts, useCompression bool) (*RPCClient, error)

func (*RPCClient) AsyncCall

func (cli *RPCClient) AsyncCall(method string, args interface{})

func (*RPCClient) Call

func (cli *RPCClient) Call(method string, args, reply interface{}) error

func (*RPCClient) Close

func (cli *RPCClient) Close()

type RPCServer

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

func NewRPCServer

func NewRPCServer(addr, name string, receiver interface{}, useCompression bool) (*RPCServer, error)

func (*RPCServer) Addr

func (serv *RPCServer) Addr() net.Addr

func (*RPCServer) Serve

func (serv *RPCServer) Serve()

type RunTestDoneArgs

type RunTestDoneArgs struct {
	Name   string
	ID     int
	Output []byte
	Info   []*ipc.ProgInfo
	Error  string
}

type RunTestPollReq

type RunTestPollReq struct {
	Name string
}

type RunTestPollRes

type RunTestPollRes struct {
	ID     int
	Bin    []byte
	Prog   []byte
	Cfg    *ipc.Config
	Opts   *ipc.ExecOpts
	Repeat int
}

type RunnerConnectArgs

type RunnerConnectArgs struct {
	Pool, VM int
}

type RunnerConnectRes

type RunnerConnectRes struct {
	// CheckUnsupportedCalls is set to true if the Runner needs to query the kernel
	// for unsupported system calls and report them back to the server.
	CheckUnsupportedCalls bool
}

type SignalType

type SignalType int
const (
	NoSignal  SignalType = 0 // we don't need any signal
	NewSignal SignalType = 1 // we need the newly seen signal
	AllSignal SignalType = 2 // we need all signal
)

type SyscallReason

type SyscallReason struct {
	ID     int
	Reason string
}

type UpdateUnsupportedArgs

type UpdateUnsupportedArgs struct {
	// Pool is used to identify the checked kernel.
	Pool int
	// UnsupportedCalls contains the ID's of system calls not supported by the
	// client and the reason for this.
	UnsupportedCalls []SyscallReason
}

UpdateUnsupportedArgs contains the data passed from client to server in an UpdateSupported call, namely the system calls not supported by the client's kernel.

Jump to

Keyboard shortcuts

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