From 23f9633b1e01eb66b3af94fdb1fbe58588b183b4 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Sat, 13 Apr 2024 15:33:48 +1000 Subject: [PATCH] Remove NBP machine for now --- main.go | 27 ++++++++++++++++++--------- nbp.go | 37 ------------------------------------- 2 files changed, 18 insertions(+), 46 deletions(-) delete mode 100644 nbp.go diff --git a/main.go b/main.go index 530193e..450bfce 100644 --- a/main.go +++ b/main.go @@ -170,14 +170,6 @@ func main() { rtmpCh := make(chan *ddp.ExtPacket, 1024) go rtmpMachine.Run(ctx, rtmpCh) - // ---------------------------------- NBP --------------------------------- - nbpMachine := &NBPMachine{ - aarp: aarpMachine, - pcapHandle: pcapHandle, - } - nbpCh := make(chan *ddp.ExtPacket, 1024) - go nbpMachine.Run(ctx, nbpCh) - // ---------------------- Raw AppleTalk/AARP inbound ---------------------- go func() { for { @@ -276,7 +268,24 @@ func main() { rtmpCh <- ddpkt case 2: // The NIS (NBP socket) - nbpCh <- ddpkt + if ddpkt.Proto != ddp.ProtoNBP { + log.Printf("NBP: invalid DDP type %d on socket 2", ddpkt.Proto) + } + + nbpkt, err := nbp.Unmarshal(ddpkt.Data) + if err != nil { + log.Printf("NBP: invalid packet: %v", err) + continue + } + + log.Printf("NBP: Got %v id %d with tuples %v", nbpkt.Function, nbpkt.NBPID, nbpkt.Tuples) + + // Is it a BrRq? + if nbpkt.Function == nbp.FunctionBrRq { + // TODO: Translate it into a FwdReq and route it to the + // routers with the appropriate zone(s). + log.Print("NBP: TODO: BrRq-FwdReq translation") + } case 4: // The AEP socket if err := handleAEP(pcapHandle, myHWAddr, ethFrame.Src, ddpkt); err != nil { diff --git a/nbp.go b/nbp.go deleted file mode 100644 index 75f0711..0000000 --- a/nbp.go +++ /dev/null @@ -1,37 +0,0 @@ -package main - -import ( - "context" - "log" - - "gitea.drjosh.dev/josh/jrouter/atalk/nbp" - "github.com/google/gopacket/pcap" - "github.com/sfiera/multitalk/pkg/ddp" -) - -type NBPMachine struct { - aarp *AARPMachine - pcapHandle *pcap.Handle -} - -func (NBPMachine) Run(ctx context.Context, incoming <-chan *ddp.ExtPacket) error { - for { - select { - case <-ctx.Done(): - return ctx.Err() - - case ddpkt := <-incoming: - if ddpkt.Proto != ddp.ProtoNBP { - log.Printf("NBP: invalid DDP type %d on socket 2", ddpkt.Proto) - } - - pkt, err := nbp.Unmarshal(ddpkt.Data) - if err != nil { - log.Printf("NBP: invalid packet: %v", err) - continue - } - // TODO: - log.Printf("NBP: Got %v", pkt.Function) - } - } -}