mirror of
https://github.com/soypat/lneto.git
synced 2026-08-21 23:19:03 +00:00
Add ICMPv4 and lneto.StackNode and deprecate internet.StackNode (#65)
* begin adding icmp client * rely on anon structs * add tests * tests passing * icmp fleshed out * rework icmp to include ip addr * rename StackAsync.Demux/Encapsulate to RecvEthernet and SendEthernet * remove legacy unreachable TCP tests * remove uses of deprecated internet.StackNode in preference of lneto.StackNode * documentation * rename methods to signal no I/O happening
This commit is contained in:
@@ -101,6 +101,19 @@ func (ls *StackEthernet) Configure(cfg StackEthernetConfig) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// MaxFrameLength returns the maximum ethernet frame length in bytes, which is the MTU plus the Ethernet header (14 bytes) and CRC (4 bytes if enabled).
|
||||
// This is the maximum size of an Ethernet frame that can be sent from the stack.
|
||||
func (ls *StackEthernet) MaxFrameLength() int {
|
||||
base := int(ls.mtu) + 14
|
||||
if ls.crcupdate != nil {
|
||||
base += 4
|
||||
}
|
||||
return base
|
||||
}
|
||||
|
||||
// MTU is the Maximum Transmission Unit of the stack corresponding
|
||||
// to the maximum payload size of an ethernet frame that can be sent through the stack.
|
||||
// Important to note that the actual ethernet frame size is MTU + Ethernet header (14) + CRC (4 if enabled), this is known as the Maximum Frame Length.
|
||||
func (ls *StackEthernet) MTU() int { return int(ls.mtu) }
|
||||
|
||||
func (ls *StackEthernet) ConnectionID() *uint64 { return &ls.connID }
|
||||
@@ -109,7 +122,7 @@ func (ls *StackEthernet) LocalPort() uint16 { return 0 }
|
||||
|
||||
func (ls *StackEthernet) Protocol() uint64 { return 1 }
|
||||
|
||||
func (ls *StackEthernet) Register(h StackNode) error {
|
||||
func (ls *StackEthernet) Register(h lneto.StackNode) error {
|
||||
proto := h.Protocol()
|
||||
if proto > math.MaxUint16 || proto <= 1500 {
|
||||
return lneto.ErrInvalidConfig
|
||||
|
||||
Reference in New Issue
Block a user