 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
const ( PromSrcASLocal = "as_local" PromSrcISDLocal = "isd_local" PromSrcISDRemote = "isd_remote" PromSrcUnknown = "unknown" )
const ( // DefaultRPCTimeout is the default silent time SCION RPC Clients will wait // for before declaring a timeout. Most RPCs will be subject to an // additional context, and the timeout will be the minimum value allowed by // the context and this timeout. RPC clients are free to use a different // timeout if they have special requirements. DefaultRPCTimeout time.Duration = 10 * time.Second )
Variables ¶
var ( MetricsErrInternal = &HandlerResult{Result: "err_internal", Status: prom.StatusErr} MetricsErrInvalid = &HandlerResult{Result: "err_invalid_req", Status: prom.StatusErr} MetricsResultOk = &HandlerResult{Result: prom.Success, Status: prom.StatusOk} )
Functions ¶
func NewContextWithResponseWriter ¶ added in v0.4.0
func NewContextWithResponseWriter(ctx context.Context, rw ResponseWriter) context.Context
Types ¶
type Handler ¶
type Handler interface {
	Handle(*Request) *HandlerResult
}
    Handler is implemented by objects that can handle a request coming from a remote SCION network node.
type HandlerFunc ¶
type HandlerFunc func(r *Request) *HandlerResult
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) *HandlerResult
type HandlerResult ¶ added in v0.4.0
type HandlerResult struct {
	// Result is the label used for the result metric.
	Result string
	// Status is one of prom.StatusOk, prom.StatusErr, prom.StatusTimeout it is used for the latency
	// histogram. This is a reduced view of the result, so that we don't get too many timeseries on
	// the histogram.
	Status string
}
    HandlerResult contains a result label and a status label.
func MetricsErrMsger ¶ added in v0.4.0
func MetricsErrMsger(err error) *HandlerResult
func MetricsErrRevCache ¶ added in v0.4.0
func MetricsErrRevCache(err error) *HandlerResult
func MetricsErrTrustDB ¶ added in v0.4.0
func MetricsErrTrustDB(err error) *HandlerResult
func MetricsErrTrustStore ¶ added in v0.4.0
func MetricsErrTrustStore(err error) *HandlerResult
func MetricsErrWithTimeout ¶ added in v0.4.0
func MetricsErrWithTimeout(err error, timeoutResult, result *HandlerResult) *HandlerResult
MetricsErrWithTimeout checks if the error is a timeout and if so returns timeoutResult otherwise returns result.
type MessageType ¶ added in v0.1.1
type MessageType int
const ( None MessageType = iota IfId Ack HPSegReg HPSegRequest HPSegReply HPCfgRequest HPCfgReply )
func (MessageType) MetricLabel ¶ added in v0.4.0
func (mt MessageType) MetricLabel() string
MetricLabel returns the label for metrics for a given message type. The postfix for requests is always "req" and for replies and push messages it is always "push".
func (MessageType) String ¶ added in v0.1.1
func (mt MessageType) String() string
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
	// 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 ResponseWriter ¶ added in v0.4.0
type ResponseWriter interface {
	SendAckReply(ctx context.Context, msg *ack.Ack) error
	SendHPSegReply(ctx context.Context, msg *path_mgmt.HPSegReply) error
	SendHPCfgReply(ctx context.Context, msg *path_mgmt.HPCfgReply) error
}
    func ResponseWriterFromContext ¶ added in v0.4.0
func ResponseWriterFromContext(ctx context.Context) (ResponseWriter, bool)
type Verifier ¶ added in v0.4.0
type Verifier interface {
	seg.Verifier
	// WithServer returns a verifier that fetches the necessary crypto
	// objects from the specified server.
	WithServer(server net.Addr) Verifier
	// WithIA returns a verifier that only accepts signatures from the
	// specified IA.
	WithIA(ia addr.IA) Verifier
}
    Verifier is used to verify payloads signed with control-plane PKI certificates.
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| Package infraenv contains convenience function common to SCION infra services. | Package infraenv contains convenience function common to SCION infra services. | 
| 
          
            mock_messenger
            
            
          
           Package mock_messenger is a generated GoMock package. | Package mock_messenger is a generated GoMock package. | 
| Package mock_infra is a generated GoMock package. | Package mock_infra is a generated GoMock package. | 
| modules
       | |
| 
          
            combinator
            
            
          
           Package combinator contains methods for constructing SCION forwarding paths. | Package combinator contains methods for constructing SCION forwarding paths. | 
| 
          
            db
            
            
          
           Package db contains common database abstractions for our infra. | Package db contains common database abstractions for our infra. | 
| 
          
            itopo
            
            
          
           Package itopo stores topology state and manages topology updates for an application. | Package itopo stores topology state and manages topology updates for an application. | 
| 
          
            segfetcher
            
            
          
           Package segfetcher contains all the logic that is needed to fetch segments, verify and store segments in an efficient manner. | Package segfetcher contains all the logic that is needed to fetch segments, verify and store segments in an efficient manner. | 
| 
          
            segfetcher/mock_segfetcher
            
            
          
           Package mock_segfetcher is a generated GoMock package. | Package mock_segfetcher is a generated GoMock package. | 
| 
          
            seghandler/mock_seghandler
            
            
          
           Package mock_seghandler is a generated GoMock package. | Package mock_seghandler is a generated GoMock package. | 
| 
          
            segverifier
            
            
          
           Package segverifier implements primitives for verifying path segments. | Package segverifier implements primitives for verifying path segments. |