shim

package
v1.0.0-alpha6 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2017 License: Apache-2.0, CC-BY-SA-4.0 Imports: 14 Imported by: 0

Documentation

Overview

Package shim is a generated protocol buffer package.

It is generated from these files:

github.com/containerd/containerd/linux/shim/v1/shim.proto

It has these top-level messages:

CreateTaskRequest
CreateTaskResponse
DeleteResponse
DeleteProcessRequest
ExecProcessRequest
ExecProcessResponse
ResizePtyRequest
StateRequest
StateResponse
KillRequest
CloseIORequest
ListPidsRequest
ListPidsResponse
CheckpointTaskRequest
ShimInfoResponse
UpdateTaskRequest
StartRequest
StartResponse

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthShim = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowShim   = fmt.Errorf("proto: integer overflow")
)

Functions

func RegisterShimServer

func RegisterShimServer(s *grpc.Server, srv ShimServer)

Types

type CheckpointTaskRequest

type CheckpointTaskRequest struct {
	Path    string               `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Options *google_protobuf.Any `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
}

func (*CheckpointTaskRequest) Descriptor

func (*CheckpointTaskRequest) Descriptor() ([]byte, []int)

func (*CheckpointTaskRequest) Marshal

func (m *CheckpointTaskRequest) Marshal() (dAtA []byte, err error)

func (*CheckpointTaskRequest) MarshalTo

func (m *CheckpointTaskRequest) MarshalTo(dAtA []byte) (int, error)

func (*CheckpointTaskRequest) ProtoMessage

func (*CheckpointTaskRequest) ProtoMessage()

func (*CheckpointTaskRequest) Reset

func (m *CheckpointTaskRequest) Reset()

func (*CheckpointTaskRequest) Size

func (m *CheckpointTaskRequest) Size() (n int)

func (*CheckpointTaskRequest) String

func (this *CheckpointTaskRequest) String() string

func (*CheckpointTaskRequest) Unmarshal

func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error

type CloseIORequest

type CloseIORequest struct {
	ID    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Stdin bool   `protobuf:"varint,2,opt,name=stdin,proto3" json:"stdin,omitempty"`
}

func (*CloseIORequest) Descriptor

func (*CloseIORequest) Descriptor() ([]byte, []int)

func (*CloseIORequest) Marshal

func (m *CloseIORequest) Marshal() (dAtA []byte, err error)

func (*CloseIORequest) MarshalTo

func (m *CloseIORequest) MarshalTo(dAtA []byte) (int, error)

func (*CloseIORequest) ProtoMessage

func (*CloseIORequest) ProtoMessage()

func (*CloseIORequest) Reset

func (m *CloseIORequest) Reset()

func (*CloseIORequest) Size

func (m *CloseIORequest) Size() (n int)

func (*CloseIORequest) String

func (this *CloseIORequest) String() string

func (*CloseIORequest) Unmarshal

func (m *CloseIORequest) Unmarshal(dAtA []byte) error

type CreateTaskRequest

type CreateTaskRequest struct {
	ID               string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Bundle           string                    `protobuf:"bytes,2,opt,name=bundle,proto3" json:"bundle,omitempty"`
	Runtime          string                    `protobuf:"bytes,3,opt,name=runtime,proto3" json:"runtime,omitempty"`
	Rootfs           []*containerd_types.Mount `protobuf:"bytes,4,rep,name=rootfs" json:"rootfs,omitempty"`
	Terminal         bool                      `protobuf:"varint,5,opt,name=terminal,proto3" json:"terminal,omitempty"`
	Stdin            string                    `protobuf:"bytes,6,opt,name=stdin,proto3" json:"stdin,omitempty"`
	Stdout           string                    `protobuf:"bytes,7,opt,name=stdout,proto3" json:"stdout,omitempty"`
	Stderr           string                    `protobuf:"bytes,8,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Checkpoint       string                    `protobuf:"bytes,9,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"`
	ParentCheckpoint string                    `protobuf:"bytes,10,opt,name=parent_checkpoint,json=parentCheckpoint,proto3" json:"parent_checkpoint,omitempty"`
	Options          *google_protobuf.Any      `protobuf:"bytes,11,opt,name=options" json:"options,omitempty"`
}

func (*CreateTaskRequest) Descriptor

func (*CreateTaskRequest) Descriptor() ([]byte, []int)

func (*CreateTaskRequest) Marshal

func (m *CreateTaskRequest) Marshal() (dAtA []byte, err error)

func (*CreateTaskRequest) MarshalTo

func (m *CreateTaskRequest) MarshalTo(dAtA []byte) (int, error)

func (*CreateTaskRequest) ProtoMessage

func (*CreateTaskRequest) ProtoMessage()

func (*CreateTaskRequest) Reset

func (m *CreateTaskRequest) Reset()

func (*CreateTaskRequest) Size

func (m *CreateTaskRequest) Size() (n int)

func (*CreateTaskRequest) String

func (this *CreateTaskRequest) String() string

func (*CreateTaskRequest) Unmarshal

func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error

type CreateTaskResponse

type CreateTaskResponse struct {
	Pid uint32 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
}

func (*CreateTaskResponse) Descriptor

func (*CreateTaskResponse) Descriptor() ([]byte, []int)

func (*CreateTaskResponse) Marshal

func (m *CreateTaskResponse) Marshal() (dAtA []byte, err error)

func (*CreateTaskResponse) MarshalTo

func (m *CreateTaskResponse) MarshalTo(dAtA []byte) (int, error)

func (*CreateTaskResponse) ProtoMessage

func (*CreateTaskResponse) ProtoMessage()

func (*CreateTaskResponse) Reset

func (m *CreateTaskResponse) Reset()

func (*CreateTaskResponse) Size

func (m *CreateTaskResponse) Size() (n int)

func (*CreateTaskResponse) String

func (this *CreateTaskResponse) String() string

func (*CreateTaskResponse) Unmarshal

func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error

type DeleteProcessRequest

type DeleteProcessRequest struct {
	ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (*DeleteProcessRequest) Descriptor

func (*DeleteProcessRequest) Descriptor() ([]byte, []int)

func (*DeleteProcessRequest) Marshal

func (m *DeleteProcessRequest) Marshal() (dAtA []byte, err error)

func (*DeleteProcessRequest) MarshalTo

func (m *DeleteProcessRequest) MarshalTo(dAtA []byte) (int, error)

func (*DeleteProcessRequest) ProtoMessage

func (*DeleteProcessRequest) ProtoMessage()

func (*DeleteProcessRequest) Reset

func (m *DeleteProcessRequest) Reset()

func (*DeleteProcessRequest) Size

func (m *DeleteProcessRequest) Size() (n int)

func (*DeleteProcessRequest) String

func (this *DeleteProcessRequest) String() string

func (*DeleteProcessRequest) Unmarshal

func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error

type DeleteResponse

type DeleteResponse struct {
	Pid        uint32    `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
	ExitStatus uint32    `protobuf:"varint,2,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"`
	ExitedAt   time.Time `protobuf:"bytes,3,opt,name=exited_at,json=exitedAt,stdtime" json:"exited_at"`
}

func (*DeleteResponse) Descriptor

func (*DeleteResponse) Descriptor() ([]byte, []int)

func (*DeleteResponse) Marshal

func (m *DeleteResponse) Marshal() (dAtA []byte, err error)

func (*DeleteResponse) MarshalTo

func (m *DeleteResponse) MarshalTo(dAtA []byte) (int, error)

func (*DeleteResponse) ProtoMessage

func (*DeleteResponse) ProtoMessage()

func (*DeleteResponse) Reset

func (m *DeleteResponse) Reset()

func (*DeleteResponse) Size

func (m *DeleteResponse) Size() (n int)

func (*DeleteResponse) String

func (this *DeleteResponse) String() string

func (*DeleteResponse) Unmarshal

func (m *DeleteResponse) Unmarshal(dAtA []byte) error

type ExecProcessRequest

type ExecProcessRequest struct {
	ID       string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Terminal bool                 `protobuf:"varint,2,opt,name=terminal,proto3" json:"terminal,omitempty"`
	Stdin    string               `protobuf:"bytes,3,opt,name=stdin,proto3" json:"stdin,omitempty"`
	Stdout   string               `protobuf:"bytes,4,opt,name=stdout,proto3" json:"stdout,omitempty"`
	Stderr   string               `protobuf:"bytes,5,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Spec     *google_protobuf.Any `protobuf:"bytes,6,opt,name=spec" json:"spec,omitempty"`
}

func (*ExecProcessRequest) Descriptor

func (*ExecProcessRequest) Descriptor() ([]byte, []int)

func (*ExecProcessRequest) Marshal

func (m *ExecProcessRequest) Marshal() (dAtA []byte, err error)

func (*ExecProcessRequest) MarshalTo

func (m *ExecProcessRequest) MarshalTo(dAtA []byte) (int, error)

func (*ExecProcessRequest) ProtoMessage

func (*ExecProcessRequest) ProtoMessage()

func (*ExecProcessRequest) Reset

func (m *ExecProcessRequest) Reset()

func (*ExecProcessRequest) Size

func (m *ExecProcessRequest) Size() (n int)

func (*ExecProcessRequest) String

func (this *ExecProcessRequest) String() string

func (*ExecProcessRequest) Unmarshal

func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error

type ExecProcessResponse

type ExecProcessResponse struct {
}

func (*ExecProcessResponse) Descriptor

func (*ExecProcessResponse) Descriptor() ([]byte, []int)

func (*ExecProcessResponse) Marshal

func (m *ExecProcessResponse) Marshal() (dAtA []byte, err error)

func (*ExecProcessResponse) MarshalTo

func (m *ExecProcessResponse) MarshalTo(dAtA []byte) (int, error)

func (*ExecProcessResponse) ProtoMessage

func (*ExecProcessResponse) ProtoMessage()

func (*ExecProcessResponse) Reset

func (m *ExecProcessResponse) Reset()

func (*ExecProcessResponse) Size

func (m *ExecProcessResponse) Size() (n int)

func (*ExecProcessResponse) String

func (this *ExecProcessResponse) String() string

func (*ExecProcessResponse) Unmarshal

func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error

type KillRequest

type KillRequest struct {
	ID     string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Signal uint32 `protobuf:"varint,2,opt,name=signal,proto3" json:"signal,omitempty"`
	All    bool   `protobuf:"varint,3,opt,name=all,proto3" json:"all,omitempty"`
}

func (*KillRequest) Descriptor

func (*KillRequest) Descriptor() ([]byte, []int)

func (*KillRequest) Marshal

func (m *KillRequest) Marshal() (dAtA []byte, err error)

func (*KillRequest) MarshalTo

func (m *KillRequest) MarshalTo(dAtA []byte) (int, error)

func (*KillRequest) ProtoMessage

func (*KillRequest) ProtoMessage()

func (*KillRequest) Reset

func (m *KillRequest) Reset()

func (*KillRequest) Size

func (m *KillRequest) Size() (n int)

func (*KillRequest) String

func (this *KillRequest) String() string

func (*KillRequest) Unmarshal

func (m *KillRequest) Unmarshal(dAtA []byte) error

type ListPidsRequest

type ListPidsRequest struct {
	ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (*ListPidsRequest) Descriptor

func (*ListPidsRequest) Descriptor() ([]byte, []int)

func (*ListPidsRequest) Marshal

func (m *ListPidsRequest) Marshal() (dAtA []byte, err error)

func (*ListPidsRequest) MarshalTo

func (m *ListPidsRequest) MarshalTo(dAtA []byte) (int, error)

func (*ListPidsRequest) ProtoMessage

func (*ListPidsRequest) ProtoMessage()

func (*ListPidsRequest) Reset

func (m *ListPidsRequest) Reset()

func (*ListPidsRequest) Size

func (m *ListPidsRequest) Size() (n int)

func (*ListPidsRequest) String

func (this *ListPidsRequest) String() string

func (*ListPidsRequest) Unmarshal

func (m *ListPidsRequest) Unmarshal(dAtA []byte) error

type ListPidsResponse

type ListPidsResponse struct {
	Pids []uint32 `protobuf:"varint,1,rep,packed,name=pids" json:"pids,omitempty"`
}

func (*ListPidsResponse) Descriptor

func (*ListPidsResponse) Descriptor() ([]byte, []int)

func (*ListPidsResponse) Marshal

func (m *ListPidsResponse) Marshal() (dAtA []byte, err error)

func (*ListPidsResponse) MarshalTo

func (m *ListPidsResponse) MarshalTo(dAtA []byte) (int, error)

func (*ListPidsResponse) ProtoMessage

func (*ListPidsResponse) ProtoMessage()

func (*ListPidsResponse) Reset

func (m *ListPidsResponse) Reset()

func (*ListPidsResponse) Size

func (m *ListPidsResponse) Size() (n int)

func (*ListPidsResponse) String

func (this *ListPidsResponse) String() string

func (*ListPidsResponse) Unmarshal

func (m *ListPidsResponse) Unmarshal(dAtA []byte) error

type ResizePtyRequest

type ResizePtyRequest struct {
	ID     string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Width  uint32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"`
	Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
}

func (*ResizePtyRequest) Descriptor

func (*ResizePtyRequest) Descriptor() ([]byte, []int)

func (*ResizePtyRequest) Marshal

func (m *ResizePtyRequest) Marshal() (dAtA []byte, err error)

func (*ResizePtyRequest) MarshalTo

func (m *ResizePtyRequest) MarshalTo(dAtA []byte) (int, error)

func (*ResizePtyRequest) ProtoMessage

func (*ResizePtyRequest) ProtoMessage()

func (*ResizePtyRequest) Reset

func (m *ResizePtyRequest) Reset()

func (*ResizePtyRequest) Size

func (m *ResizePtyRequest) Size() (n int)

func (*ResizePtyRequest) String

func (this *ResizePtyRequest) String() string

func (*ResizePtyRequest) Unmarshal

func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error

type ShimClient

type ShimClient interface {
	// State returns shim and task state information.
	State(ctx context.Context, in *StateRequest, opts ...grpc.CallOption) (*StateResponse, error)
	Create(ctx context.Context, in *CreateTaskRequest, opts ...grpc.CallOption) (*CreateTaskResponse, error)
	Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error)
	Delete(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*DeleteResponse, error)
	DeleteProcess(ctx context.Context, in *DeleteProcessRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
	ListPids(ctx context.Context, in *ListPidsRequest, opts ...grpc.CallOption) (*ListPidsResponse, error)
	Pause(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	Resume(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	Checkpoint(ctx context.Context, in *CheckpointTaskRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	Kill(ctx context.Context, in *KillRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	Exec(ctx context.Context, in *ExecProcessRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	ResizePty(ctx context.Context, in *ResizePtyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	CloseIO(ctx context.Context, in *CloseIORequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
	// ShimInfo returns information about the shim.
	ShimInfo(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*ShimInfoResponse, error)
	Update(ctx context.Context, in *UpdateTaskRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
}

func NewShimClient

func NewShimClient(cc *grpc.ClientConn) ShimClient

type ShimInfoResponse

type ShimInfoResponse struct {
	ShimPid uint32 `protobuf:"varint,1,opt,name=shim_pid,json=shimPid,proto3" json:"shim_pid,omitempty"`
}

func (*ShimInfoResponse) Descriptor

func (*ShimInfoResponse) Descriptor() ([]byte, []int)

func (*ShimInfoResponse) Marshal

func (m *ShimInfoResponse) Marshal() (dAtA []byte, err error)

func (*ShimInfoResponse) MarshalTo

func (m *ShimInfoResponse) MarshalTo(dAtA []byte) (int, error)

func (*ShimInfoResponse) ProtoMessage

func (*ShimInfoResponse) ProtoMessage()

func (*ShimInfoResponse) Reset

func (m *ShimInfoResponse) Reset()

func (*ShimInfoResponse) Size

func (m *ShimInfoResponse) Size() (n int)

func (*ShimInfoResponse) String

func (this *ShimInfoResponse) String() string

func (*ShimInfoResponse) Unmarshal

func (m *ShimInfoResponse) Unmarshal(dAtA []byte) error

type StartRequest

type StartRequest struct {
	ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (*StartRequest) Descriptor

func (*StartRequest) Descriptor() ([]byte, []int)

func (*StartRequest) Marshal

func (m *StartRequest) Marshal() (dAtA []byte, err error)

func (*StartRequest) MarshalTo

func (m *StartRequest) MarshalTo(dAtA []byte) (int, error)

func (*StartRequest) ProtoMessage

func (*StartRequest) ProtoMessage()

func (*StartRequest) Reset

func (m *StartRequest) Reset()

func (*StartRequest) Size

func (m *StartRequest) Size() (n int)

func (*StartRequest) String

func (this *StartRequest) String() string

func (*StartRequest) Unmarshal

func (m *StartRequest) Unmarshal(dAtA []byte) error

type StartResponse

type StartResponse struct {
	ID  string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Pid uint32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
}

func (*StartResponse) Descriptor

func (*StartResponse) Descriptor() ([]byte, []int)

func (*StartResponse) Marshal

func (m *StartResponse) Marshal() (dAtA []byte, err error)

func (*StartResponse) MarshalTo

func (m *StartResponse) MarshalTo(dAtA []byte) (int, error)

func (*StartResponse) ProtoMessage

func (*StartResponse) ProtoMessage()

func (*StartResponse) Reset

func (m *StartResponse) Reset()

func (*StartResponse) Size

func (m *StartResponse) Size() (n int)

func (*StartResponse) String

func (this *StartResponse) String() string

func (*StartResponse) Unmarshal

func (m *StartResponse) Unmarshal(dAtA []byte) error

type StateRequest

type StateRequest struct {
	ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (*StateRequest) Descriptor

func (*StateRequest) Descriptor() ([]byte, []int)

func (*StateRequest) Marshal

func (m *StateRequest) Marshal() (dAtA []byte, err error)

func (*StateRequest) MarshalTo

func (m *StateRequest) MarshalTo(dAtA []byte) (int, error)

func (*StateRequest) ProtoMessage

func (*StateRequest) ProtoMessage()

func (*StateRequest) Reset

func (m *StateRequest) Reset()

func (*StateRequest) Size

func (m *StateRequest) Size() (n int)

func (*StateRequest) String

func (this *StateRequest) String() string

func (*StateRequest) Unmarshal

func (m *StateRequest) Unmarshal(dAtA []byte) error

type StateResponse

type StateResponse struct {
	ID         string                     `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Bundle     string                     `protobuf:"bytes,2,opt,name=bundle,proto3" json:"bundle,omitempty"`
	Pid        uint32                     `protobuf:"varint,3,opt,name=pid,proto3" json:"pid,omitempty"`
	Status     containerd_v1_types.Status `protobuf:"varint,4,opt,name=status,proto3,enum=containerd.v1.types.Status" json:"status,omitempty"`
	Stdin      string                     `protobuf:"bytes,5,opt,name=stdin,proto3" json:"stdin,omitempty"`
	Stdout     string                     `protobuf:"bytes,6,opt,name=stdout,proto3" json:"stdout,omitempty"`
	Stderr     string                     `protobuf:"bytes,7,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Terminal   bool                       `protobuf:"varint,8,opt,name=terminal,proto3" json:"terminal,omitempty"`
	ExitStatus uint32                     `protobuf:"varint,9,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"`
	ExitedAt   time.Time                  `protobuf:"bytes,10,opt,name=exited_at,json=exitedAt,stdtime" json:"exited_at"`
}

func (*StateResponse) Descriptor

func (*StateResponse) Descriptor() ([]byte, []int)

func (*StateResponse) Marshal

func (m *StateResponse) Marshal() (dAtA []byte, err error)

func (*StateResponse) MarshalTo

func (m *StateResponse) MarshalTo(dAtA []byte) (int, error)

func (*StateResponse) ProtoMessage

func (*StateResponse) ProtoMessage()

func (*StateResponse) Reset

func (m *StateResponse) Reset()

func (*StateResponse) Size

func (m *StateResponse) Size() (n int)

func (*StateResponse) String

func (this *StateResponse) String() string

func (*StateResponse) Unmarshal

func (m *StateResponse) Unmarshal(dAtA []byte) error

type UpdateTaskRequest

type UpdateTaskRequest struct {
	Resources *google_protobuf.Any `protobuf:"bytes,1,opt,name=resources" json:"resources,omitempty"`
}

func (*UpdateTaskRequest) Descriptor

func (*UpdateTaskRequest) Descriptor() ([]byte, []int)

func (*UpdateTaskRequest) Marshal

func (m *UpdateTaskRequest) Marshal() (dAtA []byte, err error)

func (*UpdateTaskRequest) MarshalTo

func (m *UpdateTaskRequest) MarshalTo(dAtA []byte) (int, error)

func (*UpdateTaskRequest) ProtoMessage

func (*UpdateTaskRequest) ProtoMessage()

func (*UpdateTaskRequest) Reset

func (m *UpdateTaskRequest) Reset()

func (*UpdateTaskRequest) Size

func (m *UpdateTaskRequest) Size() (n int)

func (*UpdateTaskRequest) String

func (this *UpdateTaskRequest) String() string

func (*UpdateTaskRequest) Unmarshal

func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error

Jump to

Keyboard shortcuts

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