cmd/ziffy/node/config.go (57 lines of code) (raw):
/*
Copyright (c) Facebook, Inc. and its affiliates.
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.
*/
package node
import (
"time"
ptp "github.com/facebook/time/ptp/protocol"
)
const (
// ZiffyHexa signs zi(0xff)y PTP packets
ZiffyHexa = 0xff
// Ipv6HeaderSize is ipv6 header size
Ipv6HeaderSize = 40
// UDPHeaderSize is udp header size
UDPHeaderSize = 8
// ICMPHeaderSize is icmp ipv6 header size
ICMPHeaderSize = 8
// PTPUnusedSize received from sender
PTPUnusedSize = 10
)
// Config is the Ziffy config struct
type Config struct {
Mode string
LogLevel string
Device string
CsvFile string
DestinationAddress string
DestinationPort int
SourcePort int
PortCount int
HopMax int
HopMin int
IPCount int
DSCP int
PTPRecvHandlers int
ContReached bool
IcmpTimeout time.Duration
MessageType ptp.MessageType
LLDPWaitTime time.Duration
IcmpReplyTime time.Duration
// QueueCap used to store ICMP messages. Capacity is the number of late messages
// stored until the queue is cleared. After each traceRoute, sender clears the queue.
// For worst case scenario maximum capacity should be (HopMax - HopMin + 1) * PortCount * IPCount
QueueCap int
}
// SwitchPrintInfo contains print information for switches
type SwitchPrintInfo struct {
ip string
hostname string
interf string
routes int
divRoutes int
totalCF ptp.Correction
avgCF ptp.Correction
maxCF ptp.Correction
minCF ptp.Correction
tcEnable status
hop int
last bool
}
// SwitchTrafficInfo contains information about a switch
type SwitchTrafficInfo struct {
ip string
corrField ptp.Correction
routeIdx int
hop int
}
// PathInfo contains the list of switches in a path
type PathInfo struct {
switches []SwitchTrafficInfo
rackSwHostname string
}