Files
zeromesh/internal/vl2/network.go

39 lines
755 B
Go

package vl2
import (
"log/slog"
"zeromesh/internal/identity"
)
type NetworkConfig struct {
ID uint32
Name string
IPRange string
IP6Range string
MTU int
Multicast bool
}
type Network struct {
Config NetworkConfig
Switch *Switch
ARP *ARPProxy
LocalMAC [6]byte
log *slog.Logger
}
func NewNetwork(config NetworkConfig, nodeAddr identity.Address, sender PeerSender, log *slog.Logger) *Network {
netLog := log.With("network", config.ID, "name", config.Name)
mac := GenerateMAC(config.ID, nodeAddr)
var macArr [6]byte
copy(macArr[:], mac)
return &Network{
Config: config,
Switch: NewSwitch(config.ID, sender, netLog),
ARP: NewARPProxy(netLog),
LocalMAC: macArr,
log: netLog,
}
}