@@ -46,6 +46,7 @@ function doom.dissector(tvbuf, pktinfo, root)
4646 end
4747
4848 local tree = root :add (doom , tvbuf :range (0 ,pktlen ))
49+ local pkt_bytes = tvbuf :bytes ()
4950
5051 local flags_range = tvbuf :range (0 , 4 )
5152 local flag_tree = tree :add_le (doom_flags , flags_range )
@@ -55,15 +56,26 @@ function doom.dissector(tvbuf, pktinfo, root)
5556 flag_tree :add_le (doom_flag_setup , flags_range )
5657 flag_tree :add_le (doom_flag_kill , flags_range )
5758
59+ if (pkt_bytes :le_uint (0 , 4 ) & NCMD_SETUP ) ~= 0 then
60+ pktinfo .cols .info :set (" Game start packet" )
61+ return
62+ end
63+
5864 tree :add (doom_retransmitfrom , tvbuf :range (4 , 1 ))
5965 tree :add (doom_starttic , tvbuf :range (5 , 1 ))
6066 tree :add (doom_player , tvbuf :range (6 , 1 ))
6167 tree :add (doom_numtics , tvbuf :range (7 , 1 ))
6268
63- local pkt_bytes = tvbuf :bytes ()
6469 local starttic = pkt_bytes :get_index (5 )
6570 local numtics = pkt_bytes :get_index (7 )
6671
72+ pktinfo .cols .info :set (" Game data" )
73+ if numtics == 1 then
74+ pktinfo .cols .info :append (string.format (" : tic %d" , starttic ))
75+ else
76+ pktinfo .cols .info :append (string.format (" : tics %d-%d" , starttic , starttic + numtics - 1 ))
77+ end
78+
6779 local tics_range = tvbuf (8 )
6880 for i = 0 , numtics - 1 do
6981 local tic_range = tics_range :range (i * 8 , 8 )
@@ -113,6 +125,10 @@ function doom_ipx.dissector(tvbuf, pktinfo, root)
113125 tree :add_le (ipxsetup_tail , tvbuf :range (pktlen - 4 , 4 ))
114126
115127 if pkt_bytes :uint (0 , 4 ) == 0xffffffff then
128+ pktinfo .cols .info :set (
129+ string.format (" Game setup packet: %d/%d nodes found" ,
130+ pkt_bytes :le_uint (8 , 2 ),
131+ pkt_bytes :le_uint (10 , 2 )))
116132 tree :add_le (ipxsetup_gameid , tvbuf :range (4 , 2 ))
117133 tree :add_le (ipxsetup_drone , tvbuf :range (6 , 2 ))
118134 tree :add_le (ipxsetup_nodesfound , tvbuf :range (8 , 2 ))
0 commit comments