51 lines
969 B
Go
51 lines
969 B
Go
// Copyright Safing ICS Technologies GmbH. Use of this source code is governed by the AGPL license that can be found in the LICENSE file.
|
|
|
|
package packet
|
|
|
|
import (
|
|
"net"
|
|
)
|
|
|
|
// Info holds IP and TCP/UDP header information
|
|
type Info struct {
|
|
Direction bool
|
|
InTunnel bool
|
|
|
|
Version IPVersion
|
|
Src, Dst net.IP
|
|
Protocol IPProtocol
|
|
SrcPort, DstPort uint16
|
|
}
|
|
|
|
// LocalIP returns the local IP of the packet.
|
|
func (pi *Info) LocalIP() net.IP {
|
|
if pi.Direction {
|
|
return pi.Dst
|
|
}
|
|
return pi.Src
|
|
}
|
|
|
|
// RemoteIP returns the remote IP of the packet.
|
|
func (pi *Info) RemoteIP() net.IP {
|
|
if pi.Direction {
|
|
return pi.Src
|
|
}
|
|
return pi.Dst
|
|
}
|
|
|
|
// LocalPort returns the local port of the packet.
|
|
func (pi *Info) LocalPort() uint16 {
|
|
if pi.Direction {
|
|
return pi.DstPort
|
|
}
|
|
return pi.SrcPort
|
|
}
|
|
|
|
// RemotePort returns the remote port of the packet.
|
|
func (pi *Info) RemotePort() uint16 {
|
|
if pi.Direction {
|
|
return pi.SrcPort
|
|
}
|
|
return pi.DstPort
|
|
}
|