ltou_protocol = Proto("LToU", "LocalTalk-over-UDP")
fieldSender = ProtoField.uint32("ltou.sender", "sender", base.DEC)
fieldDstNode = ProtoField.uint8("ltou.dstNode", "destination node", base.DEC)
fieldDstSocket = ProtoField.uint8("ltou.dstSocket", "destination socket", base.DEC)
fieldSrcNode = ProtoField.uint8("ltou.srcNode", "source node", base.DEC)
fieldSrcSocket = ProtoField.uint8("ltou.srcSocket", "source socket", base.DEC)
fieldSize = ProtoField.uint16("ltou.size", "size", base.DEC)
fieldOpcode = ProtoField.uint8("ltou.opcode", "LLAP opcode", base.DEC)
fieldDDPType = ProtoField.uint8("ltou.ddpType", "DDP type", base.DEC)
ltou_protocol.fields = {
fieldSender,
fieldDstNode,
fieldDstSocket,
fieldSrcNode,
fieldSrcSocket,
fieldSize,
fieldOpcode,
fieldDDPType,
}
local ddp = DissectorTable.get("ddp.type")
function ltou_protocol.dissector(buffer, pinfo, tree)
length = buffer:len()
if length == 0 then return end
pinfo.cols.protocol = ltou_protocol.name
local subtree = tree:add(ltou_protocol, buffer(), "LocalTalk-over-UDP Data")
subtree:add(fieldSender, buffer(0,4))
subtree:add(fieldDstNode, buffer(4,1))
subtree:add(fieldSrcNode, buffer(5,1))
subtree:add(fieldOpcode, buffer(6,1))
-- Short DDP Header
subtree:add(fieldDstSocket, buffer(9,1))
subtree:add(fieldSrcSocket, buffer(10,1))
subtree:add(fieldSize, buffer(7,2))
subtree:add(fieldDDPType, buffer(11,1))
ddpType = buffer(11,1):uint()
size = buffer(7,2):uint()
ddp:try(ddpType, buffer(12, size - 5):tvb(), pinfo, tree)
end
local udp_port = DissectorTable.get("udp.port")
udp_port:add(1954, ltou_protocol)