Documentation
¶
Index ¶
- Constants
- Variables
- func Log(msg string)
- func ParseIpAddr(ipAddrStr string) ([]byte, error)
- func ParseMacAddr(macAddrStr string) ([]byte, error)
- type Config
- type Engine
- type NatFlow
- type NatFlowHash
- type NatPortMappingEntry
- type NatPortMappingEntryConfig
- type NatWanFlowHash
- type NetIf
- func (i *NetIf) FindRoute(ipv4DstAddr []byte) (nextHopIpAddr []byte, outNetIfName string)
- func (i *NetIf) GetArpCache(ipAddr []byte) (macAddr []byte)
- func (i *NetIf) HandleArp(ethPayload []byte, ethSrcMac []byte)
- func (i *NetIf) MacAddrToU(macAddr []byte) (macAddrU uint64)
- func (i *NetIf) NatAddFlow(lanHostAddr []byte, remoteAddr []byte, lanHostPort uint16, remotePort uint16) *NatFlow
- func (i *NetIf) NatGetFlowByHash(natFlowHash NatFlowHash) *NatFlow
- func (i *NetIf) NatGetFlowByWan(remoteIpAddr []byte, remotePort uint16, wanIpAddr []byte, wanPort uint16) *NatFlow
- func (i *NetIf) NatTableClear()
- func (i *NetIf) PacketHandle()
- func (i *NetIf) RxEthernet(ethFrm []byte)
- func (i *NetIf) RxIcmp(ipv4Payload []byte, ipv4SrcAddr []byte)
- func (i *NetIf) RxIpv4(ethPayload []byte)
- func (i *NetIf) RxTcp()
- func (i *NetIf) RxUdp(ipv4Payload []byte, ipv4SrcAddr []byte)
- func (i *NetIf) SendFreeArp()
- func (i *NetIf) SendUdpPktByFlow(natFlowHash NatFlowHash, dir int, udpPayload []byte)
- func (i *NetIf) SetArpCache(ipAddr []byte, macAddr []byte)
- func (i *NetIf) TxEthernet(ethPayload []byte, ethDstMac []byte, ethProto uint16) []byte
- func (i *NetIf) TxIcmp(icmpPayload []byte, seq uint16, ipv4DstAddr []byte) []byte
- func (i *NetIf) TxIpv4(ipv4Payload []byte, ipv4HeadProto uint8, ipv4DstAddr []byte) []byte
- func (i *NetIf) TxTcpAck(tcpSrcPort uint16, tcpDstPort uint16, ipv4DstAddr []byte) []byte
- func (i *NetIf) TxTcpSyn(tcpSrcPort uint16, tcpDstPort uint16, ipv4DstAddr []byte) []byte
- func (i *NetIf) TxTcpSynAck(tcpSrcPort uint16, tcpDstPort uint16, ipv4DstAddr []byte) []byte
- func (i *NetIf) TxUdp(udpPayload []byte, udpSrcPort uint16, udpDstPort uint16, ipv4DstAddr []byte) []byte
- func (i *NetIf) UToMacAddr(macAddrU uint64) (macAddr []byte)
- type NetIfConfig
- type PortAlloc
- type RoutingEntry
- type RoutingEntryConfig
- type SrcAddr
Constants ¶
View Source
const ( NatTypeSymmetric = 0 // 对称型 NatTypeFullCone = 1 // 完全圆锥型 )
View Source
const ( LanToWan = iota WanToLan )
Variables ¶
View Source
var (
BROADCAST_MAC_ADDR = []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
)
View Source
var (
DefaultLogWriter io.Writer = nil
)
Functions ¶
func ParseIpAddr ¶
func ParseMacAddr ¶
Types ¶
type Config ¶
type Config struct { DebugLog bool // 调试日志 NetIfList []*NetIfConfig // 网卡列表 RoutingTable []*RoutingEntryConfig // 路由表 }
type Engine ¶
type Engine struct { DebugLog bool // 调试日志 Stop bool // 停止标志 NetIfMap map[string]*NetIf // 网络接口集合 key:接口名 value:接口实例 RoutingTable []*RoutingEntry // 路由表 Ipv4PktFwdHook func(raw []byte, dir int) (drop bool, mod []byte) // ip报文转发钩子 }
func InitEngine ¶
func (*Engine) StopEngine ¶
func (e *Engine) StopEngine()
type NatFlowHash ¶ added in v1.0.3
type NatFlowHash struct { RemoteIpAddr uint32 // 远程ip地址 RemotePort uint16 // 远程端口 LanHostIpAddr uint32 // lan口主机ip地址 LanHostPort uint16 // lan口主机端口 }
func (NatFlowHash) String ¶ added in v1.0.3
func (f NatFlowHash) String() string
type NatPortMappingEntry ¶ added in v1.0.6
type NatPortMappingEntryConfig ¶ added in v1.0.6
type NatWanFlowHash ¶ added in v1.0.6
type NetIf ¶
type NetIf struct { Name string // 接口名 MacAddr []byte // mac地址 IpAddr []byte // ip地址 NetworkMask []byte // 子网掩码 EthRxChan chan []byte // 物理层接收管道 EthTxChan chan []byte // 物理层发送管道 LoChan chan []byte // 本地回环管道 Engine *Engine // 归属Engine指针 ArpCacheTable map[uint32]uint64 // arp缓存表 key:ip value:mac ArpCacheTableLock sync.RWMutex // arp缓存表锁 NatEnable bool // 是否开启nat NatType int // nat类型 NatWanFlowTable map[NatWanFlowHash]*NatFlow // wan口回程包nat流映射表 NatFlowTable map[NatFlowHash]*NatFlow // nat流表 NatPortAlloc map[uint32]*PortAlloc // nat端口分配表 key:目的ip value:端口分配信息 NatPortMappingTable []*NatPortMappingEntry // 网络地址转换端口映射表 NatTableLock sync.RWMutex // nat表锁 HandleUdp func(udpPayload []byte, udpSrcPort uint16, udpDstPort uint16, ipv4SrcAddr []byte) }
func (*NetIf) GetArpCache ¶
func (*NetIf) MacAddrToU ¶ added in v1.0.1
func (*NetIf) NatAddFlow ¶ added in v1.0.3
func (*NetIf) NatGetFlowByHash ¶ added in v1.0.3
func (i *NetIf) NatGetFlowByHash(natFlowHash NatFlowHash) *NatFlow
func (*NetIf) NatGetFlowByWan ¶ added in v1.0.3
func (*NetIf) NatTableClear ¶ added in v1.0.2
func (i *NetIf) NatTableClear()
func (*NetIf) PacketHandle ¶
func (i *NetIf) PacketHandle()
func (*NetIf) RxEthernet ¶ added in v1.0.1
func (*NetIf) SendFreeArp ¶ added in v1.0.6
func (i *NetIf) SendFreeArp()
func (*NetIf) SendUdpPktByFlow ¶ added in v1.0.3
func (i *NetIf) SendUdpPktByFlow(natFlowHash NatFlowHash, dir int, udpPayload []byte)
func (*NetIf) SetArpCache ¶
func (*NetIf) TxEthernet ¶ added in v1.0.1
func (*NetIf) TxTcpSynAck ¶
func (*NetIf) UToMacAddr ¶ added in v1.0.1
type NetIfConfig ¶
type RoutingEntry ¶ added in v1.0.1
type RoutingEntryConfig ¶ added in v1.0.1
Click to show internal directories.
Click to hide internal directories.