// Copyright 2015 syzkaller project authors. All rights reserved. // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. // Package rpctype contains types of message passed via net/rpc connections // between various parts of the system. package rpctype import ( "github.com/google/syzkaller/pkg/host" "github.com/google/syzkaller/pkg/ipc" "github.com/google/syzkaller/pkg/signal" ) type RPCInput struct { Call string Prog []byte Signal signal.Serial Cover []uint32 } type RPCCandidate struct { Prog []byte Minimized bool Smashed bool } type ConnectArgs struct { Name string } type ConnectRes struct { EnabledCalls []int GitRevision string TargetRevision string AllSandboxes bool CheckResult *CheckArgs } type CheckArgs struct { Name string Error string EnabledCalls map[string][]int DisabledCalls map[string][]SyscallReason Features *host.Features } type SyscallReason struct { ID int Reason string } type NewInputArgs struct { Name string RPCInput } type PollArgs struct { Name string NeedCandidates bool MaxSignal signal.Serial Stats map[string]uint64 } type PollRes struct { Candidates []RPCCandidate NewInputs []RPCInput MaxSignal signal.Serial } type HubConnectArgs struct { // Client/Key are used for authentication. Client string Key string // Manager name, must start with Client. Manager 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 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 struct { // Set of programs from other managers. 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 RunTestPollReq struct { Name string } type RunTestPollRes struct { ID int Bin []byte Prog []byte Cfg *ipc.Config Opts *ipc.ExecOpts Repeat int } type RunTestDoneArgs struct { Name string ID int Output []byte Info [][]ipc.CallInfo Error string }