| -- Simple LUA script to print the size of BSSGP messages over their type... |
| |
| do |
| local ip_bucket = {} |
| |
| local pdu_types = {} |
| pdu_types[ 6] = "PAGING" |
| pdu_types[11] = "SUSPEND" |
| pdu_types[12] = "SUSPEND-ACK" |
| pdu_types[32] = "BVC-BLOCK" |
| pdu_types[33] = "BVC-BLOCK-ACK" |
| pdu_types[34] = "BVC-RESET" |
| pdu_types[35] = "BVC-RESET-ACK" |
| pdu_types[36] = "UNBLOCK" |
| pdu_types[37] = "UNBLOCK-ACK" |
| pdu_types[38] = "FLOW-CONTROL-BVC" |
| pdu_types[39] = "FLOW-CONTROL-BVC-ACK" |
| pdu_types[40] = "FLOW-CONTROL-MS" |
| pdu_types[41] = "FLOW-CONTROL-MS-ACK" |
| pdu_types[44] = "LLC-DISCARDED" |
| |
| local function init_listener() |
| -- handle the port as NS over IP |
| local udp_port_table = DissectorTable.get("udp.port") |
| local gprs_ns_dis = Dissector.get("gprs_ns") |
| udp_port_table:add(23000,gprs_ns_dis) |
| |
| -- bssgp filters |
| local bssgp_pdu_get = Field.new("bssgp.pdu_type") |
| local udp_length_get = Field.new("udp.length") |
| |
| local tap = Listener.new("ip", "udp.port == 23000") |
| function tap.packet(pinfo,tvb,ip) |
| local pdu = bssgp_pdu_get() |
| local len = udp_length_get() |
| |
| -- only handle bssgp, but we also want the IP frame |
| if not pdu then |
| return |
| end |
| |
| pdu = tostring(pdu) |
| if tonumber(pdu) == 0 or tonumber(pdu) == 1 then |
| return |
| end |
| |
| local ip_src = tostring(ip.ip_src) |
| local bssgp_histo = ip_bucket[ip_src] |
| if not bssgp_histo then |
| bssgp_histo = {} |
| ip_bucket[ip_src] = bssgp_histo |
| end |
| |
| local key = pdu |
| local bucket = bssgp_histo[key] |
| if not bucket then |
| bucket = {} |
| bssgp_histo[key] = bucket |
| end |
| |
| table.insert(bucket, tostring(len)) |
| print("IP: " .. ip_src .. " PDU: " .. pdu_types[tonumber(pdu)] .. " Length: " .. tostring(len)) |
| end |
| |
| function tap.draw() |
| -- well... this will not be called... |
| -- for ip,bssgp_histo in pairs(dumpers) do |
| -- print("IP " .. ip) |
| -- end |
| end |
| |
| function tap.reset() |
| -- well... this will not be called... |
| end |
| end |
| |
| init_listener() |
| end |