packet-f5ethtrailer.c: "Decode" Platform identifiers

Add a new line that explains the Platform ID, e.g. "Z101: vCMP Guest"
Also: Include the terminating zero bytes of STRINGZ values in the highlighting.

Change-Id: I6b79af708816c5c2b45d1c50d9a3587f46906018
Reviewed-on: https://code.wireshark.org/review/30724
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
Petri-Dish: Jörg Mayer <jmayer@loplof.de>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Joerg Mayer 2018-11-19 11:08:12 +01:00 committed by Anders Broman
parent d3aaea10f7
commit 5800ca9bb5
1 changed files with 83 additions and 8 deletions

View File

@ -7,7 +7,7 @@
/*
Supported Platforms:
BIGIP 9.4.2 and later.
BIGIP 9.4.2 and later for the trailer, BIGIP 11.2.0 and later for fileinfo
Usage:
@ -329,6 +329,7 @@ static gint hf_fi_command = -1;
static gint hf_fi_version = -1;
static gint hf_fi_hostname = -1;
static gint hf_fi_platform = -1;
static gint hf_fi_platformname = -1;
static gint hf_fi_product = -1;
/* Wireshark preference to show RST cause in info column */
@ -3272,6 +3273,74 @@ void proto_reg_handoff_f5ethtrailer(void)
* method instead).
*/
/* Platform ID to platform name mapping
*
* https://support.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-ltm-11-6-0.html
* https://support.f5.com/csp/article/K9476
*/
static const string_string f5info_platform_strings[] = {
{ "A100", "VIPRION B4100 Blade" },
{ "A105", "VIPRION B4100N Blade" },
{ "A107", "VIPRION B4200 Blade" },
{ "A108", "VIPRION B4300 Blade" },
{ "A109", "VIPRION B2100 Blade" },
{ "A110", "VIPRION B4340N Blade" },
{ "A111", "VIPRION B4200N Blade" },
{ "A112", "VIPRION B2250 Blade" },
{ "A113", "VIPRION B2150 Blade" },
{ "A114", "VIPRION B4450 Blade" },
{ "C102", "BIG-IP 1600" },
{ "C103", "BIG-IP 3600" },
{ "C106", "BIG-IP 3900, Enterprise Manager 4000" },
{ "C109", "BIG-IP 5000s, 5050s, 5200v, 5250v" },
{ "C112", "BIG-IP 2000 Series (2000s, 2200s)" },
{ "C113", "BIG-IP 4000 Series (4000s, 4200v)" },
{ "C114", "BIG-IP 800 (LTM only)" },
{ "C115", "BIG-IP i4000 Series (i4600, i4800)" },
{ "C116", "BIG-IP i10000 Series (i10600, i10800)" },
{ "C117", "BIG-IP i2000 Series (i2600, i2800)" },
{ "C118", "BIG-IP i7000 Series (i7600, i7800)" },
{ "C119", "BIG-IP i5000 Series (i5600, i5800)" },
{ "C120", "Herculon i2800" },
{ "C121", "Herculon i5800" },
{ "C122", "Herculon i10800" },
{ "C123", "BIG-IP i11600, i11800" },
{ "C124", "BIG-IP i11400-DS, i11600-DS, i11800-DS" },
{ "C125", "BIG-IP i5820-DF" },
{ "C126", "BIG-IP i7820-DF" },
{ "D104", "BIG-IP 6900 Series (6900, 6900S, 6900F, 6900N)" },
{ "D106", "BIG-IP 8900" },
{ "D107", "BIG-IP 8950" },
{ "D110", "BIG-IP 7000 Series (7000s, 7050s, 7055, 7200v, 7250v, 7255)" },
{ "D111", "BIG-IP 12000 Series (12250v)" },
{ "D112", "BIG-IP 10050 Series (10150s-NEBS, 10350v (AC), 10350v-NEBS, 10350v-FIPS)" },
{ "D113", "BIG-IP 10000 Series (10000s, 10050s, 10055, 10200v, 10250v, 10255)" },
{ "E101", "BIG-IP 11000" },
{ "E102", "BIG-IP 11050, 11050 NEBS" },
{ "E103", "11050N" },
{ "Z100", "Virtual Edition (VE)" },
{ "Z101", "vCMP Guest" },
{ NULL, NULL }
};
/* It currently looks like these do not apply. Kept for completeness only */
#if 0
{ "C21", "FirePass 1200" },
{ "D46", "FirePass 4100" },
{ "D63", "BIG-IP 6400-NEBS" },
{ "D101", "FirePass 4300" },
{ "D114", "VIPRION C2200 Chassis" },
{ "F100", "VIPRION C2400 Chassis" },
{ "J100", "VIPRION C4400 Chassis" },
{ "J101", "VIPRION C4400N Chassis" },
{ "J102", "VIPRION C4480 Chassis" },
{ "J103", "VIPRION C4480N Chassis" },
{ "S100", "VIPRION C4800 Chassis" },
{ "S101", "VIPRION C4800N Chassis" },
#endif
/*---------------------------------------------------------------------------*/
/* Dissector for rendering the F5 tcpdump file properties packet.
*
@ -3291,7 +3360,7 @@ dissect_f5fileinfo(
) {
guint offset = 0;
const guint8 *object;
const guint8 *platform = NULL;
const gchar *platform = NULL;
gint objlen;
struct f5fileinfo_tap_data* tap_data;
@ -3320,14 +3389,14 @@ dissect_f5fileinfo(
break;
if(strncmp(object, "CMD: ", 5) == 0) {
proto_tree_add_item(tree, hf_fi_command, tvb, offset+5, objlen-6, ENC_ASCII);
proto_tree_add_item(tree, hf_fi_command, tvb, offset+5, objlen-5, ENC_ASCII);
col_add_str(pinfo->cinfo, COL_INFO, &object[5]);
}
else if(strncmp(object, "VER: ", 5) == 0) {
guint i;
const guint8 *c;
proto_tree_add_item(tree, hf_fi_version, tvb, offset+5, objlen-6, ENC_ASCII|ENC_NA);
proto_tree_add_item(tree, hf_fi_version, tvb, offset+5, objlen-5, ENC_ASCII|ENC_NA);
for(c=object; *c && (*c < '0' || *c > '9'); c++);
for(i=0; i<6 && *c; c++) {
if(*c < '0' || *c > '9') {
@ -3337,13 +3406,15 @@ dissect_f5fileinfo(
}
}
else if(strncmp(object, "HOST: ", 6) == 0)
proto_tree_add_item(tree, hf_fi_hostname, tvb, offset+6, objlen-7, ENC_ASCII|ENC_NA);
proto_tree_add_item(tree, hf_fi_hostname, tvb, offset+6, objlen-6, ENC_ASCII|ENC_NA);
else if(strncmp(object, "PLAT: ", 6) == 0) {
proto_tree_add_item(tree, hf_fi_platform, tvb, offset+6, objlen-7, ENC_ASCII|ENC_NA);
platform = tvb_get_string_enc(wmem_packet_scope(), tvb, offset+6, objlen-7, ENC_ASCII);
proto_tree_add_item(tree, hf_fi_platform, tvb, offset+6, objlen-6, ENC_ASCII|ENC_NA);
platform = tvb_get_string_enc(wmem_packet_scope(), tvb, offset+6, objlen-6, ENC_ASCII);
proto_tree_add_string_format(tree, hf_fi_platformname, tvb, offset+6, objlen-6, "", "%s: %s",
platform, str_to_str(platform, f5info_platform_strings, "Unknown, please report"));
}
else if(strncmp(object, "PROD: ", 6) == 0)
proto_tree_add_item(tree, hf_fi_product, tvb, offset+6, objlen-7, ENC_ASCII|ENC_NA);
proto_tree_add_item(tree, hf_fi_product, tvb, offset+6, objlen-6, ENC_ASCII|ENC_NA);
offset += objlen;
}
@ -3372,6 +3443,10 @@ void proto_register_f5fileinfo(void)
{ "Platform", "f5fileinfo.platform", FT_STRINGZ, BASE_NONE,
NULL, 0x0, NULL, HFILL }
},
{ &hf_fi_platformname,
{ "Platform name", "f5fileinfo.platformname", FT_STRINGZ, BASE_NONE,
NULL, 0x0, NULL, HFILL }
},
{ &hf_fi_product,
{ "Platform product", "f5fileinfo.product", FT_STRINGZ, BASE_NONE,
NULL, 0x0, NULL, HFILL }