loctoloc

package
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Syntax UUID
	LocToLocSyntaxUUID = &uuid.UUID{TimeLow: 0xe33c0cc4, TimeMid: 0x482, TimeHiAndVersion: 0x101a, ClockSeqHiAndReserved: 0xbc, ClockSeqLow: 0xc, Node: [6]uint8{0x2, 0x60, 0x8c, 0x6b, 0xa2, 0x18}}
	// Syntax ID
	LocToLocSyntaxV1_0 = &dcerpc.SyntaxID{IfUUID: LocToLocSyntaxUUID, IfVersionMajor: 1, IfVersionMinor: 0}
)
View Source
var (
	// import guard
	GoPackage = "rpcl"
)

Functions

func LocToLocServerHandle

func LocToLocServerHandle(ctx context.Context, o LocToLocServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)

func NewLocToLocServerHandle

func NewLocToLocServerHandle(o LocToLocServer) dcerpc.ServerHandle

func RegisterLocToLocServer

func RegisterLocToLocServer(conn dcerpc.Conn, o LocToLocServer, opts ...dcerpc.Option)

Types

type EntryObjectInquireBeginRequest

type EntryObjectInquireBeginRequest struct {
	// EntryNameSyntax: An identifier that represents the syntax used for the entry_name
	// parameter. The value MUST be RPC_C_NS_SYNTAX_DCE.
	EntryNameSyntax uint32 `idl:"name:EntryNameSyntax" json:"entry_name_syntax"`
	// EntryName: A Unicode [UNICODE] string specifying the entry name of the name service
	// entry, using the syntax identified by the entry_name_syntax parameter, as specified
	// in section 2.2.2.
	EntryName string `idl:"name:EntryName" json:"entry_name"`
}

EntryObjectInquireBeginRequest structure represents the I_nsi_entry_object_inq_begin operation request

func (*EntryObjectInquireBeginRequest) MarshalNDR

func (*EntryObjectInquireBeginRequest) UnmarshalNDR

type EntryObjectInquireBeginResponse

type EntryObjectInquireBeginResponse struct {
	// InqContext: On successful completion, returns a context handle for enumerating object
	// UUID vectors by using the I_nsi_entry_object_inq_next method. This context handle
	// MUST be closed by using the I_nsi_entry_object_inq_done method.
	InquireContext *rpcl.Context `idl:"name:InqContext" json:"inquire_context"`
	// status: A 16-bit value that indicates the results of the method call. In case of
	// success, the value will contain NSI_S_OK, or a nonzero value on failure. All failures
	// MUST be treated identically as a failure of the whole enumeration process.
	Status uint16 `idl:"name:status" json:"status"`
}

EntryObjectInquireBeginResponse structure represents the I_nsi_entry_object_inq_begin operation response

func (*EntryObjectInquireBeginResponse) MarshalNDR

func (*EntryObjectInquireBeginResponse) UnmarshalNDR

type EntryObjectInquireDoneRequest

type EntryObjectInquireDoneRequest struct {
	// InqContext: A context handle returned by the server from a preceding I_nsi_entry_object_inq_begin
	// call. On successful completion, this parameter MUST be set to NULL by the server
	// and MUST NOT be modified on failure.
	InquireContext *rpcl.Context `idl:"name:InqContext" json:"inquire_context"`
}

EntryObjectInquireDoneRequest structure represents the I_nsi_entry_object_inq_done operation request

func (*EntryObjectInquireDoneRequest) MarshalNDR

func (*EntryObjectInquireDoneRequest) UnmarshalNDR

func (o *EntryObjectInquireDoneRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type EntryObjectInquireDoneResponse

type EntryObjectInquireDoneResponse struct {
	// InqContext: A context handle returned by the server from a preceding I_nsi_entry_object_inq_begin
	// call. On successful completion, this parameter MUST be set to NULL by the server
	// and MUST NOT be modified on failure.
	InquireContext *rpcl.Context `idl:"name:InqContext" json:"inquire_context"`
	// status: A 16-bit value that indicates the results of the method call. In case of
	// success the value will contain NSI_S_OK, or a nonzero value on failure. All failures
	// MUST be treated identically as a failure of the freeing of resources initiated by
	// this method, but no further action is required by the caller.
	Status uint16 `idl:"name:status" json:"status"`
}

EntryObjectInquireDoneResponse structure represents the I_nsi_entry_object_inq_done operation response

func (*EntryObjectInquireDoneResponse) MarshalNDR

func (*EntryObjectInquireDoneResponse) UnmarshalNDR

type EntryObjectInquireNextRequest

type EntryObjectInquireNextRequest struct {
	// InqContext: A context handle returned by the server from a preceding call to the
	// I_nsi_entry_object_inq_begin method.
	InquireContext *rpcl.Context `idl:"name:InqContext" json:"inquire_context"`
}

EntryObjectInquireNextRequest structure represents the I_nsi_entry_object_inq_next operation request

func (*EntryObjectInquireNextRequest) MarshalNDR

func (*EntryObjectInquireNextRequest) UnmarshalNDR

func (o *EntryObjectInquireNextRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type EntryObjectInquireNextResponse

type EntryObjectInquireNextResponse struct {
	// uuid_vec: On successful completion, returns a vector of object UUIDs for the name
	// service entry. The caller of this method is responsible for freeing any memory allocated
	// for this parameter.
	Vector *rpcl.UUIDVector `idl:"name:uuid_vec" json:"vector"`
	// status: A 16-bit value that indicates the results of the method call. In case of
	// success, the value will contain NSI_S_OK, or a nonzero value on failure. All failures
	// MUST be treated identically as a failure of the continuation of the enumeration process.
	Status uint16 `idl:"name:status" json:"status"`
}

EntryObjectInquireNextResponse structure represents the I_nsi_entry_object_inq_next operation response

func (*EntryObjectInquireNextResponse) MarshalNDR

func (*EntryObjectInquireNextResponse) UnmarshalNDR

type LocToLocClient

type LocToLocClient interface {

	// The I_nsi_lookup_begin method is invoked by a client locator to enumerate the binding
	// information for a set of RPC servers that satisfy a given set of criteria. The Microsoft
	// Interface Definition Language (MIDL) syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions might be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupBegin(context.Context, *LookupBeginRequest, ...dcerpc.CallOption) (*LookupBeginResponse, error)

	// The I_nsi_lookup_done method is invoked to free any resources associated with the
	// context handle returned by a preceding call to the I_nsi_lookup_begin method. The
	// MIDL syntax of this method is specified as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupDone(context.Context, *LookupDoneRequest, ...dcerpc.CallOption) (*LookupDoneResponse, error)

	// The I_nsi_lookup_next method is invoked to continue an enumeration of binding vectors
	// that satisfy the criteria specified in a call to the I_nsi_lookup_begin method. The
	// number of bindings in the binding_vector is limited by the parameter binding_max_count
	// specified in the call to the I_nsi_lookup_begin method. The MIDL syntax of this method
	// is specified as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupNext(context.Context, *LookupNextRequest, ...dcerpc.CallOption) (*LookupNextResponse, error)

	// The I_nsi_entry_object_inq_next method is invoked to continue an enumeration initiated
	// by a previous call to the I_nsi_entry_object_inq_begin method. The MIDL syntax of
	// the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireNext(context.Context, *EntryObjectInquireNextRequest, ...dcerpc.CallOption) (*EntryObjectInquireNextResponse, error)

	// The I_nsi_ping_locator method is invoked by the client to determine if the target
	// computer is available as a master locator. The MIDL syntax of the method is specified
	// as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	PingLocator(context.Context, *PingLocatorRequest, ...dcerpc.CallOption) (*PingLocatorResponse, error)

	// The I_nsi_entry_object_inq_done method is invoked to free any resources associated
	// with the context handle returned by a preceding call to the I_nsi_entry_object_inq_begin
	// method. The MIDL syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireDone(context.Context, *EntryObjectInquireDoneRequest, ...dcerpc.CallOption) (*EntryObjectInquireDoneResponse, error)

	// The I_nsi_entry_object_inq_begin method is invoked to enumerate the object UUIDs
	// on a name service entry. The MIDL syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireBegin(context.Context, *EntryObjectInquireBeginRequest, ...dcerpc.CallOption) (*EntryObjectInquireBeginResponse, error)

	// AlterContext alters the client context.
	AlterContext(context.Context, ...dcerpc.Option) error

	// Conn returns the client connection (unsafe)
	Conn() dcerpc.Conn
}

LocToLoc interface.

func NewLocToLocClient

func NewLocToLocClient(ctx context.Context, cc dcerpc.Conn, opts ...dcerpc.Option) (LocToLocClient, error)

type LocToLocServer

type LocToLocServer interface {

	// The I_nsi_lookup_begin method is invoked by a client locator to enumerate the binding
	// information for a set of RPC servers that satisfy a given set of criteria. The Microsoft
	// Interface Definition Language (MIDL) syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions might be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupBegin(context.Context, *LookupBeginRequest) (*LookupBeginResponse, error)

	// The I_nsi_lookup_done method is invoked to free any resources associated with the
	// context handle returned by a preceding call to the I_nsi_lookup_begin method. The
	// MIDL syntax of this method is specified as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupDone(context.Context, *LookupDoneRequest) (*LookupDoneResponse, error)

	// The I_nsi_lookup_next method is invoked to continue an enumeration of binding vectors
	// that satisfy the criteria specified in a call to the I_nsi_lookup_begin method. The
	// number of bindings in the binding_vector is limited by the parameter binding_max_count
	// specified in the call to the I_nsi_lookup_begin method. The MIDL syntax of this method
	// is specified as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	LookupNext(context.Context, *LookupNextRequest) (*LookupNextResponse, error)

	// The I_nsi_entry_object_inq_next method is invoked to continue an enumeration initiated
	// by a previous call to the I_nsi_entry_object_inq_begin method. The MIDL syntax of
	// the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireNext(context.Context, *EntryObjectInquireNextRequest) (*EntryObjectInquireNextResponse, error)

	// The I_nsi_ping_locator method is invoked by the client to determine if the target
	// computer is available as a master locator. The MIDL syntax of the method is specified
	// as follows.
	//
	// Return Values: This method does not return any values.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	PingLocator(context.Context, *PingLocatorRequest) (*PingLocatorResponse, error)

	// The I_nsi_entry_object_inq_done method is invoked to free any resources associated
	// with the context handle returned by a preceding call to the I_nsi_entry_object_inq_begin
	// method. The MIDL syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireDone(context.Context, *EntryObjectInquireDoneRequest) (*EntryObjectInquireDoneResponse, error)

	// The I_nsi_entry_object_inq_begin method is invoked to enumerate the object UUIDs
	// on a name service entry. The MIDL syntax of the method is specified as follows.
	//
	// Return Values: This method does not return any values. RPC exceptions can be thrown
	// from this method.
	//
	// # Exceptions Thrown
	//
	// No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified
	// in [MS-RPCE].
	EntryObjectInquireBegin(context.Context, *EntryObjectInquireBeginRequest) (*EntryObjectInquireBeginResponse, error)
}

LocToLoc server interface.

type LookupBeginRequest

type LookupBeginRequest struct {
	// entry_name_syntax: An identifier that represents the syntax used for entry_name.
	// The value MUST be RPC_C_NS_SYNTAX_DCE.<8>
	EntryNameSyntax uint32 `idl:"name:entry_name_syntax" json:"entry_name_syntax"`
	// entry_name: A Unicode [UNICODE] string optionally specifying the entry name of the
	// name service entry, using the syntax identified by the entry_name_syntax parameter,
	// as specified in section 2.2.2. This parameter can optionally be null or an empty
	// string.
	EntryName string `idl:"name:entry_name" json:"entry_name"`
	// interfaceid: An optional interface specification. Specified to request only bindings
	// for server entries that have advertised interfaces compatible with this parameter.
	// The client sets interfaceid to NULL to indicate that this parameter is not specified.
	// Interface compatibility is specified in section 3.4.1.5.1.
	InterfaceID *rpcl.SyntaxID `idl:"name:interfaceid;pointer:unique" json:"interface_id"`
	// xfersyntax: An optional transfer syntax specification. Specified to request only
	// bindings for server entries that have advertised interfaces compatible with this
	// parameter. The client sets xfersyntax to NULL to indicate that this parameter is
	// not specified. Interface compatibility is specified in section 3.4.1.5.1.
	TransferSyntax *rpcl.SyntaxID `idl:"name:xfersyntax;pointer:unique" json:"transfer_syntax"`
	// obj_uuid: An optional pointer to an object UUID specification. Specified to request
	// only bindings for the server entries that export this object UUID. If the parameter
	// is NULL or if it contains a null GUID, the parameter is ignored.
	ObjectUUID *dtyp.GUID `idl:"name:obj_uuid" json:"object_uuid"`
	// binding_max_count: The maximum number of elements allowed in the binding vector returned
	// from the I_nsi_lookup_next method. If 0 is specified, an appropriate implementation-specific
	// default maximum MUST be used.<9>
	BindingMaxCount uint32 `idl:"name:binding_max_count" json:"binding_max_count"`
	// MaxCacheAge: Specifies the maximum number of seconds that any results returned from
	// a cache might have been present in the cache without being refreshed. This information
	// is as specified in [C706] Part 2, Name Service Caching.
	MaxCacheAge uint32 `idl:"name:MaxCacheAge" json:"max_cache_age"`
}

LookupBeginRequest structure represents the I_nsi_lookup_begin operation request

func (*LookupBeginRequest) MarshalNDR

func (o *LookupBeginRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupBeginRequest) UnmarshalNDR

func (o *LookupBeginRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupBeginResponse

type LookupBeginResponse struct {
	// import_context: On successful completion of this method, returns a context handle
	// for enumerating binding vectors by using the I_nsi_lookup_next method. This context
	// handle MUST be closed by using the I_nsi_lookup_done method.
	ImportContext *rpcl.Context `idl:"name:import_context" json:"import_context"`
	// status: A 16-bit value that indicates the results of the method call. In case of
	// success, the value MUST be NSI_S_OK. The value MUST be a nonzero value on failure.
	// All failures MUST be treated identically as failure of the whole enumeration process.
	Status uint16 `idl:"name:status" json:"status"`
}

LookupBeginResponse structure represents the I_nsi_lookup_begin operation response

func (*LookupBeginResponse) MarshalNDR

func (o *LookupBeginResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupBeginResponse) UnmarshalNDR

func (o *LookupBeginResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupDoneRequest

type LookupDoneRequest struct {
	// import_context: A context handle returned by the server from a preceding call to
	// the I_nsi_lookup_begin method. On successful completion, this parameter MUST be set
	// to NULL by the server and MUST NOT be modified on failure.
	ImportContext *rpcl.Context `idl:"name:import_context" json:"import_context"`
}

LookupDoneRequest structure represents the I_nsi_lookup_done operation request

func (*LookupDoneRequest) MarshalNDR

func (o *LookupDoneRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupDoneRequest) UnmarshalNDR

func (o *LookupDoneRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupDoneResponse

type LookupDoneResponse struct {
	// import_context: A context handle returned by the server from a preceding call to
	// the I_nsi_lookup_begin method. On successful completion, this parameter MUST be set
	// to NULL by the server and MUST NOT be modified on failure.
	ImportContext *rpcl.Context `idl:"name:import_context" json:"import_context"`
	// status: A 16-bit value that indicates the results of the method call. In case of
	// success, the value will contain NSI_S_OK, or a nonzero value on failure. All failures
	// MUST be treated identically as a failure of the freeing process initiated by this
	// method, but no further action is required by the caller.
	Status uint16 `idl:"name:status" json:"status"`
}

LookupDoneResponse structure represents the I_nsi_lookup_done operation response

func (*LookupDoneResponse) MarshalNDR

func (o *LookupDoneResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupDoneResponse) UnmarshalNDR

func (o *LookupDoneResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNextRequest

type LookupNextRequest struct {
	// import_context: A context handle returned by a preceding call to the I_nsi_lookup_begin
	// method.
	ImportContext *rpcl.Context `idl:"name:import_context" json:"import_context"`
}

LookupNextRequest structure represents the I_nsi_lookup_next operation request

func (*LookupNextRequest) MarshalNDR

func (o *LookupNextRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNextRequest) UnmarshalNDR

func (o *LookupNextRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type LookupNextResponse

type LookupNextResponse struct {
	// binding_vector: On successful completion, returns a vector containing bindings that
	// satisfy the criteria defined in the preceding call to the I_nsi_lookup_begin method.
	// The caller MUST not assume that the bindings are ordered. The client is responsible
	// for freeing the memory allocated for the binding_vector. The memory allocated for
	// the binding_vector does not need to be freed before subsequent calls to I_nsi_lookup_next.
	BindingVector *rpcl.BindingVector `idl:"name:binding_vector" json:"binding_vector"`
	// status: A 16-bit value that indicates the result of the method call. Any other values,
	// except those listed as follows, MUST be treated as failures and MUST be treated identically.
	// Failure is typically a serious condition (e.g., host out of memory) and SHOULD abort
	// the current operation and then propagated to the higher-layer caller. In the event
	// of failure, the caller SHOULD invoke I_nsi_lookup_done immediately, although it might
	// fail as well.
	//
	//	+-----------------------------------+----------------------------------------------------------------------------------+
	//	|                                   |                                                                                  |
	//	|               VALUE               |                                     MEANING                                      |
	//	|                                   |                                                                                  |
	//	+-----------------------------------+----------------------------------------------------------------------------------+
	//	+-----------------------------------+----------------------------------------------------------------------------------+
	//	| NSI_S_OK 0x00000000               | The call returned successfully and binding vector contains at least one binding. |
	//	|                                   | There can be additional bindings that satisfy the criteria.                      |
	//	+-----------------------------------+----------------------------------------------------------------------------------+
	//	| NSI_S_NO_MORE_BINDINGS 0x00000001 | There are no more bindings that satisfy the criteria and binding vector contains |
	//	|                                   | no bindings.                                                                     |
	//	+-----------------------------------+----------------------------------------------------------------------------------+
	Status uint16 `idl:"name:status" json:"status"`
}

LookupNextResponse structure represents the I_nsi_lookup_next operation response

func (*LookupNextResponse) MarshalNDR

func (o *LookupNextResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LookupNextResponse) UnmarshalNDR

func (o *LookupNextResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type PingLocatorRequest

type PingLocatorRequest struct {
}

PingLocatorRequest structure represents the I_nsi_ping_locator operation request

func (*PingLocatorRequest) MarshalNDR

func (o *PingLocatorRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*PingLocatorRequest) UnmarshalNDR

func (o *PingLocatorRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type PingLocatorResponse

type PingLocatorResponse struct {
	// status: A 32-bit value that indicates the results of the method call. In case of
	// success, the value will contain NSI_S_OK, or a nonzero value on failure. All failures
	// MUST be treated identically as a failure of the pinging process initiated by this
	// method, and the target computer SHOULD be treated as unavailable as a master locator.<10>
	Status uint32 `idl:"name:status" json:"status"`
}

PingLocatorResponse structure represents the I_nsi_ping_locator operation response

func (*PingLocatorResponse) MarshalNDR

func (o *PingLocatorResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*PingLocatorResponse) UnmarshalNDR

func (o *PingLocatorResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type UnimplementedLocToLocServer added in v1.1.5

type UnimplementedLocToLocServer struct {
}

Unimplemented LocToLoc

func (UnimplementedLocToLocServer) EntryObjectInquireBegin added in v1.1.5

func (UnimplementedLocToLocServer) EntryObjectInquireDone added in v1.1.5

func (UnimplementedLocToLocServer) EntryObjectInquireNext added in v1.1.5

func (UnimplementedLocToLocServer) LookupBegin added in v1.1.5

func (UnimplementedLocToLocServer) LookupDone added in v1.1.5

func (UnimplementedLocToLocServer) LookupNext added in v1.1.5

func (UnimplementedLocToLocServer) PingLocator added in v1.1.5

Jump to

Keyboard shortcuts

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