diff --git a/aarp.go b/aarp.go index dffc321..eb873d8 100644 --- a/aarp.go +++ b/aarp.go @@ -21,6 +21,13 @@ const ( aarpRequestTimeout = 10 * time.Second ) +type aarpState int + +const ( + aarpStateProbing aarpState = iota + aarpStateAssigned +) + // AARPMachine maintains both an Address Mapping Table and handles AARP packets // (sending and receiving requests, responses, and probes). This process assumes // a particular network range rather than using the startup range, since this @@ -37,12 +44,16 @@ type AARPMachine struct { myAddr aarp.AddrPair } -type aarpState int - -const ( - aarpStateProbing aarpState = iota - aarpStateAssigned -) +func NewAARPMachine(cfg *config, pcapHandle *pcap.Handle, myHWAddr ethernet.Addr) *AARPMachine { + return &AARPMachine{ + AMT: new(AMT), + cfg: cfg, + pcapHandle: pcapHandle, + myAddr: aarp.AddrPair{ + Hardware: myHWAddr, + }, + } +} func (a *AARPMachine) Run(ctx context.Context, incomingCh <-chan *ethertalk.Packet) error { ticker := time.NewTicker(200 * time.Millisecond) // 200ms is the AARP probe retransmit diff --git a/main.go b/main.go index ebee46c..b85597d 100644 --- a/main.go +++ b/main.go @@ -31,7 +31,6 @@ import ( "gitea.drjosh.dev/josh/jrouter/atalk" "gitea.drjosh.dev/josh/jrouter/aurp" - "github.com/sfiera/multitalk/pkg/aarp" "github.com/sfiera/multitalk/pkg/ddp" "github.com/sfiera/multitalk/pkg/ethernet" "github.com/sfiera/multitalk/pkg/ethertalk" @@ -151,14 +150,7 @@ func main() { } defer pcapHandle.Close() - aarpMachine := &AARPMachine{ - AMT: new(AMT), - cfg: cfg, - pcapHandle: pcapHandle, - myAddr: aarp.AddrPair{ - Hardware: myHWAddr, - }, - } + aarpMachine := NewAARPMachine(cfg, pcapHandle, myHWAddr) aarpCh := make(chan *ethertalk.Packet, 1024) go aarpMachine.Run(ctx, aarpCh)