mirror of
https://github.com/soypat/lneto.git
synced 2026-09-08 15:59:10 +00:00
add ethernet tx FCS to StackAsyncConfig
This commit is contained in:
+18
-10
@@ -53,14 +53,15 @@ type StackAsync struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type StackConfig struct {
|
type StackConfig struct {
|
||||||
StaticAddress netip.Addr
|
StaticAddress netip.Addr
|
||||||
DNSServer netip.Addr
|
DNSServer netip.Addr
|
||||||
NTPServer netip.Addr
|
NTPServer netip.Addr
|
||||||
Hostname string
|
Hostname string
|
||||||
MaxTCPConns int
|
MaxTCPConns int
|
||||||
RandSeed int64
|
RandSeed int64
|
||||||
HardwareAddress [6]byte
|
HardwareAddress [6]byte
|
||||||
MTU uint16
|
MTU uint16
|
||||||
|
EthernetTxCRC32Update func(crc uint32, b []byte) uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StackAsync) Hostname() string {
|
func (s *StackAsync) Hostname() string {
|
||||||
@@ -91,7 +92,6 @@ func (s *StackAsync) Reset(cfg StackConfig) error {
|
|||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
defer s.mu.Unlock()
|
defer s.mu.Unlock()
|
||||||
mac := cfg.HardwareAddress
|
mac := cfg.HardwareAddress
|
||||||
mtu := cfg.MTU
|
|
||||||
addr := cfg.StaticAddress
|
addr := cfg.StaticAddress
|
||||||
s.prng = uint32(cfg.RandSeed)
|
s.prng = uint32(cfg.RandSeed)
|
||||||
if s.prng == 0 {
|
if s.prng == 0 {
|
||||||
@@ -104,7 +104,15 @@ func (s *StackAsync) Reset(cfg StackConfig) error {
|
|||||||
return errors.New("IPv6 unsupported as of yet")
|
return errors.New("IPv6 unsupported as of yet")
|
||||||
}
|
}
|
||||||
const linkNodes = 2 // ARP and IP nodes
|
const linkNodes = 2 // ARP and IP nodes
|
||||||
err := s.link.Reset6(mac, ethernet.BroadcastAddr(), int(mtu), linkNodes)
|
ecfg := internet.StackEthernetConfig{
|
||||||
|
MTU: int(cfg.MTU),
|
||||||
|
MaxNodes: linkNodes,
|
||||||
|
MAC: mac,
|
||||||
|
Gateway: ethernet.BroadcastAddr(),
|
||||||
|
AppendCRC32: cfg.EthernetTxCRC32Update != nil,
|
||||||
|
CRC32Update: cfg.EthernetTxCRC32Update,
|
||||||
|
}
|
||||||
|
err := s.link.Configure(ecfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user