Documentation ¶
Index ¶
- Constants
- func ConnectionExceptionReportHash(r *ConnectionExceptionReport) uint64
- func StatsFlowContentHash(r *FlowRecord) (contenthash uint64)
- func StatsFlowHash(r *FlowRecord) (flowhash, contenthash uint64)
- func StatsUserHash(r *UserRecord) error
- type ConnectionExceptionReport
- type ContainerRecord
- type CounterReport
- type Counters
- type DNSRequestReport
- type DefaultCollector
- func (d *DefaultCollector) CollectConnectionExceptionReport(report *ConnectionExceptionReport)
- func (d *DefaultCollector) CollectContainerEvent(record *ContainerRecord)
- func (d *DefaultCollector) CollectCounterEvent(report *CounterReport)
- func (d *DefaultCollector) CollectDNSRequests(report *DNSRequestReport)
- func (d *DefaultCollector) CollectFlowEvent(record *FlowRecord)
- func (d *DefaultCollector) CollectPacketEvent(report *PacketReport)
- func (d *DefaultCollector) CollectPingEvent(report *PingReport)
- func (d *DefaultCollector) CollectTraceEvent(records []string)
- func (d *DefaultCollector) CollectUserEvent(record *UserRecord)
- type EndPoint
- type EndPointType
- type EventCollector
- type FlowRecord
- type IPTablesTrace
- type IPTablesTraceRecord
- type PacketReport
- type PingReport
- type UserRecord
Constants ¶
const ( // FlowReject indicates that a flow was rejected FlowReject = "reject" // FlowAccept logs that a flow is accepted FlowAccept = "accept" // MissingToken indicates that the token was missing MissingToken = "missingtoken" // InvalidToken indicates that the token was invalid InvalidToken = "token" // InvalidFormat indicates that the packet metadata were not correct InvalidFormat = "format" // InvalidHeader indicates that the TCP header was not there. InvalidHeader = "header" // InvalidPayload indicates that the TCP payload was not there or bad. InvalidPayload = "payload" // InvalidContext indicates that there was no context in the metadata InvalidContext = "context" // InvalidConnection indicates that there was no connection found InvalidConnection = "connection" // InvalidState indicates that a packet was received without proper state information InvalidState = "state" // InvalidNonse indicates that the nonse check failed InvalidNonse = "nonse" // PolicyDrop indicates that the flow is rejected because of the policy decision PolicyDrop = "policy" // APIPolicyDrop indicates that the request was dropped because of failed API validation. APIPolicyDrop = "api" // UnableToDial indicates that the proxy cannot dial out the connection UnableToDial = "dial" // CompressedTagMismatch indicates that the compressed tag version is dissimilar CompressedTagMismatch = "compressedtagmismatch" // EncryptionMismatch indicates that the policy encryption varies between client and server enforcer EncryptionMismatch = "encryptionmismatch" // DatapathVersionMismatch indicates that the datapath version is dissimilar DatapathVersionMismatch = "datapathversionmismatch" // PacketDrop indicate a single packet drop PacketDrop = "packetdrop" )
Flow event description
const ( // ContainerStart indicates a container start event ContainerStart = "start" // ContainerStop indicates a container stop event ContainerStop = "stop" // ContainerCreate indicates a container create event ContainerCreate = "create" // ContainerDelete indicates a container delete event ContainerDelete = "delete" // ContainerUpdate indicates a container policy update event ContainerUpdate = "update" // ContainerFailed indicates an event that a container was stopped because of policy issues ContainerFailed = "forcestop" // ContainerIgnored indicates that the container will be ignored by Trireme ContainerIgnored = "ignore" // ContainerDeleteUnknown indicates that policy for an unknown container was deleted ContainerDeleteUnknown = "unknowncontainer" )
Container event description
const ( // PolicyValid Normal flow accept PolicyValid = "V" // DefaultEndPoint provides a string for unknown container sources DefaultEndPoint = "default" // SomeClaimsSource provides a string for some claims flow source. SomeClaimsSource = "some-claims" )
Variables ¶
This section is empty.
Functions ¶
func ConnectionExceptionReportHash ¶
func ConnectionExceptionReportHash(r *ConnectionExceptionReport) uint64
ConnectionExceptionReportHash is a hash function to hash connection exception reports.
func StatsFlowContentHash ¶
func StatsFlowContentHash(r *FlowRecord) (contenthash uint64)
StatsFlowContentHash is a hash function to hash flows. Ignores source ports. Returns contenthash - hash with all contents to compare quickly and report when changes are observed
func StatsFlowHash ¶
func StatsFlowHash(r *FlowRecord) (flowhash, contenthash uint64)
StatsFlowHash is a hash function to hash flows. Ignores source ports. Returns two hashes flowhash - minimal with SIP/DIP/Dport contenthash - hash with all contents to compare quickly and report when changes are observed
func StatsUserHash ¶
func StatsUserHash(r *UserRecord) error
StatsUserHash is a hash function to hash user records.
Types ¶
type ConnectionExceptionReport ¶
type ConnectionExceptionReport struct { Timestamp time.Time PUID string Namespace string Protocol int SourceIP string DestinationIP string DestinationPort uint16 State string Reason string Value uint32 }
ConnectionExceptionReport represents a single connection exception report from datapath.
type ContainerRecord ¶
type ContainerRecord struct { ContextID string IPAddress policy.ExtendedMap Tags *policy.TagStore Event string }
ContainerRecord is a statistics record for a container
type CounterReport ¶
CounterReport is called from the PU which reports Counters from the datapath
type DNSRequestReport ¶
type DNSRequestReport struct { ContextID string Namespace string Source *EndPoint Destination *EndPoint NameLookup string Error string Count int Ts time.Time IPs []string }
DNSRequestReport object is used to report dns requests being made by PU's
type DefaultCollector ¶
type DefaultCollector struct{}
DefaultCollector implements a default collector infrastructure to syslog
func (*DefaultCollector) CollectConnectionExceptionReport ¶
func (d *DefaultCollector) CollectConnectionExceptionReport(report *ConnectionExceptionReport)
CollectConnectionExceptionReport collects the connection exception report
func (*DefaultCollector) CollectContainerEvent ¶
func (d *DefaultCollector) CollectContainerEvent(record *ContainerRecord)
CollectContainerEvent is part of the EventCollector interface.
func (*DefaultCollector) CollectCounterEvent ¶
func (d *DefaultCollector) CollectCounterEvent(report *CounterReport)
CollectCounterEvent collect counters from the datapath
func (*DefaultCollector) CollectDNSRequests ¶
func (d *DefaultCollector) CollectDNSRequests(report *DNSRequestReport)
CollectDNSRequests collect counters from the datapath
func (*DefaultCollector) CollectFlowEvent ¶
func (d *DefaultCollector) CollectFlowEvent(record *FlowRecord)
CollectFlowEvent is part of the EventCollector interface.
func (*DefaultCollector) CollectPacketEvent ¶
func (d *DefaultCollector) CollectPacketEvent(report *PacketReport)
CollectPacketEvent collects packet events from the datapath
func (*DefaultCollector) CollectPingEvent ¶
func (d *DefaultCollector) CollectPingEvent(report *PingReport)
CollectPingEvent collects ping events from the datapath
func (*DefaultCollector) CollectTraceEvent ¶
func (d *DefaultCollector) CollectTraceEvent(records []string)
CollectTraceEvent collects iptables trace events
func (*DefaultCollector) CollectUserEvent ¶
func (d *DefaultCollector) CollectUserEvent(record *UserRecord)
CollectUserEvent is part of the EventCollector interface.
type EndPoint ¶ added in v1.0.24
type EndPoint struct { ID string IP string URI string HTTPMethod string UserID string Type EndPointType Port uint16 }
EndPoint is a structure that holds all the endpoint information
type EndPointType ¶ added in v1.0.24
type EndPointType byte
EndPointType is the type of an endpoint (PU or an external IP address )
const ( // EndPointTypeExternalIP indicates that the endpoint is an external IP address EndPointTypeExternalIP EndPointType = iota // EndPointTypePU indicates that the endpoint is a PU. EndPointTypePU // EndPointTypeClaims indicates that the endpoint is of type claims. EndPointTypeClaims )
func (*EndPointType) String ¶ added in v1.0.24
func (e *EndPointType) String() string
type EventCollector ¶
type EventCollector interface { // CollectFlowEvent collect a flow event. CollectFlowEvent(record *FlowRecord) // CollectContainerEvent collects a container events CollectContainerEvent(record *ContainerRecord) // CollectUserEvent collects a user event CollectUserEvent(record *UserRecord) // CollectTraceEvent collects a set of trace messages generated with Iptables trace command CollectTraceEvent(records []string) // CollectPacketEvent collects packet event from nfqdatapath CollectPacketEvent(report *PacketReport) // CollectCounterEvent collects the counters from CollectCounterEvent(counterReport *CounterReport) // CollectDNSRequests collects the dns requests CollectDNSRequests(request *DNSRequestReport) // CollectPingEvent collects the ping events CollectPingEvent(report *PingReport) // CollectConnectionExceptionReport collects the connection exception report CollectConnectionExceptionReport(report *ConnectionExceptionReport) }
EventCollector is the interface for collecting events.
func NewDefaultCollector ¶
func NewDefaultCollector() EventCollector
NewDefaultCollector returns a default implementation of an EventCollector
type FlowRecord ¶
type FlowRecord struct { ContextID string Namespace string Source EndPoint Destination EndPoint Tags []string DropReason string PolicyID string ObservedPolicyID string ServiceType policy.ServiceType ServiceID string Count int Action policy.ActionType ObservedAction policy.ActionType ObservedActionType policy.ObserveActionType L4Protocol uint8 SourceController string DestinationController string RuleName string }
FlowRecord describes a flow record for statistis
func (*FlowRecord) String ¶ added in v1.0.24
func (f *FlowRecord) String() string
type IPTablesTrace ¶
type IPTablesTrace struct { Namespace string Timestamp int64 Records []*IPTablesTraceRecord }
IPTablesTrace is a bundle of iptables trace records
type IPTablesTraceRecord ¶
type IPTablesTraceRecord struct { TTL int Chain string DestinationIP string DestinationInterface string DestinationPort int Length int PacketID int Protocol int RuleID int SourceIP string SourceInterface string SourcePort int TableName string }
IPTablesTraceRecord is the info parsed out from a trace event message
type PacketReport ¶
type PacketReport struct { TCPFlags int Claims []string DestinationIP string DestinationPort int DropReason string Encrypt bool Event packettracing.PacketEvent Length int Mark int Namespace string PacketID int Protocol int PUID string SourceIP string SourcePort int TriremePacket bool Timestamp int64 Payload []byte }
PacketReport is the struct which is used to report packets captured in datapath
type PingReport ¶
type PingReport struct { PingID string IterationID int Type gaia.PingProbeTypeValue PUID string Namespace string FourTuple string RTT string Protocol int ServiceType string PayloadSize int PayloadSizeType gaia.PingProbePayloadSizeTypeValue PolicyID string PolicyAction policy.ActionType AgentVersion string ApplicationListening bool SeqNum uint32 TargetTCPNetworks bool ExcludedNetworks bool Error string Claims []string ClaimsType gaia.PingProbeClaimsTypeValue ACLPolicyID string ACLPolicyAction policy.ActionType PeerCertIssuer string PeerCertSubject string PeerCertExpiry time.Time IsServer bool ServiceID string // Remote pu fields. RemoteController string RemotePUID string RemoteEndpointType EndPointType RemoteNamespace string RemoteNamespaceType gaia.PingProbeRemoteNamespaceTypeValue }
PingReport represents a single ping report from datapath.
type UserRecord ¶
UserRecord reports a new user access. These will be reported periodically.
Directories ¶
Path | Synopsis |
---|---|
Package mockcollector is a generated GoMock package.
|
Package mockcollector is a generated GoMock package. |