seg

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2018 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ASEntry

type ASEntry struct {
	RawIA      addr.IAInt `capnp:"isdas"`
	TrcVer     uint64
	CertVer    uint64
	IfIDSize   uint8
	HopEntries []*HopEntry `capnp:"hops"`
	MTU        uint16      `capnp:"mtu"`
	Exts       struct {
		RoutingPolicy common.RawBytes `capnp:"-"` // Not supported yet
		Sibra         common.RawBytes `capnp:"-"` // Not supported yet
	}
}

func NewASEntryFromRaw

func NewASEntryFromRaw(b common.RawBytes) (*ASEntry, error)

func (*ASEntry) IA

func (ase *ASEntry) IA() addr.IA

func (*ASEntry) Pack

func (ase *ASEntry) Pack() (common.RawBytes, error)

func (*ASEntry) ProtoId

func (ase *ASEntry) ProtoId() proto.ProtoIdType

func (*ASEntry) String

func (ase *ASEntry) String() string

func (*ASEntry) Validate

func (ase *ASEntry) Validate(prevIA addr.IA, nextIA addr.IA) error

type HopEntry

type HopEntry struct {
	RawInIA     addr.IAInt `capnp:"inIA"`
	RemoteInIF  common.IFIDType
	InMTU       uint16     `capnp:"inMTU"`
	RawOutIA    addr.IAInt `capnp:"outIA"`
	RemoteOutIF common.IFIDType
	RawHopField []byte `capnp:"hopF"`
}

func (*HopEntry) HopField

func (e *HopEntry) HopField() (*spath.HopField, error)

func (*HopEntry) InIA

func (e *HopEntry) InIA() addr.IA

func (*HopEntry) OutIA

func (e *HopEntry) OutIA() addr.IA

type Meta

type Meta struct {
	Type    proto.PathSegType
	Segment *PathSegment `capnp:"pathSeg"`
}

func NewMeta added in v0.3.0

func NewMeta(s *PathSegment, t proto.PathSegType) *Meta

func (*Meta) String

func (m *Meta) String() string

type PathSegment

type PathSegment struct {
	RawSData     common.RawBytes        `capnp:"sdata"`
	SData        *PathSegmentSignedData `capnp:"-"`
	RawASEntries []*proto.SignedBlobS   `capnp:"asEntries"`
	ASEntries    []*ASEntry             `capnp:"-"`
	// contains filtered or unexported fields
}

func NewSeg

func NewSeg(infoF *spath.InfoField) (*PathSegment, error)

func NewSegFromRaw

func NewSegFromRaw(b common.RawBytes) (*PathSegment, error)

func (*PathSegment) AddASEntry

func (ps *PathSegment) AddASEntry(ase *ASEntry, signType proto.SignType,
	signSrc common.RawBytes) error

func (*PathSegment) ContainsInterface

func (ps *PathSegment) ContainsInterface(ia addr.IA, ifid common.IFIDType) bool

func (*PathSegment) FirstIA added in v0.3.0

func (ps *PathSegment) FirstIA() addr.IA

FirstIA returns the IA of the first ASEntry. Note that if the seg contains no ASEntries this method will panic.

func (*PathSegment) ID

func (ps *PathSegment) ID() (common.RawBytes, error)

func (*PathSegment) InfoF

func (ps *PathSegment) InfoF() (*spath.InfoField, error)

func (*PathSegment) LastIA added in v0.3.0

func (ps *PathSegment) LastIA() addr.IA

LastIA returns the IA of the last ASEntry. Note that if the seg contains no ASEntries this method will panic.

func (*PathSegment) MaxAEIdx

func (ps *PathSegment) MaxAEIdx() int

func (*PathSegment) MaxExpiry added in v0.3.0

func (ps *PathSegment) MaxExpiry() time.Time

MaxExpiry returns the maximum expiry of all hop fields. Assumes segment is validated.

func (*PathSegment) MinExpiry added in v0.3.0

func (ps *PathSegment) MinExpiry() time.Time

MinExpiry returns the minimum expiry of all hop fields. Assumes segment is validated.

func (*PathSegment) Pack

func (ps *PathSegment) Pack() (common.RawBytes, error)

func (*PathSegment) ParseRaw

func (ps *PathSegment) ParseRaw() error

func (*PathSegment) ProtoId

func (ps *PathSegment) ProtoId() proto.ProtoIdType

func (*PathSegment) RawWriteTo added in v0.3.0

func (ps *PathSegment) RawWriteTo(w io.Writer) (int64, error)

RawWriteTo writes the PathSegment to the writer in a form that is understood by spath/Path.

func (*PathSegment) SignLastASEntry

func (ps *PathSegment) SignLastASEntry(key common.RawBytes) error

func (*PathSegment) String

func (ps *PathSegment) String() string

func (*PathSegment) Validate

func (ps *PathSegment) Validate() error

func (*PathSegment) VerifyASEntry

func (ps *PathSegment) VerifyASEntry(key common.RawBytes, idx int) error

func (*PathSegment) WalkHopEntries

func (ps *PathSegment) WalkHopEntries() error

WalkHopEntries iterates through the hop entries of asEntries, checking that the hop fields within can be parsed. If an parse error is found, the function immediately returns with an error.

func (*PathSegment) Write

func (ps *PathSegment) Write(b common.RawBytes) (int, error)

type PathSegmentSignedData

type PathSegmentSignedData struct {
	RawInfo common.RawBytes `capnp:"infoF"`
}

func NewPathSegmentSignedDataFromRaw

func NewPathSegmentSignedDataFromRaw(b common.RawBytes) (*PathSegmentSignedData, error)

func (*PathSegmentSignedData) InfoF

func (pss *PathSegmentSignedData) InfoF() (*spath.InfoField, error)

func (*PathSegmentSignedData) ProtoId

func (pss *PathSegmentSignedData) ProtoId() proto.ProtoIdType

func (*PathSegmentSignedData) String

func (pss *PathSegmentSignedData) String() string

func (*PathSegmentSignedData) Validate added in v0.3.0

func (pss *PathSegmentSignedData) Validate() error

type Segments added in v0.3.0

type Segments []*PathSegment

Segments is just a helper type to have additional methods on top of a slice of PathSegments.

func (*Segments) FilterSegs added in v0.3.0

func (segs *Segments) FilterSegs(keep func(*PathSegment) bool) int

FilterSegs filters the given segs and only keeps the segments for which keep returns true. Modifies segs in-place. Returns the number of segments filtered out.

func (Segments) FirstIAs added in v0.3.0

func (segs Segments) FirstIAs() []addr.IA

FirstIAs returns the slice of FirstIAs in the given segments. Each FirstIA appears just once.

func (Segments) LastIAs added in v0.3.0

func (segs Segments) LastIAs() []addr.IA

LastIAs returns the slice of LastIAs in the given segments. Each LastIA appears just once.

Jump to

Keyboard shortcuts

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