Documentation ¶
Overview ¶
Package spathmeta implements basic types for working with SCIOND paths.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AppPath ¶
type AppPath struct {
Entry *sciond.PathReplyEntry
}
AppPath contains a SCIOND path entry.
type AppPathSet ¶
AppPathSet represents a set of SCIOND path entries, keyed by AppPath.Key().
func NewAppPathSet ¶
func NewAppPathSet(reply *sciond.PathReply) AppPathSet
NewAppPathSet creates a new set of paths from a SCIOND path reply.
func (AppPathSet) Add ¶
func (aps AppPathSet) Add(entry *sciond.PathReplyEntry) *AppPath
Add converts the SCIOND path entry to an AppPath and adds it to the set.
func (AppPathSet) Copy ¶
func (aps AppPathSet) Copy() AppPathSet
func (AppPathSet) GetAppPath ¶
func (aps AppPathSet) GetAppPath(pref PathKey) *AppPath
GetAppPath returns an AppPath from the set. It first tries to find a path with key pref; if one cannot be found, an arbitrary one is returned.
func (AppPathSet) String ¶
func (aps AppPathSet) String() string
type PathPredicate ¶
type PathPredicate struct {
Match []sciond.PathInterface
}
A PathPredicate specifies which sequence of ASes and interfaces the packet must travel through; gaps in the matching are allowed. Wildcard ISDs, ASes and IFIDs are specified with 0. For example, a path filtering predicate that only allows paths which pass through ISD1 can be created with:
pp, err = NewPathPredicate("1-0#0")
To allow paths passing through ISD-AS 1-ff00:0:310 interface 27 and then ISD-AS 1-ff00:0:320 interface 95:
pp, err = NewPathPredicate("1-ff00:0:310#27,1-ff00:0:320#95")
func NewPathPredicate ¶
func NewPathPredicate(expr string) (*PathPredicate, error)
func (*PathPredicate) Eval ¶
func (pp *PathPredicate) Eval(path *sciond.PathReplyEntry) bool
func (*PathPredicate) MarshalJSON ¶
func (pp *PathPredicate) MarshalJSON() ([]byte, error)
func (*PathPredicate) String ¶
func (pp *PathPredicate) String() string
func (*PathPredicate) UnmarshalJSON ¶
func (pp *PathPredicate) UnmarshalJSON(b []byte) error