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 IfStateInfos SegChangesReq SegChangesReply SegChangesIdReq SegChangesIdReply SegReg SegRequest SegReply SegRev SegSync 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 GetSegs(ctx context.Context, msg *path_mgmt.SegReq, a net.Addr, id uint64) (*path_mgmt.SegReply, error) SendSegReply(ctx context.Context, msg *path_mgmt.SegReply, a net.Addr, id uint64) error SendSegSync(ctx context.Context, msg *path_mgmt.SegSync, a net.Addr, id uint64) error GetSegChangesIds(ctx context.Context, msg *path_mgmt.SegChangesIdReq, a net.Addr, id uint64) (*path_mgmt.SegChangesIdReply, error) SendSegChangesIdReply(ctx context.Context, msg *path_mgmt.SegChangesIdReply, a net.Addr, id uint64) error GetSegChanges(ctx context.Context, msg *path_mgmt.SegChangesReq, a net.Addr, id uint64) (*path_mgmt.SegChangesReply, error) SendSegChangesReply(ctx context.Context, msg *path_mgmt.SegChangesReply, a net.Addr, id uint64) 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 infraenv contains convenience function common to SCION infra services.
|
Package infraenv contains convenience function common to SCION infra services. |
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. |