2020-11-27 17:31:32 +00:00
|
|
|
mpbl3p_udp = Proto("mpbl3p_udp", "Multi Path Proxy Custom UDP")
|
|
|
|
|
|
|
|
ack_F = ProtoField.uint32("mpbl3p_udp.ack", "Acknowledgement")
|
|
|
|
nack_F = ProtoField.uint32("mpbl3p_udp.nack", "Negative Acknowledgement")
|
|
|
|
seq_F = ProtoField.uint32("mpbl3p_udp.seq", "Sequence Number")
|
|
|
|
time_F = ProtoField.absolute_time("mpbl3p_udp.time", "Timestamp")
|
|
|
|
proxied_F = ProtoField.bytes("mpbl3p_udp.data", "Proxied Data")
|
|
|
|
|
|
|
|
mpbl3p_udp.fields = { ack_F, nack_F, seq_F, time_F, proxied_F }
|
|
|
|
|
|
|
|
function mpbl3p_udp.dissector(buffer, pinfo, tree)
|
|
|
|
if buffer:len() < 20 then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
pinfo.cols.protocol = "MPBL3P_UDP"
|
|
|
|
|
|
|
|
local ack = buffer(0, 4):le_uint()
|
|
|
|
local nack = buffer(4, 4):le_uint()
|
|
|
|
local seq = buffer(8, 4):le_uint()
|
|
|
|
|
|
|
|
local unix_time = buffer(buffer:len() - 8, 8):le_uint64()
|
|
|
|
|
|
|
|
local subtree = tree:add(mpbl3p_udp, buffer(), "Multi Path Proxy Header, SEQ: " .. seq .. " ACK: " .. ack .. " NACK: " .. nack)
|
|
|
|
|
|
|
|
subtree:add(ack_F, ack)
|
|
|
|
subtree:add(nack_F, nack)
|
|
|
|
subtree:add(seq_F, seq)
|
|
|
|
subtree:add(time_F, NSTime.new(unix_time:tonumber()))
|
|
|
|
if buffer:len() > 20 then
|
|
|
|
subtree:add(proxied_F, buffer(12, buffer:len() - 12 - 8))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-02-27 19:01:59 +00:00
|
|
|
DissectorTable.get("udp.port"):add(4724, mpbl3p_udp)
|
|
|
|
DissectorTable.get("udp.port"):add(4725, mpbl3p_udp)
|