From 7470324b4933d41590eca6503abb52795d963cc7 Mon Sep 17 00:00:00 2001 From: soypat Date: Sat, 16 Aug 2025 22:55:27 -0300 Subject: [PATCH] add statistics and MTU method to stack --- x/xnet/stack-async.go | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/x/xnet/stack-async.go b/x/xnet/stack-async.go index aa8a7f7..8aa95db 100644 --- a/x/xnet/stack-async.go +++ b/x/xnet/stack-async.go @@ -47,8 +47,10 @@ type StackAsync struct { sysprec int8 // NTP system precision. - prng uint32 - lastrecv uint16 + prng uint32 + + totalsent uint64 + totalrecv uint64 } type StackConfig struct { @@ -71,14 +73,21 @@ func (s *StackAsync) Hostname() string { func (s *StackAsync) Demux(carrierData []byte, etherOff int) error { s.mu.Lock() defer s.mu.Unlock() - s.lastrecv = uint16(len(carrierData)) + s.totalrecv += uint64(len(carrierData) - etherOff) return s.link.Demux(carrierData, etherOff) } func (s *StackAsync) Encapsulate(carrierData []byte, etherOff int) (int, error) { s.mu.Lock() defer s.mu.Unlock() - return s.link.Encapsulate(carrierData, etherOff) + + n, err := s.link.Encapsulate(carrierData, etherOff) + s.totalsent += uint64(n) + return n, err +} + +func (s *StackAsync) MTU() int { + return s.link.MTU() } func (s *StackAsync) Reset(cfg StackConfig) error { @@ -425,6 +434,16 @@ func (s *StackAsync) ResultDHCP() (*DHCPResults, error) { return &s.dhcpResults, nil } +type Statistics struct { + TotalSent uint64 + TotalReceived uint64 +} + +func (s *StackAsync) ReadStatistics(stats *Statistics) { + stats.TotalReceived = s.totalrecv + stats.TotalSent = s.totalsent +} + // AssimilateDHCPResults sets the stack's following parameters: // - IPv4 address. // - DNS server.