abf

package
v2.4.0-alpha+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package abf is a generated VPP binary API for 'abf' module.

It consists of:

 7 enums
 5 aliases
11 types
 1 union
10 messages
 5 services

Index

Constants

View Source
const (
	// ModuleName is the name of this module.
	ModuleName = "abf"
	// APIVersion is the API version of this module.
	APIVersion = "1.0.0"
	// VersionCrc is the CRC of this module.
	VersionCrc = 0x56330065
)

Variables

View Source
var AddressFamily_name = map[uint32]string{
	0: "ADDRESS_IP4",
	1: "ADDRESS_IP6",
}
View Source
var AddressFamily_value = map[string]uint32{
	"ADDRESS_IP4": 0,
	"ADDRESS_IP6": 1,
}
View Source
var FibPathFlags_name = map[uint32]string{
	0: "FIB_API_PATH_FLAG_NONE",
	1: "FIB_API_PATH_FLAG_RESOLVE_VIA_ATTACHED",
	2: "FIB_API_PATH_FLAG_RESOLVE_VIA_HOST",
	4: "FIB_API_PATH_FLAG_POP_PW_CW",
}
View Source
var FibPathFlags_value = map[string]uint32{
	"FIB_API_PATH_FLAG_NONE":                 0,
	"FIB_API_PATH_FLAG_RESOLVE_VIA_ATTACHED": 1,
	"FIB_API_PATH_FLAG_RESOLVE_VIA_HOST":     2,
	"FIB_API_PATH_FLAG_POP_PW_CW":            4,
}
View Source
var FibPathNhProto_name = map[uint32]string{
	0: "FIB_API_PATH_NH_PROTO_IP4",
	1: "FIB_API_PATH_NH_PROTO_IP6",
	2: "FIB_API_PATH_NH_PROTO_MPLS",
	3: "FIB_API_PATH_NH_PROTO_ETHERNET",
	4: "FIB_API_PATH_NH_PROTO_BIER",
}
View Source
var FibPathNhProto_value = map[string]uint32{
	"FIB_API_PATH_NH_PROTO_IP4":      0,
	"FIB_API_PATH_NH_PROTO_IP6":      1,
	"FIB_API_PATH_NH_PROTO_MPLS":     2,
	"FIB_API_PATH_NH_PROTO_ETHERNET": 3,
	"FIB_API_PATH_NH_PROTO_BIER":     4,
}
View Source
var FibPathType_name = map[uint32]string{
	0:  "FIB_API_PATH_TYPE_NORMAL",
	1:  "FIB_API_PATH_TYPE_LOCAL",
	2:  "FIB_API_PATH_TYPE_DROP",
	3:  "FIB_API_PATH_TYPE_UDP_ENCAP",
	4:  "FIB_API_PATH_TYPE_BIER_IMP",
	5:  "FIB_API_PATH_TYPE_ICMP_UNREACH",
	6:  "FIB_API_PATH_TYPE_ICMP_PROHIBIT",
	7:  "FIB_API_PATH_TYPE_SOURCE_LOOKUP",
	8:  "FIB_API_PATH_TYPE_DVR",
	9:  "FIB_API_PATH_TYPE_INTERFACE_RX",
	10: "FIB_API_PATH_TYPE_CLASSIFY",
}
View Source
var FibPathType_value = map[string]uint32{
	"FIB_API_PATH_TYPE_NORMAL":        0,
	"FIB_API_PATH_TYPE_LOCAL":         1,
	"FIB_API_PATH_TYPE_DROP":          2,
	"FIB_API_PATH_TYPE_UDP_ENCAP":     3,
	"FIB_API_PATH_TYPE_BIER_IMP":      4,
	"FIB_API_PATH_TYPE_ICMP_UNREACH":  5,
	"FIB_API_PATH_TYPE_ICMP_PROHIBIT": 6,
	"FIB_API_PATH_TYPE_SOURCE_LOOKUP": 7,
	"FIB_API_PATH_TYPE_DVR":           8,
	"FIB_API_PATH_TYPE_INTERFACE_RX":  9,
	"FIB_API_PATH_TYPE_CLASSIFY":      10,
}
View Source
var IPDscp_name = map[uint8]string{
	0:  "IP_API_DSCP_CS0",
	8:  "IP_API_DSCP_CS1",
	10: "IP_API_DSCP_AF11",
	12: "IP_API_DSCP_AF12",
	14: "IP_API_DSCP_AF13",
	16: "IP_API_DSCP_CS2",
	18: "IP_API_DSCP_AF21",
	20: "IP_API_DSCP_AF22",
	22: "IP_API_DSCP_AF23",
	24: "IP_API_DSCP_CS3",
	26: "IP_API_DSCP_AF31",
	28: "IP_API_DSCP_AF32",
	30: "IP_API_DSCP_AF33",
	32: "IP_API_DSCP_CS4",
	34: "IP_API_DSCP_AF41",
	36: "IP_API_DSCP_AF42",
	38: "IP_API_DSCP_AF43",
	40: "IP_API_DSCP_CS5",
	46: "IP_API_DSCP_EF",
	48: "IP_API_DSCP_CS6",
	50: "IP_API_DSCP_CS7",
}
View Source
var IPDscp_value = map[string]uint8{
	"IP_API_DSCP_CS0":  0,
	"IP_API_DSCP_CS1":  8,
	"IP_API_DSCP_AF11": 10,
	"IP_API_DSCP_AF12": 12,
	"IP_API_DSCP_AF13": 14,
	"IP_API_DSCP_CS2":  16,
	"IP_API_DSCP_AF21": 18,
	"IP_API_DSCP_AF22": 20,
	"IP_API_DSCP_AF23": 22,
	"IP_API_DSCP_CS3":  24,
	"IP_API_DSCP_AF31": 26,
	"IP_API_DSCP_AF32": 28,
	"IP_API_DSCP_AF33": 30,
	"IP_API_DSCP_CS4":  32,
	"IP_API_DSCP_AF41": 34,
	"IP_API_DSCP_AF42": 36,
	"IP_API_DSCP_AF43": 38,
	"IP_API_DSCP_CS5":  40,
	"IP_API_DSCP_EF":   46,
	"IP_API_DSCP_CS6":  48,
	"IP_API_DSCP_CS7":  50,
}
View Source
var IPEcn_name = map[uint8]string{
	0: "IP_API_ECN_NONE",
	1: "IP_API_ECN_ECT0",
	2: "IP_API_ECN_ECT1",
	3: "IP_API_ECN_CE",
}
View Source
var IPEcn_value = map[string]uint8{
	"IP_API_ECN_NONE": 0,
	"IP_API_ECN_ECT0": 1,
	"IP_API_ECN_ECT1": 2,
	"IP_API_ECN_CE":   3,
}
View Source
var IPProto_name = map[uint32]string{
	0:   "IP_API_PROTO_HOPOPT",
	1:   "IP_API_PROTO_ICMP",
	2:   "IP_API_PROTO_IGMP",
	6:   "IP_API_PROTO_TCP",
	17:  "IP_API_PROTO_UDP",
	47:  "IP_API_PROTO_GRE",
	50:  "IP_API_PROTO_AH",
	51:  "IP_API_PROTO_ESP",
	88:  "IP_API_PROTO_EIGRP",
	89:  "IP_API_PROTO_OSPF",
	132: "IP_API_PROTO_SCTP",
	255: "IP_API_PROTO_RESERVED",
}
View Source
var IPProto_value = map[string]uint32{
	"IP_API_PROTO_HOPOPT":   0,
	"IP_API_PROTO_ICMP":     1,
	"IP_API_PROTO_IGMP":     2,
	"IP_API_PROTO_TCP":      6,
	"IP_API_PROTO_UDP":      17,
	"IP_API_PROTO_GRE":      47,
	"IP_API_PROTO_AH":       50,
	"IP_API_PROTO_ESP":      51,
	"IP_API_PROTO_EIGRP":    88,
	"IP_API_PROTO_OSPF":     89,
	"IP_API_PROTO_SCTP":     132,
	"IP_API_PROTO_RESERVED": 255,
}

Functions

func AllMessages

func AllMessages() []api.Message

Messages returns list of all messages in this module.

Types

type AbfItfAttach

type AbfItfAttach struct {
	PolicyID  uint32
	SwIfIndex uint32
	Priority  uint32
	IsIPv6    uint8
}

AbfItfAttach represents VPP binary API type 'abf_itf_attach'.

func (*AbfItfAttach) GetTypeName

func (*AbfItfAttach) GetTypeName() string

type AbfItfAttachAddDel

type AbfItfAttachAddDel struct {
	IsAdd  uint8
	Attach AbfItfAttach
}

AbfItfAttachAddDel represents VPP binary API message 'abf_itf_attach_add_del'.

func (*AbfItfAttachAddDel) GetCrcString

func (*AbfItfAttachAddDel) GetCrcString() string

func (*AbfItfAttachAddDel) GetMessageName

func (*AbfItfAttachAddDel) GetMessageName() string

func (*AbfItfAttachAddDel) GetMessageType

func (*AbfItfAttachAddDel) GetMessageType() api.MessageType

type AbfItfAttachAddDelReply

type AbfItfAttachAddDelReply struct {
	Retval int32
}

AbfItfAttachAddDelReply represents VPP binary API message 'abf_itf_attach_add_del_reply'.

func (*AbfItfAttachAddDelReply) GetCrcString

func (*AbfItfAttachAddDelReply) GetCrcString() string

func (*AbfItfAttachAddDelReply) GetMessageName

func (*AbfItfAttachAddDelReply) GetMessageName() string

func (*AbfItfAttachAddDelReply) GetMessageType

func (*AbfItfAttachAddDelReply) GetMessageType() api.MessageType

type AbfItfAttachDetails

type AbfItfAttachDetails struct {
	Attach AbfItfAttach
}

AbfItfAttachDetails represents VPP binary API message 'abf_itf_attach_details'.

func (*AbfItfAttachDetails) GetCrcString

func (*AbfItfAttachDetails) GetCrcString() string

func (*AbfItfAttachDetails) GetMessageName

func (*AbfItfAttachDetails) GetMessageName() string

func (*AbfItfAttachDetails) GetMessageType

func (*AbfItfAttachDetails) GetMessageType() api.MessageType

type AbfItfAttachDump

type AbfItfAttachDump struct{}

AbfItfAttachDump represents VPP binary API message 'abf_itf_attach_dump'.

func (*AbfItfAttachDump) GetCrcString

func (*AbfItfAttachDump) GetCrcString() string

func (*AbfItfAttachDump) GetMessageName

func (*AbfItfAttachDump) GetMessageName() string

func (*AbfItfAttachDump) GetMessageType

func (*AbfItfAttachDump) GetMessageType() api.MessageType

type AbfPluginGetVersion

type AbfPluginGetVersion struct{}

AbfPluginGetVersion represents VPP binary API message 'abf_plugin_get_version'.

func (*AbfPluginGetVersion) GetCrcString

func (*AbfPluginGetVersion) GetCrcString() string

func (*AbfPluginGetVersion) GetMessageName

func (*AbfPluginGetVersion) GetMessageName() string

func (*AbfPluginGetVersion) GetMessageType

func (*AbfPluginGetVersion) GetMessageType() api.MessageType

type AbfPluginGetVersionReply

type AbfPluginGetVersionReply struct {
	Major uint32
	Minor uint32
}

AbfPluginGetVersionReply represents VPP binary API message 'abf_plugin_get_version_reply'.

func (*AbfPluginGetVersionReply) GetCrcString

func (*AbfPluginGetVersionReply) GetCrcString() string

func (*AbfPluginGetVersionReply) GetMessageName

func (*AbfPluginGetVersionReply) GetMessageName() string

func (*AbfPluginGetVersionReply) GetMessageType

func (*AbfPluginGetVersionReply) GetMessageType() api.MessageType

type AbfPolicy

type AbfPolicy struct {
	PolicyID uint32
	ACLIndex uint32
	NPaths   uint8 `struc:"sizeof=Paths"`
	Paths    []FibPath
}

AbfPolicy represents VPP binary API type 'abf_policy'.

func (*AbfPolicy) GetTypeName

func (*AbfPolicy) GetTypeName() string

type AbfPolicyAddDel

type AbfPolicyAddDel struct {
	IsAdd  uint8
	Policy AbfPolicy
}

AbfPolicyAddDel represents VPP binary API message 'abf_policy_add_del'.

func (*AbfPolicyAddDel) GetCrcString

func (*AbfPolicyAddDel) GetCrcString() string

func (*AbfPolicyAddDel) GetMessageName

func (*AbfPolicyAddDel) GetMessageName() string

func (*AbfPolicyAddDel) GetMessageType

func (*AbfPolicyAddDel) GetMessageType() api.MessageType

type AbfPolicyAddDelReply

type AbfPolicyAddDelReply struct {
	Retval int32
}

AbfPolicyAddDelReply represents VPP binary API message 'abf_policy_add_del_reply'.

func (*AbfPolicyAddDelReply) GetCrcString

func (*AbfPolicyAddDelReply) GetCrcString() string

func (*AbfPolicyAddDelReply) GetMessageName

func (*AbfPolicyAddDelReply) GetMessageName() string

func (*AbfPolicyAddDelReply) GetMessageType

func (*AbfPolicyAddDelReply) GetMessageType() api.MessageType

type AbfPolicyDetails

type AbfPolicyDetails struct {
	Policy AbfPolicy
}

AbfPolicyDetails represents VPP binary API message 'abf_policy_details'.

func (*AbfPolicyDetails) GetCrcString

func (*AbfPolicyDetails) GetCrcString() string

func (*AbfPolicyDetails) GetMessageName

func (*AbfPolicyDetails) GetMessageName() string

func (*AbfPolicyDetails) GetMessageType

func (*AbfPolicyDetails) GetMessageType() api.MessageType

type AbfPolicyDump

type AbfPolicyDump struct{}

AbfPolicyDump represents VPP binary API message 'abf_policy_dump'.

func (*AbfPolicyDump) GetCrcString

func (*AbfPolicyDump) GetCrcString() string

func (*AbfPolicyDump) GetMessageName

func (*AbfPolicyDump) GetMessageName() string

func (*AbfPolicyDump) GetMessageType

func (*AbfPolicyDump) GetMessageType() api.MessageType

type Address

type Address struct {
	Af AddressFamily
	Un AddressUnion
}

Address represents VPP binary API type 'address'.

func (*Address) GetTypeName

func (*Address) GetTypeName() string

type AddressFamily

type AddressFamily uint32

AddressFamily represents VPP binary API enum 'address_family'.

const (
	ADDRESS_IP4 AddressFamily = 0
	ADDRESS_IP6 AddressFamily = 1
)

func (AddressFamily) String

func (x AddressFamily) String() string

type AddressUnion

type AddressUnion struct {
	XXX_UnionData [16]byte
}

AddressUnion represents VPP binary API union 'address_union'.

func AddressUnionIP4

func AddressUnionIP4(a IP4Address) (u AddressUnion)

func AddressUnionIP6

func AddressUnionIP6(a IP6Address) (u AddressUnion)

func (*AddressUnion) GetIP4

func (u *AddressUnion) GetIP4() (a IP4Address)

func (*AddressUnion) GetIP6

func (u *AddressUnion) GetIP6() (a IP6Address)

func (*AddressUnion) GetTypeName

func (*AddressUnion) GetTypeName() string

func (*AddressUnion) SetIP4

func (u *AddressUnion) SetIP4(a IP4Address)

func (*AddressUnion) SetIP6

func (u *AddressUnion) SetIP6(a IP6Address)

type AddressWithPrefix

type AddressWithPrefix Prefix

AddressWithPrefix represents VPP binary API alias 'address_with_prefix'.

type FibMplsLabel

type FibMplsLabel struct {
	IsUniform uint8
	Label     uint32
	TTL       uint8
	Exp       uint8
}

FibMplsLabel represents VPP binary API type 'fib_mpls_label'.

func (*FibMplsLabel) GetTypeName

func (*FibMplsLabel) GetTypeName() string

type FibPath

type FibPath struct {
	SwIfIndex  uint32
	TableID    uint32
	RpfID      uint32
	Weight     uint8
	Preference uint8
	Type       FibPathType
	Flags      FibPathFlags
	Proto      FibPathNhProto
	Nh         FibPathNh
	NLabels    uint8 `struc:"sizeof=LabelStack"` // MANUALLY FIXED
	LabelStack []FibMplsLabel
}

FibPath represents VPP binary API type 'fib_path'.

func (*FibPath) GetTypeName

func (*FibPath) GetTypeName() string

type FibPathFlags

type FibPathFlags uint32

FibPathFlags represents VPP binary API enum 'fib_path_flags'.

const (
	FIB_API_PATH_FLAG_NONE                 FibPathFlags = 0
	FIB_API_PATH_FLAG_RESOLVE_VIA_ATTACHED FibPathFlags = 1
	FIB_API_PATH_FLAG_RESOLVE_VIA_HOST     FibPathFlags = 2
	FIB_API_PATH_FLAG_POP_PW_CW            FibPathFlags = 4
)

func (FibPathFlags) String

func (x FibPathFlags) String() string

type FibPathNh

type FibPathNh struct {
	Address            AddressUnion
	ViaLabel           uint32
	ObjID              uint32
	ClassifyTableIndex uint32
}

FibPathNh represents VPP binary API type 'fib_path_nh'.

func (*FibPathNh) GetTypeName

func (*FibPathNh) GetTypeName() string

type FibPathNhProto

type FibPathNhProto uint32

FibPathNhProto represents VPP binary API enum 'fib_path_nh_proto'.

const (
	FIB_API_PATH_NH_PROTO_IP4      FibPathNhProto = 0
	FIB_API_PATH_NH_PROTO_IP6      FibPathNhProto = 1
	FIB_API_PATH_NH_PROTO_MPLS     FibPathNhProto = 2
	FIB_API_PATH_NH_PROTO_ETHERNET FibPathNhProto = 3
	FIB_API_PATH_NH_PROTO_BIER     FibPathNhProto = 4
)

func (FibPathNhProto) String

func (x FibPathNhProto) String() string

type FibPathType

type FibPathType uint32

FibPathType represents VPP binary API enum 'fib_path_type'.

const (
	FIB_API_PATH_TYPE_NORMAL        FibPathType = 0
	FIB_API_PATH_TYPE_LOCAL         FibPathType = 1
	FIB_API_PATH_TYPE_DROP          FibPathType = 2
	FIB_API_PATH_TYPE_UDP_ENCAP     FibPathType = 3
	FIB_API_PATH_TYPE_BIER_IMP      FibPathType = 4
	FIB_API_PATH_TYPE_ICMP_UNREACH  FibPathType = 5
	FIB_API_PATH_TYPE_ICMP_PROHIBIT FibPathType = 6
	FIB_API_PATH_TYPE_SOURCE_LOOKUP FibPathType = 7
	FIB_API_PATH_TYPE_DVR           FibPathType = 8
	FIB_API_PATH_TYPE_INTERFACE_RX  FibPathType = 9
	FIB_API_PATH_TYPE_CLASSIFY      FibPathType = 10
)

func (FibPathType) String

func (x FibPathType) String() string

type IP4Address

type IP4Address [4]uint8

IP4Address represents VPP binary API alias 'ip4_address'.

type IP4AddressWithPrefix

type IP4AddressWithPrefix IP4Prefix

IP4AddressWithPrefix represents VPP binary API alias 'ip4_address_with_prefix'.

type IP4Prefix

type IP4Prefix struct {
	Address IP4Address
	Len     uint8
}

IP4Prefix represents VPP binary API type 'ip4_prefix'.

func (*IP4Prefix) GetTypeName

func (*IP4Prefix) GetTypeName() string

type IP6Address

type IP6Address [16]uint8

IP6Address represents VPP binary API alias 'ip6_address'.

type IP6AddressWithPrefix

type IP6AddressWithPrefix IP6Prefix

IP6AddressWithPrefix represents VPP binary API alias 'ip6_address_with_prefix'.

type IP6Prefix

type IP6Prefix struct {
	Address IP6Address
	Len     uint8
}

IP6Prefix represents VPP binary API type 'ip6_prefix'.

func (*IP6Prefix) GetTypeName

func (*IP6Prefix) GetTypeName() string

type IPDscp

type IPDscp uint8

IPDscp represents VPP binary API enum 'ip_dscp'.

const (
	IP_API_DSCP_CS0  IPDscp = 0
	IP_API_DSCP_CS1  IPDscp = 8
	IP_API_DSCP_AF11 IPDscp = 10
	IP_API_DSCP_AF12 IPDscp = 12
	IP_API_DSCP_AF13 IPDscp = 14
	IP_API_DSCP_CS2  IPDscp = 16
	IP_API_DSCP_AF21 IPDscp = 18
	IP_API_DSCP_AF22 IPDscp = 20
	IP_API_DSCP_AF23 IPDscp = 22
	IP_API_DSCP_CS3  IPDscp = 24
	IP_API_DSCP_AF31 IPDscp = 26
	IP_API_DSCP_AF32 IPDscp = 28
	IP_API_DSCP_AF33 IPDscp = 30
	IP_API_DSCP_CS4  IPDscp = 32
	IP_API_DSCP_AF41 IPDscp = 34
	IP_API_DSCP_AF42 IPDscp = 36
	IP_API_DSCP_AF43 IPDscp = 38
	IP_API_DSCP_CS5  IPDscp = 40
	IP_API_DSCP_EF   IPDscp = 46
	IP_API_DSCP_CS6  IPDscp = 48
	IP_API_DSCP_CS7  IPDscp = 50
)

func (IPDscp) String

func (x IPDscp) String() string

type IPEcn

type IPEcn uint8

IPEcn represents VPP binary API enum 'ip_ecn'.

const (
	IP_API_ECN_NONE IPEcn = 0
	IP_API_ECN_ECT0 IPEcn = 1
	IP_API_ECN_ECT1 IPEcn = 2
	IP_API_ECN_CE   IPEcn = 3
)

func (IPEcn) String

func (x IPEcn) String() string

type IPProto

type IPProto uint32

IPProto represents VPP binary API enum 'ip_proto'.

const (
	IP_API_PROTO_HOPOPT   IPProto = 0
	IP_API_PROTO_ICMP     IPProto = 1
	IP_API_PROTO_IGMP     IPProto = 2
	IP_API_PROTO_TCP      IPProto = 6
	IP_API_PROTO_UDP      IPProto = 17
	IP_API_PROTO_GRE      IPProto = 47
	IP_API_PROTO_AH       IPProto = 50
	IP_API_PROTO_ESP      IPProto = 51
	IP_API_PROTO_EIGRP    IPProto = 88
	IP_API_PROTO_OSPF     IPProto = 89
	IP_API_PROTO_SCTP     IPProto = 132
	IP_API_PROTO_RESERVED IPProto = 255
)

func (IPProto) String

func (x IPProto) String() string

type Mprefix

type Mprefix struct {
	Af               AddressFamily
	GrpAddressLength uint16
	GrpAddress       AddressUnion
	SrcAddress       AddressUnion
}

Mprefix represents VPP binary API type 'mprefix'.

func (*Mprefix) GetTypeName

func (*Mprefix) GetTypeName() string

type Prefix

type Prefix struct {
	Address Address
	Len     uint8
}

Prefix represents VPP binary API type 'prefix'.

func (*Prefix) GetTypeName

func (*Prefix) GetTypeName() string

type PrefixMatcher

type PrefixMatcher struct {
	Le uint8
	Ge uint8
}

PrefixMatcher represents VPP binary API type 'prefix_matcher'.

func (*PrefixMatcher) GetTypeName

func (*PrefixMatcher) GetTypeName() string

type RPCService

type RPCService interface {
	DumpAbfItfAttach(ctx context.Context, in *AbfItfAttachDump) (RPCService_DumpAbfItfAttachClient, error)
	DumpAbfPolicy(ctx context.Context, in *AbfPolicyDump) (RPCService_DumpAbfPolicyClient, error)
	AbfItfAttachAddDel(ctx context.Context, in *AbfItfAttachAddDel) (*AbfItfAttachAddDelReply, error)
	AbfPluginGetVersion(ctx context.Context, in *AbfPluginGetVersion) (*AbfPluginGetVersionReply, error)
	AbfPolicyAddDel(ctx context.Context, in *AbfPolicyAddDel) (*AbfPolicyAddDelReply, error)
}

RPCService represents RPC service API for abf module.

func NewServiceClient

func NewServiceClient(ch api.Channel) RPCService

type RPCService_DumpAbfItfAttachClient

type RPCService_DumpAbfItfAttachClient interface {
	Recv() (*AbfItfAttachDetails, error)
}

type RPCService_DumpAbfPolicyClient

type RPCService_DumpAbfPolicyClient interface {
	Recv() (*AbfPolicyDetails, error)
}

Jump to

Keyboard shortcuts

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