l2

package
v1.5.2 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2018 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package l2 is a generated protocol buffer package.

It is generated from these files:

l2.proto

It has these top-level messages:

BridgeDomains
FibTable
XConnectPairs
BridgeDomainState
BridgeDomainErrors

Index

Constants

View Source
const (
	// BdPrefix is the relative key prefix for bridge domains.
	BdPrefix = "vpp/config/v1/bd/"
	// BdStatePrefix is the relative key prefix for bridge domain state.
	BdStatePrefix = "vpp/status/v1/bd/"
	// BdErrPrefix is the relative key prefix for the bridge domain error.
	BdErrPrefix = "vpp/status/v1/bd/error/"
	// FIBPrefix is the relative key prefix for FIB table entries.
	FIBPrefix = "vpp/config/v1/bd/{bd}/fib/"
	// XconnectPrefix is the relative key prefix for xconnects.
	XconnectPrefix = "vpp/config/v1/xconnect/"
)

Prefixes

Variables

View Source
var FibTable_FibEntry_Action_name = map[int32]string{
	0: "FORWARD",
	1: "DROP",
}
View Source
var FibTable_FibEntry_Action_value = map[string]int32{
	"FORWARD": 0,
	"DROP":    1,
}

Functions

func BridgeDomainErrorKey

func BridgeDomainErrorKey(bdLabel string) string

BridgeDomainErrorKey returns the key used in ETCD to store bridge domain errors.

func BridgeDomainErrorPrefix

func BridgeDomainErrorPrefix() string

BridgeDomainErrorPrefix returns the prefix used in ETCD to store bridge domain errors.

func BridgeDomainKey

func BridgeDomainKey(bdName string) string

BridgeDomainKey returns the prefix used in ETCD to store vpp bridge domain config of a particular bridge domain in selected vpp instance.

func BridgeDomainKeyPrefix

func BridgeDomainKeyPrefix() string

BridgeDomainKeyPrefix returns the prefix used in ETCD to store vpp bridge domain config.

func BridgeDomainStateKey

func BridgeDomainStateKey(ifaceLabel string) string

BridgeDomainStateKey returns the prefix used in ETCD to store vpp bridge domain state data of a particular bridge domain in selected vpp instance.

func BridgeDomainStateKeyPrefix

func BridgeDomainStateKeyPrefix() string

BridgeDomainStateKeyPrefix returns the prefix used in ETCD to store vpp bridge domain state data.

func FibKey

func FibKey(bdLabel string, fibMac string) string

FibKey returns the prefix used in ETCD to store vpp fib table entry config of a particular fib in selected vpp instance.

func FibKeyPrefix

func FibKeyPrefix() string

FibKeyPrefix returns the prefix used in ETCD to store vpp fib table entry config.

func ParseBDNameFromKey

func ParseBDNameFromKey(key string) (name string, err error)

ParseBDNameFromKey returns suffix of the key.

func ParseFibKey

func ParseFibKey(key string) (isFibKey bool, bdName string, fibMac string)

ParseFibKey parses bridge domain label and FIB MAC address from a FIB key.

func XConnectKey

func XConnectKey(rxIface string) string

XConnectKey returns the prefix used in ETCD to store vpp xConnect pair config of particular xConnect pair in selected vpp instance.

func XConnectKeyPrefix

func XConnectKeyPrefix() string

XConnectKeyPrefix returns the prefix used in ETCD to store vpp xConnect pair config.

Types

type BridgeDomainErrors

type BridgeDomainErrors struct {
	BridgeDomain []*BridgeDomainErrors_BridgeDomain `protobuf:"bytes,1,rep,name=bridge_domain,json=bridgeDomain" json:"bridge_domain,omitempty"`
}

func (*BridgeDomainErrors) Descriptor

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

func (*BridgeDomainErrors) GetBridgeDomain

func (m *BridgeDomainErrors) GetBridgeDomain() []*BridgeDomainErrors_BridgeDomain

func (*BridgeDomainErrors) ProtoMessage

func (*BridgeDomainErrors) ProtoMessage()

func (*BridgeDomainErrors) Reset

func (m *BridgeDomainErrors) Reset()

func (*BridgeDomainErrors) String

func (m *BridgeDomainErrors) String() string

type BridgeDomainErrors_BridgeDomain

type BridgeDomainErrors_BridgeDomain struct {
	BdName    string                                       `protobuf:"bytes,1,opt,name=bd_name,json=bdName,proto3" json:"bd_name,omitempty"`
	ErrorData []*BridgeDomainErrors_BridgeDomain_ErrorData `protobuf:"bytes,2,rep,name=error_data,json=errorData" json:"error_data,omitempty"`
}

func (*BridgeDomainErrors_BridgeDomain) Descriptor

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

func (*BridgeDomainErrors_BridgeDomain) GetBdName

func (m *BridgeDomainErrors_BridgeDomain) GetBdName() string

func (*BridgeDomainErrors_BridgeDomain) GetErrorData

func (*BridgeDomainErrors_BridgeDomain) ProtoMessage

func (*BridgeDomainErrors_BridgeDomain) ProtoMessage()

func (*BridgeDomainErrors_BridgeDomain) Reset

func (*BridgeDomainErrors_BridgeDomain) String

type BridgeDomainErrors_BridgeDomain_ErrorData

type BridgeDomainErrors_BridgeDomain_ErrorData struct {
	ChangeType   string `protobuf:"bytes,2,opt,name=change_type,json=changeType,proto3" json:"change_type,omitempty"`
	ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	LastChange   int64  `protobuf:"varint,4,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"`
}

func (*BridgeDomainErrors_BridgeDomain_ErrorData) Descriptor

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

func (*BridgeDomainErrors_BridgeDomain_ErrorData) GetChangeType

func (*BridgeDomainErrors_BridgeDomain_ErrorData) GetErrorMessage

func (*BridgeDomainErrors_BridgeDomain_ErrorData) GetLastChange

func (*BridgeDomainErrors_BridgeDomain_ErrorData) ProtoMessage

func (*BridgeDomainErrors_BridgeDomain_ErrorData) Reset

func (*BridgeDomainErrors_BridgeDomain_ErrorData) String

type BridgeDomainState

type BridgeDomainState struct {
	BridgeDomains []*BridgeDomainState_BridgeDomain `protobuf:"bytes,100,rep,name=bridge_domains,json=bridgeDomains" json:"bridge_domains,omitempty"`
}

func (*BridgeDomainState) Descriptor

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

func (*BridgeDomainState) GetBridgeDomains

func (m *BridgeDomainState) GetBridgeDomains() []*BridgeDomainState_BridgeDomain

func (*BridgeDomainState) ProtoMessage

func (*BridgeDomainState) ProtoMessage()

func (*BridgeDomainState) Reset

func (m *BridgeDomainState) Reset()

func (*BridgeDomainState) String

func (m *BridgeDomainState) String() string

type BridgeDomainState_BridgeDomain

type BridgeDomainState_BridgeDomain struct {
	Index             uint32                                       `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	InternalName      string                                       `protobuf:"bytes,2,opt,name=internal_name,json=internalName,proto3" json:"internal_name,omitempty"`
	BviInterface      string                                       `protobuf:"bytes,3,opt,name=bvi_interface,json=bviInterface,proto3" json:"bvi_interface,omitempty"`
	BviInterfaceIndex uint32                                       `protobuf:"varint,4,opt,name=bvi_interface_index,json=bviInterfaceIndex,proto3" json:"bvi_interface_index,omitempty"`
	InterfaceCount    uint32                                       `protobuf:"varint,5,opt,name=interface_count,json=interfaceCount,proto3" json:"interface_count,omitempty"`
	LastChange        int64                                        `protobuf:"varint,6,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"`
	L2Params          *BridgeDomainState_BridgeDomain_L2Params     `protobuf:"bytes,100,opt,name=l2_params,json=l2Params" json:"l2_params,omitempty"`
	Interfaces        []*BridgeDomainState_BridgeDomain_Interfaces `protobuf:"bytes,101,rep,name=interfaces" json:"interfaces,omitempty"`
}

func (*BridgeDomainState_BridgeDomain) Descriptor

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

func (*BridgeDomainState_BridgeDomain) GetBviInterface

func (m *BridgeDomainState_BridgeDomain) GetBviInterface() string

func (*BridgeDomainState_BridgeDomain) GetBviInterfaceIndex

func (m *BridgeDomainState_BridgeDomain) GetBviInterfaceIndex() uint32

func (*BridgeDomainState_BridgeDomain) GetIndex

func (m *BridgeDomainState_BridgeDomain) GetIndex() uint32

func (*BridgeDomainState_BridgeDomain) GetInterfaceCount

func (m *BridgeDomainState_BridgeDomain) GetInterfaceCount() uint32

func (*BridgeDomainState_BridgeDomain) GetInterfaces

func (*BridgeDomainState_BridgeDomain) GetInternalName

func (m *BridgeDomainState_BridgeDomain) GetInternalName() string

func (*BridgeDomainState_BridgeDomain) GetL2Params

func (*BridgeDomainState_BridgeDomain) GetLastChange

func (m *BridgeDomainState_BridgeDomain) GetLastChange() int64

func (*BridgeDomainState_BridgeDomain) ProtoMessage

func (*BridgeDomainState_BridgeDomain) ProtoMessage()

func (*BridgeDomainState_BridgeDomain) Reset

func (m *BridgeDomainState_BridgeDomain) Reset()

func (*BridgeDomainState_BridgeDomain) String

type BridgeDomainState_BridgeDomain_Interfaces

type BridgeDomainState_BridgeDomain_Interfaces struct {
	Name              string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SwIfIndex         uint32 `protobuf:"varint,2,opt,name=sw_if_index,json=swIfIndex,proto3" json:"sw_if_index,omitempty"`
	SplitHorizonGroup uint32 `protobuf:"varint,3,opt,name=split_horizon_group,json=splitHorizonGroup,proto3" json:"split_horizon_group,omitempty"`
}

func (*BridgeDomainState_BridgeDomain_Interfaces) Descriptor

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

func (*BridgeDomainState_BridgeDomain_Interfaces) GetName

func (*BridgeDomainState_BridgeDomain_Interfaces) GetSplitHorizonGroup

func (m *BridgeDomainState_BridgeDomain_Interfaces) GetSplitHorizonGroup() uint32

func (*BridgeDomainState_BridgeDomain_Interfaces) GetSwIfIndex

func (*BridgeDomainState_BridgeDomain_Interfaces) ProtoMessage

func (*BridgeDomainState_BridgeDomain_Interfaces) Reset

func (*BridgeDomainState_BridgeDomain_Interfaces) String

type BridgeDomainState_BridgeDomain_L2Params

type BridgeDomainState_BridgeDomain_L2Params struct {
	Flood               bool   `protobuf:"varint,1,opt,name=flood,proto3" json:"flood,omitempty"`
	UnknownUnicastFlood bool   `protobuf:"varint,2,opt,name=unknown_unicast_flood,json=unknownUnicastFlood,proto3" json:"unknown_unicast_flood,omitempty"`
	Forward             bool   `protobuf:"varint,3,opt,name=forward,proto3" json:"forward,omitempty"`
	Learn               bool   `protobuf:"varint,4,opt,name=learn,proto3" json:"learn,omitempty"`
	ArpTermination      bool   `protobuf:"varint,5,opt,name=arp_termination,json=arpTermination,proto3" json:"arp_termination,omitempty"`
	MacAge              uint32 `protobuf:"varint,6,opt,name=mac_age,json=macAge,proto3" json:"mac_age,omitempty"`
}

func (*BridgeDomainState_BridgeDomain_L2Params) Descriptor

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

func (*BridgeDomainState_BridgeDomain_L2Params) GetArpTermination

func (m *BridgeDomainState_BridgeDomain_L2Params) GetArpTermination() bool

func (*BridgeDomainState_BridgeDomain_L2Params) GetFlood

func (*BridgeDomainState_BridgeDomain_L2Params) GetForward

func (*BridgeDomainState_BridgeDomain_L2Params) GetLearn

func (*BridgeDomainState_BridgeDomain_L2Params) GetMacAge

func (*BridgeDomainState_BridgeDomain_L2Params) GetUnknownUnicastFlood

func (m *BridgeDomainState_BridgeDomain_L2Params) GetUnknownUnicastFlood() bool

func (*BridgeDomainState_BridgeDomain_L2Params) ProtoMessage

func (*BridgeDomainState_BridgeDomain_L2Params) Reset

func (*BridgeDomainState_BridgeDomain_L2Params) String

type BridgeDomains

type BridgeDomains struct {
	BridgeDomains []*BridgeDomains_BridgeDomain `protobuf:"bytes,1,rep,name=bridge_domains,json=bridgeDomains" json:"bridge_domains,omitempty"`
}

func (*BridgeDomains) Descriptor

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

func (*BridgeDomains) GetBridgeDomains

func (m *BridgeDomains) GetBridgeDomains() []*BridgeDomains_BridgeDomain

func (*BridgeDomains) ProtoMessage

func (*BridgeDomains) ProtoMessage()

func (*BridgeDomains) Reset

func (m *BridgeDomains) Reset()

func (*BridgeDomains) String

func (m *BridgeDomains) String() string

type BridgeDomains_BridgeDomain

type BridgeDomains_BridgeDomain struct {
	Name                string                                            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Flood               bool                                              `protobuf:"varint,2,opt,name=flood,proto3" json:"flood,omitempty"`
	UnknownUnicastFlood bool                                              `protobuf:"varint,3,opt,name=unknown_unicast_flood,json=unknownUnicastFlood,proto3" json:"unknown_unicast_flood,omitempty"`
	Forward             bool                                              `protobuf:"varint,4,opt,name=forward,proto3" json:"forward,omitempty"`
	Learn               bool                                              `protobuf:"varint,5,opt,name=learn,proto3" json:"learn,omitempty"`
	ArpTermination      bool                                              `protobuf:"varint,6,opt,name=arp_termination,json=arpTermination,proto3" json:"arp_termination,omitempty"`
	MacAge              uint32                                            `protobuf:"varint,7,opt,name=mac_age,json=macAge,proto3" json:"mac_age,omitempty"`
	Interfaces          []*BridgeDomains_BridgeDomain_Interfaces          `protobuf:"bytes,100,rep,name=interfaces" json:"interfaces,omitempty"`
	ArpTerminationTable []*BridgeDomains_BridgeDomain_ArpTerminationEntry `protobuf:"bytes,102,rep,name=arp_termination_table,json=arpTerminationTable" json:"arp_termination_table,omitempty"`
}

func (*BridgeDomains_BridgeDomain) Descriptor

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

func (*BridgeDomains_BridgeDomain) GetArpTermination

func (m *BridgeDomains_BridgeDomain) GetArpTermination() bool

func (*BridgeDomains_BridgeDomain) GetArpTerminationTable

func (*BridgeDomains_BridgeDomain) GetFlood

func (m *BridgeDomains_BridgeDomain) GetFlood() bool

func (*BridgeDomains_BridgeDomain) GetForward

func (m *BridgeDomains_BridgeDomain) GetForward() bool

func (*BridgeDomains_BridgeDomain) GetInterfaces

func (*BridgeDomains_BridgeDomain) GetLearn

func (m *BridgeDomains_BridgeDomain) GetLearn() bool

func (*BridgeDomains_BridgeDomain) GetMacAge

func (m *BridgeDomains_BridgeDomain) GetMacAge() uint32

func (*BridgeDomains_BridgeDomain) GetName

func (m *BridgeDomains_BridgeDomain) GetName() string

func (*BridgeDomains_BridgeDomain) GetUnknownUnicastFlood

func (m *BridgeDomains_BridgeDomain) GetUnknownUnicastFlood() bool

func (*BridgeDomains_BridgeDomain) ProtoMessage

func (*BridgeDomains_BridgeDomain) ProtoMessage()

func (*BridgeDomains_BridgeDomain) Reset

func (m *BridgeDomains_BridgeDomain) Reset()

func (*BridgeDomains_BridgeDomain) String

func (m *BridgeDomains_BridgeDomain) String() string

type BridgeDomains_BridgeDomain_ArpTerminationEntry

type BridgeDomains_BridgeDomain_ArpTerminationEntry struct {
	IpAddress   string `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
	PhysAddress string `protobuf:"bytes,2,opt,name=phys_address,json=physAddress,proto3" json:"phys_address,omitempty"`
}

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) Descriptor

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) GetIpAddress

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) GetPhysAddress

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) ProtoMessage

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) Reset

func (*BridgeDomains_BridgeDomain_ArpTerminationEntry) String

type BridgeDomains_BridgeDomain_Interfaces

type BridgeDomains_BridgeDomain_Interfaces struct {
	Name                    string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	BridgedVirtualInterface bool   `` /* 133-byte string literal not displayed */
	SplitHorizonGroup       uint32 `protobuf:"varint,3,opt,name=split_horizon_group,json=splitHorizonGroup,proto3" json:"split_horizon_group,omitempty"`
}

func (*BridgeDomains_BridgeDomain_Interfaces) Descriptor

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

func (*BridgeDomains_BridgeDomain_Interfaces) GetBridgedVirtualInterface

func (m *BridgeDomains_BridgeDomain_Interfaces) GetBridgedVirtualInterface() bool

func (*BridgeDomains_BridgeDomain_Interfaces) GetName

func (*BridgeDomains_BridgeDomain_Interfaces) GetSplitHorizonGroup

func (m *BridgeDomains_BridgeDomain_Interfaces) GetSplitHorizonGroup() uint32

func (*BridgeDomains_BridgeDomain_Interfaces) ProtoMessage

func (*BridgeDomains_BridgeDomain_Interfaces) ProtoMessage()

func (*BridgeDomains_BridgeDomain_Interfaces) Reset

func (*BridgeDomains_BridgeDomain_Interfaces) String

type FibTable

type FibTable struct {
	FibTableEntries []*FibTable_FibEntry `protobuf:"bytes,100,rep,name=fib_table_entries,json=fibTableEntries" json:"fib_table_entries,omitempty"`
}

func (*FibTable) Descriptor

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

func (*FibTable) GetFibTableEntries

func (m *FibTable) GetFibTableEntries() []*FibTable_FibEntry

func (*FibTable) ProtoMessage

func (*FibTable) ProtoMessage()

func (*FibTable) Reset

func (m *FibTable) Reset()

func (*FibTable) String

func (m *FibTable) String() string

type FibTable_FibEntry

type FibTable_FibEntry struct {
	PhysAddress             string                   `protobuf:"bytes,1,opt,name=phys_address,json=physAddress,proto3" json:"phys_address,omitempty"`
	BridgeDomain            string                   `protobuf:"bytes,2,opt,name=bridge_domain,json=bridgeDomain,proto3" json:"bridge_domain,omitempty"`
	Action                  FibTable_FibEntry_Action `protobuf:"varint,3,opt,name=action,proto3,enum=l2.FibTable_FibEntry_Action" json:"action,omitempty"`
	OutgoingInterface       string                   `protobuf:"bytes,4,opt,name=outgoing_interface,json=outgoingInterface,proto3" json:"outgoing_interface,omitempty"`
	StaticConfig            bool                     `protobuf:"varint,5,opt,name=static_config,json=staticConfig,proto3" json:"static_config,omitempty"`
	BridgedVirtualInterface bool                     `` /* 133-byte string literal not displayed */
}

func (*FibTable_FibEntry) Descriptor

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

func (*FibTable_FibEntry) GetAction

func (*FibTable_FibEntry) GetBridgeDomain

func (m *FibTable_FibEntry) GetBridgeDomain() string

func (*FibTable_FibEntry) GetBridgedVirtualInterface

func (m *FibTable_FibEntry) GetBridgedVirtualInterface() bool

func (*FibTable_FibEntry) GetOutgoingInterface

func (m *FibTable_FibEntry) GetOutgoingInterface() string

func (*FibTable_FibEntry) GetPhysAddress

func (m *FibTable_FibEntry) GetPhysAddress() string

func (*FibTable_FibEntry) GetStaticConfig

func (m *FibTable_FibEntry) GetStaticConfig() bool

func (*FibTable_FibEntry) ProtoMessage

func (*FibTable_FibEntry) ProtoMessage()

func (*FibTable_FibEntry) Reset

func (m *FibTable_FibEntry) Reset()

func (*FibTable_FibEntry) String

func (m *FibTable_FibEntry) String() string

type FibTable_FibEntry_Action

type FibTable_FibEntry_Action int32
const (
	FibTable_FibEntry_FORWARD FibTable_FibEntry_Action = 0
	FibTable_FibEntry_DROP    FibTable_FibEntry_Action = 1
)

func (FibTable_FibEntry_Action) EnumDescriptor

func (FibTable_FibEntry_Action) EnumDescriptor() ([]byte, []int)

func (FibTable_FibEntry_Action) String

func (x FibTable_FibEntry_Action) String() string

type XConnectPairs

type XConnectPairs struct {
	XConnectPairs []*XConnectPairs_XConnectPair `protobuf:"bytes,100,rep,name=x_connect_pairs,json=xConnectPairs" json:"x_connect_pairs,omitempty"`
}

func (*XConnectPairs) Descriptor

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

func (*XConnectPairs) GetXConnectPairs

func (m *XConnectPairs) GetXConnectPairs() []*XConnectPairs_XConnectPair

func (*XConnectPairs) ProtoMessage

func (*XConnectPairs) ProtoMessage()

func (*XConnectPairs) Reset

func (m *XConnectPairs) Reset()

func (*XConnectPairs) String

func (m *XConnectPairs) String() string

type XConnectPairs_XConnectPair

type XConnectPairs_XConnectPair struct {
	ReceiveInterface  string `protobuf:"bytes,2,opt,name=receive_interface,json=receiveInterface,proto3" json:"receive_interface,omitempty"`
	TransmitInterface string `protobuf:"bytes,3,opt,name=transmit_interface,json=transmitInterface,proto3" json:"transmit_interface,omitempty"`
}

func (*XConnectPairs_XConnectPair) Descriptor

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

func (*XConnectPairs_XConnectPair) GetReceiveInterface

func (m *XConnectPairs_XConnectPair) GetReceiveInterface() string

func (*XConnectPairs_XConnectPair) GetTransmitInterface

func (m *XConnectPairs_XConnectPair) GetTransmitInterface() string

func (*XConnectPairs_XConnectPair) ProtoMessage

func (*XConnectPairs_XConnectPair) ProtoMessage()

func (*XConnectPairs_XConnectPair) Reset

func (m *XConnectPairs_XConnectPair) Reset()

func (*XConnectPairs_XConnectPair) String

func (m *XConnectPairs_XConnectPair) String() string

Jump to

Keyboard shortcuts

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