[WIP] Unmarshal DDP from AURP

This commit is contained in:
Josh Deprez 2024-04-06 10:34:54 +11:00
parent 9c997c1a41
commit 0234b6701c
Signed by: josh
SSH key fingerprint: SHA256:zZji7w1Ilh2RuUpbQcqkLPrqmRwpiCSycbF2EfKm6Kw

24
main.go
View file

@ -256,19 +256,17 @@ func main() {
log.Printf("The packet parsed succesfully as a %T", pkt)
if _, ok := pkt.(*aurp.AppleTalkPacket); ok {
// Probably something like:
//
// * parse the DDP header
// * check that this is headed for our local network
// * write the packet out in an EtherTalk frame
//
// or maybe if we were implementing a "central hub"
//
// * parse the DDP header
// * see if we know the network
// * forward to the peer with that network and lowest metric
log.Print("TODO: handle AppleTalk packets")
if apkt, ok := pkt.(*aurp.AppleTalkPacket); ok {
var ddpkt ddp.ExtPacket
if err := ddp.ExtUnmarshal(apkt.Data, &ddpkt); err != nil {
log.Printf("AURP: Couldn't unmarshal encapsulated DDP packet: %v", err)
continue
}
log.Printf("AURP encapsulated DDP: src (%d.%d s %d) dst (%d.%d s %d) proto %d data len %d",
ddpkt.SrcNet, ddpkt.SrcNode, ddpkt.SrcSocket,
ddpkt.DstNet, ddpkt.DstNode, ddpkt.DstSocket,
ddpkt.Proto, len(ddpkt.Data))
continue
}
// Existing peer?