Documentation ¶
Overview ¶
Copyright 2017 ETH Zurich
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Ctx ¶
type Ctx struct { // Conf contains the router state for this context. Conf *conf.Conf // LockSockIn is a slice of Sock's for receiving packets from the local AS, // indexed by the local address index. LocSockIn []*Sock // LocSockOut is a slice of Sock's for sending packets to the local AS, // indexed by the local address index. LocSockOut []*Sock // ExtSockIn is a map of Sock's for receiving packets from neighbouring // ASes, keyed by the interface ID of the relevant link. ExtSockIn map[common.IFIDType]*Sock // ExtSockOut is a map of Sock's for sending packets to neighbouring ASes, // keyed by the interface ID of the relevant link. ExtSockOut map[common.IFIDType]*Sock }
Ctx is the main router context structure.
type Sock ¶
type Sock struct { // Ring is a ring-buffer that's written to by writers, and read from by readers. Ring *ringbuf.Ring // Conn is the underlying connection that this Sock represents. Conn conn.Conn // Dir is the direction that a packet is being read from/written to. Dir rcmn.Dir // Ifids is the list of interface IDs associated with a connection. Ifids []common.IFIDType // LocIdx is the local address index. It is only meaningful for packets // received from the local AS. LocIdx int // Labels holds the exported prometheus labels. Labels prometheus.Labels // Reader is an optional function that reads from Sock.Ring. It is spawned // in a go routine when Sock.Start() is called. Reader SockFunc // Writer is an optional function that writes to Sock.Ring. It is spawned // in a go routine when Sock.Start() is called. Writer SockFunc // contains filtered or unexported fields }
Sock represents one direction of data-flow from an underlying connection. Each connection will have 2 Sock's associated, one for reading data from the network, the other for writing data to the network.