Documentation
¶
Overview ¶
Package infra contains common definitions for the SCION infrastructure messaging layer.
Index ¶
Constants ¶
const ( StrCtxDoneError = "context canceled" StrClosedError = "layer closed" StrAdapterError = "msg adapter error" StrInternalError = "internal error" StrTransportError = "transport error" )
Variables ¶
This section is empty.
Functions ¶
func NewContextWithMessenger ¶
func NewCtxDoneError ¶
func NewCtxDoneError(ctx ...interface{}) error
Types ¶
type Handler ¶
type Handler interface {
Handle(*Request)
}
Interface Handler is implemented by objects that can handle a request coming from a remote SCION network node.
type HandlerFunc ¶
type HandlerFunc func(r *Request)
Constructs a handler for request r. Handle() can be called on the resulting object to process the message.
func (HandlerFunc) Handle ¶
func (f HandlerFunc) Handle(r *Request)
type MessageType ¶ added in v0.1.1
type MessageType int
const ( None MessageType = iota TRC TRCRequest Chain ChainRequest PathSegmentRequest PathSegmentReply ChainIssueRequest ChainIssueReply )
func (MessageType) String ¶ added in v0.1.1
func (mt MessageType) String() string
type Messenger ¶
type Messenger interface {
GetTRC(ctx context.Context, msg *cert_mgmt.TRCReq, a net.Addr,
id uint64) (*cert_mgmt.TRC, error)
SendTRC(ctx context.Context, msg *cert_mgmt.TRC, a net.Addr, id uint64) error
GetCertChain(ctx context.Context, msg *cert_mgmt.ChainReq, a net.Addr,
id uint64) (*cert_mgmt.Chain, error)
SendCertChain(ctx context.Context, msg *cert_mgmt.Chain, a net.Addr, id uint64) error
GetPathSegs(ctx context.Context, msg *path_mgmt.SegReq, a net.Addr,
id uint64) (*path_mgmt.SegReply, error)
RequestChainIssue(ctx context.Context, msg *cert_mgmt.ChainIssReq, a net.Addr,
id uint64) (*cert_mgmt.ChainIssRep, error)
SendChainIssueReply(ctx context.Context, msg *cert_mgmt.ChainIssRep, a net.Addr,
id uint64) error
AddHandler(msgType MessageType, h Handler)
ListenAndServe()
CloseServer() error
}
type Request ¶
type Request struct {
// Message is the inner proto.Cerealizable message, as supported by
// messenger.Messenger (e.g., a *cert_mgmt.ChainReq). For information about
// possible messages, see the package documentation for that package.
Message proto.Cerealizable
// FullMessage is the top-level SignedCtrlPld message read from the wire
FullMessage proto.Cerealizable
// Peer is the node that sent this request
Peer net.Addr
// ID is the CtrlPld top-level ID.
ID uint64
// Logger can be used to write handler-scope messages in a way that can be
// easily correlated with server request/responses.
Logger log.Logger
// contains filtered or unexported fields
}
Request describes an object received from the network that is not part of an exchange initiated by the local node. A Request includes its associated context.
func NewRequest ¶
type Transport ¶
type Transport interface {
// Send an unreliable message. Unreliable transport layers do not request
// an ACK. For reliable transport layers, this is the same as SendMsgTo.
SendUnreliableMsgTo(context.Context, common.RawBytes, net.Addr) error
// Send a reliable message. Unreliable transport layers block here waiting
// for the message to be ACK'd. Reliable transport layers return
// immediately.
SendMsgTo(context.Context, common.RawBytes, net.Addr) error
// Receive a message.
RecvFrom(context.Context) (common.RawBytes, net.Addr, error)
// Clean up.
Close(context.Context) error
}
Interface Transport wraps around low-level networking objects to provide reliable and unreliable delivery of network packets, together with context-aware networking that can be used to construct handlers with timeouts.
Transport layers must be safe for concurrent use by multiple goroutines.
type TrustStore ¶
type TrustStore interface {
GetValidChain(ctx context.Context, ia addr.IA, source net.Addr) (*cert.Chain, error)
GetValidTRC(ctx context.Context, isd addr.ISD, source net.Addr) (*trc.TRC, error)
GetValidCachedTRC(ctx context.Context, isd addr.ISD) (*trc.TRC, error)
GetChain(ctx context.Context, ia addr.IA, version uint64) (*cert.Chain, error)
GetTRC(ctx context.Context, isd addr.ISD, version uint64) (*trc.TRC, error)
NewTRCReqHandler(recurseAllowed bool) Handler
NewChainReqHandler(recurseAllowed bool) Handler
SetMessenger(msger Messenger)
}
Directories
¶
| Path | Synopsis |
|---|---|
|
Package dedupe implements a generic request/response proxy that issues a single request instead of multiple redundant requests.
|
Package dedupe implements a generic request/response proxy that issues a single request instead of multiple redundant requests. |
|
Package disp implements a generic message dispatcher for request/reply protocols.
|
Package disp implements a generic message dispatcher for request/reply protocols. |
|
Example infrastructure service that does nothing except service some requests using default handlers.
|
Example infrastructure service that does nothing except service some requests using default handlers. |
|
Package messenger contains the default implementation for interface infra.Messenger.
|
Package messenger contains the default implementation for interface infra.Messenger. |
|
modules
|
|
|
combinator
Package combinator contains methods for constructing SCION forwarding paths.
|
Package combinator contains methods for constructing SCION forwarding paths. |
|
segsaver
Package segsaver contains helper methods to save segments and revocations.
|
Package segsaver contains helper methods to save segments and revocations. |
|
segverifier
Package segverifier implements primitives for verifying path segments.
|
Package segverifier implements primitives for verifying path segments. |
|
trust
Package trust defines type Store, a unified interface for TRC and Certificate retrieval.
|
Package trust defines type Store, a unified interface for TRC and Certificate retrieval. |
|
trust/trustdb
Package trustdb provides wrappers for SQL calls for managing a database containing TRCs and Certificate Chains.
|
Package trustdb provides wrappers for SQL calls for managing a database containing TRCs and Certificate Chains. |