rpctype

package
Version: v0.0.0-...-a617004 Latest Latest
Warning

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

Go to latest
Published: Dec 3, 2021 License: Apache-2.0 Imports: 11 Imported by: 12

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Dial

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

func RPCCall

func RPCCall(addr string, timeScale time.Duration, method string, args, reply interface{}) 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
	CheckResult       *CheckArgs
	MemoryLeakFrames  []string
	DataRaceFrames    []string
	CoverFilterBitmap []byte
}

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 NewInputArgs

type NewInputArgs struct {
	Name string
	RPCInput
}

type NextExchangeArgs

type NextExchangeArgs struct {
	// Pool/VM are used to identify the instance on which the client is running.
	Pool, VM int
	// ProgIdx is used to uniquely identify the program for which the client is
	// sending results.
	ProgIdx int
	// 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
	// RunIdx is the number of times this program has been run on the kernel.
	RunIdx int
}

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

type NextExchangeRes

type NextExchangeRes struct {
	// RPCProg contains the serialized program that will be sent to the client.
	RPCProg
}

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

type PollArgs

type PollArgs struct {
	Name           string
	NeedCandidates bool
	MaxSignal      signal.Serial
	Stats          map[string]uint64
}

type PollRes

type PollRes struct {
	Candidates []RPCCandidate
	NewInputs  []RPCInput
	MaxSignal  signal.Serial
}

type RPCCandidate

type RPCCandidate struct {
	Prog      []byte
	Minimized bool
	Smashed   bool
}

type RPCClient

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

func NewRPCClient

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

func (*RPCClient) Call

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

func (*RPCClient) Close

func (cli *RPCClient) Close()

type RPCInput

type RPCInput struct {
	Call   string
	Prog   []byte
	Signal signal.Serial
	Cover  []uint32
}

type RPCProg

type RPCProg struct {
	Prog    []byte
	ProgIdx int
	RunIdx  int
}

type RPCServer

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

func NewRPCServer

func NewRPCServer(addr, name string, receiver interface{}) (*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 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.

Source Files

Jump to

Keyboard shortcuts

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