static void dissect_UDPInitAck(tvbuff_t *tvb, proto_tree *adwin_tree) { if (! adwin_tree) return; ADWIN_ADD_BE(adwin_tree, pattern, 0, 4); ADWIN_ADD_LE(adwin_tree, reboot, 4, 4); ADWIN_ADD_BE(adwin_tree, mac, 8, 6); ADWIN_ADD_LE(adwin_tree, unused, 14, 2); ADWIN_ADD_LE(adwin_tree, unused, 16, 80); }
static void dissect_UDPOut(tvbuff_t *tvb, proto_tree *adwin_tree) { if (! adwin_tree) return; ADWIN_ADD_LE(adwin_tree, status, 0, 4); ADWIN_ADD_BE(adwin_tree, mac, 4, 6); ADWIN_ADD_LE(adwin_tree, netmask, 10, 4); ADWIN_ADD_BE(adwin_tree, gateway, 14, 4); ADWIN_ADD_LE(adwin_tree, dhcp, 18, 2); ADWIN_ADD_BE(adwin_tree, port16, 20, 2); }
static void dissect_UDPExtStatus(tvbuff_t *tvb, proto_tree *adwin_tree) { const gchar *processor_type, *system_type; if (! adwin_tree) return; ADWIN_ADD_BE(adwin_tree, mac, 0, 6); ADWIN_ADD_LE(adwin_tree, unused, 6, 2); ADWIN_ADD_BE(adwin_tree, pattern, 8, 4); ADWIN_ADD_BE(adwin_tree, version, 12, 4); ADWIN_ADD_LE(adwin_tree, description, 16, 16); ADWIN_ADD_BE(adwin_tree, timerresets, 32, 4); ADWIN_ADD_BE(adwin_tree, socketshutdowns, 36, 4); ADWIN_ADD_BE(adwin_tree, disk_free, 40, 4); ADWIN_ADD_BE(adwin_tree, disk_size, 44, 4); ADWIN_ADD_LE(adwin_tree, date, 48, 8); ADWIN_ADD_LE(adwin_tree, revision, 56, 8); /* add the processor type raw values to the tree, to allow filtering */ ADWIN_ADD_LE(adwin_tree, processor_type, 64, 2); /* add the processor type as a pretty printed string */ processor_type = tvb_get_ephemeral_string(tvb, 64, 2); processor_type = str_to_str(processor_type, processor_type_mapping, "Unknown (%s)"); proto_tree_add_text(adwin_tree, tvb, 64, 2, "Processor Type: %s", processor_type); /* add system type as raw value and pretty printed string */ ADWIN_ADD_LE(adwin_tree, system_type, 66, 2); system_type = tvb_get_ephemeral_string(tvb, 66, 2); system_type = str_to_str(system_type, system_type_mapping, "Unknown (%s)"); proto_tree_add_text(adwin_tree, tvb, 66, 2, "System Type: %s", system_type); ADWIN_ADD_LE(adwin_tree, unused, 68,364); }
static void dissect_GDSHP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *adwin_tree, proto_tree *adwin_debug_tree) { guint32 i, seq_num; /* Get the transaction identifier */ seq_num = tvb_get_ntohl(tvb, 0); adwin_request_response_handling(tvb, pinfo, adwin_tree, seq_num, ADWIN_RESPONSE); if (! adwin_tree) return; SET_PACKET_TYPE(adwin_tree, APT_GDSHP); ADWIN_ADD_BE(adwin_tree, packet_index, 0, 4); ADWIN_ADD_BE(adwin_tree, packet_no, 4, 4); ADWIN_ADD_BE(adwin_tree, unused, 8, 4); if (! global_adwin_dissect_data) { proto_tree_add_text(adwin_debug_tree, tvb, 12, 336 * 4, "Data"); return; } for (i = 0; i < 336; i++) { proto_item *item; guint32 offset = 12 + i * sizeof(guint32); gint32 value = tvb_get_letohl(tvb, offset); void * fvalue = &value; proto_tree_add_text(adwin_debug_tree, tvb, offset, 4, "Data[%3d]: %10d - %10f - 0x%08x", i, value, *(float*)fvalue, value); item = ADWIN_ADD_LE(adwin_debug_tree, data_int, offset, 4); PROTO_ITEM_SET_HIDDEN(item); item = ADWIN_ADD_LE(adwin_debug_tree, data_float, offset, 4); PROTO_ITEM_SET_HIDDEN(item); item = ADWIN_ADD_LE(adwin_debug_tree, data_hex, offset, 4); PROTO_ITEM_SET_HIDDEN(item); } }
static void dissect_UDPIXP425FlashUpdate(tvbuff_t *tvb, proto_tree *adwin_tree) { if (! adwin_tree) return; ADWIN_ADD_BE(adwin_tree, pattern, 0, 4); ADWIN_ADD_BE(adwin_tree, version, 4, 4); ADWIN_ADD_BE(adwin_tree, scan_id, 8, 4); ADWIN_ADD_BE(adwin_tree, status, 12, 4); ADWIN_ADD_BE(adwin_tree, timeout, 16, 4); ADWIN_ADD_BE(adwin_tree, filename, 20, 24); ADWIN_ADD_BE(adwin_tree, mac, 44, 6); ADWIN_ADD_BE(adwin_tree, unused, 50, 42); }
static void dissect_GDSHR(tvbuff_t *tvb, packet_info *pinfo, proto_tree *adwin_tree, proto_tree *adwin_debug_tree) { guint32 is_range, packet_start, packet_end, seq_num; /* Get the transaction identifier */ seq_num = tvb_get_ntohl(tvb, 0); adwin_request_response_handling(tvb, pinfo, adwin_tree, seq_num, ADWIN_RESPONSE); if (! adwin_tree) return; SET_PACKET_TYPE(adwin_tree, APT_GDSHR); ADWIN_ADD_BE(adwin_tree, packet_index, 0, 4); ADWIN_ADD_BE(adwin_tree, request_no, 4, 4); ADWIN_ADD_BE(adwin_tree, complete_packets, 8, 4); ADWIN_ADD_BE(adwin_debug_tree, is_range, 12, 4); ADWIN_ADD_BE(adwin_debug_tree, packet_start, 16, 4); ADWIN_ADD_BE(adwin_debug_tree, packet_end, 20, 4); is_range = tvb_get_ntohl(tvb, 12); packet_start = tvb_get_ntohl(tvb, 16); switch(is_range) { case 0: proto_tree_add_text(adwin_tree, tvb, 12, 12, "GDSH status: get single packet no %d", packet_start); break; case 1: packet_end = tvb_get_ntohl(tvb, 20); proto_tree_add_text(adwin_tree, tvb, 12, 12, "GDSH status: get packets %d - %d", packet_start, packet_end); break; case 2: proto_tree_add_text(adwin_tree, tvb, 12, 12, "GDSH status: finished"); break; default: /* should not happen */ proto_tree_add_text(adwin_tree, tvb, 12, 12, "GDSH status: unknown code %d", is_range); } ADWIN_ADD_BE(adwin_debug_tree, unused, 24, 40); }
static void dissect_UDPStatus(tvbuff_t *tvb, proto_tree *adwin_tree) { proto_tree *status_tree; proto_tree *debug_tree; proto_item *st, *dt; if (! adwin_tree) return; dt = proto_tree_add_item(adwin_tree, proto_adwin_config, tvb, 0, -1, ENC_NA); debug_tree = proto_item_add_subtree(dt, ett_adwin_config_debug); proto_item_set_text(dt, "ADwin Debug information"); ADWIN_ADD_BE(adwin_tree, pattern, 0, 4); ADWIN_ADD_BE(adwin_tree, version, 4, 4); st = ADWIN_ADD_BE(adwin_tree, status, 8, 4); status_tree = proto_item_add_subtree(st, ett_adwin_config_status); ADWIN_ADD_BE(status_tree, status_bootloader, 8, 4); ADWIN_ADD_BE(status_tree, status_reprogrammable, 8, 4); ADWIN_ADD_BE(status_tree, status_configurable, 8, 4); ADWIN_ADD_BE(status_tree, status_bootloader_boots, 8, 4); ADWIN_ADD_BE(status_tree, status_bootloader_reprogrammable,8, 4); ADWIN_ADD_BE(status_tree, status_bootloader_receive, 8, 4); ADWIN_ADD_BE(status_tree, status_bootloader_reprogramming_done, 8, 4); ADWIN_ADD_BE(status_tree, status_eeprom_support, 8, 4); ADWIN_ADD_BE(adwin_tree, server_version_beta,12, 2); ADWIN_ADD_BE(adwin_tree, server_version, 14, 2); ADWIN_ADD_BE(adwin_tree, xilinx_version, 16, 4); ADWIN_ADD_BE(adwin_tree, mac, 20, 6); ADWIN_ADD_LE(debug_tree, unused, 26, 2); ADWIN_ADD_BE(adwin_tree, port16, 28, 2); ADWIN_ADD_LE(adwin_tree, dhcp, 30, 1); ADWIN_ADD_LE(adwin_tree, netmask_count, 31, 1); ADWIN_ADD_BE(adwin_tree, gateway, 32, 4); ADWIN_ADD_LE(debug_tree, unused, 36, 11); ADWIN_ADD_LE(adwin_tree, reply_broadcast, 47, 1); ADWIN_ADD_LE(adwin_tree, scan_id, 48, 4); }
static void dissect_UDPH1_generic(tvbuff_t *tvb, packet_info *pinfo, proto_tree *adwin_tree, proto_tree *adwin_debug_tree, gchar** info_string, const gchar* packet_name) { guint32 i3plus1code = 0, instructionID, seq_num; instructionID = tvb_get_letohl(tvb, 0); *info_string = ep_strdup_printf("%s: %s", packet_name, val_to_str_ext(instructionID, &instruction_mapping_ext, "unknown instruction: %d")); if (instructionID == I_3PLUS1) { gchar *tmp = *info_string; i3plus1code = tvb_get_letohl(tvb, 20); *info_string = ep_strdup_printf("%s: %s", tmp, val_to_str_ext(i3plus1code, &instruction_3plus1_mapping_ext, "unknown 3+1 code: %d")); } /* Get the transaction identifier */ seq_num = tvb_get_letohl(tvb, 4); adwin_request_response_handling(tvb, pinfo, adwin_tree, seq_num, ADWIN_REQUEST); if (! adwin_tree) return; SET_PACKET_TYPE(adwin_tree, APT_UDPH1_old); ADWIN_ADD_LE(adwin_tree, instruction, 0, 4); ADWIN_ADD_LE(adwin_tree, packet_index, 4, 4); ADWIN_ADD_BE(adwin_tree, password, 8, 10); ADWIN_ADD_LE(adwin_debug_tree, unused, 18, 2); switch(instructionID) { case I_3PLUS1: ADWIN_ADD_LE(adwin_tree, i3plus1, 20, 4); switch (i3plus1code) { case I_3P1_SET_PAR: ADWIN_ADD_LE(adwin_tree, parameter, 24, 4); ADWIN_ADD_LE(adwin_tree, val1, 28, 4); ADWIN_ADD_LE(adwin_tree, val1f, 28, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 32, 4); break; case I_3P1_GET_PAR: ADWIN_ADD_LE(adwin_tree, parameter, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; case I_3P1_GET_MEMORY_INFO: case I_3P1_GET_DETAILED_MEM_INFO: ADWIN_ADD_LE(adwin_tree, mem_type, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; case I_3P1_START: case I_3P1_STOP: case I_3P1_CLEAR_PROCESS: ADWIN_ADD_LE(adwin_tree, process_no, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; case I_3P1_GET_DATA_LENGTH: ADWIN_ADD_LE(adwin_tree, data_no32, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; case I_3P1_CLEAR_FIFO: case I_3P1_GET_FIFO_EMPTY: case I_3P1_GET_FIFO_COUNT: ADWIN_ADD_LE(adwin_tree, fifo_no32, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; default: ; /* should not happen */ /* illegal values should be displayed properly by 3plus1_mapping */ } break; case I_BOOT: ADWIN_ADD_LE(adwin_tree, memsize, 20, 4); ADWIN_ADD_LE(adwin_tree, blocksize, 24, 2); ADWIN_ADD_LE(adwin_debug_tree, unused, 26, 2); ADWIN_ADD_LE(adwin_tree, processor, 28, 4); ADWIN_ADD_LE(adwin_tree, binfilesize, 32, 4); break; case I_LOAD_BIN_FILE: ADWIN_ADD_LE(adwin_debug_tree, unused, 20, 6); ADWIN_ADD_LE(adwin_tree, blocksize, 26, 2); ADWIN_ADD_LE(adwin_tree, processor, 28, 4); ADWIN_ADD_LE(adwin_tree, binfilesize, 32, 4); break; case I_GET_WORKLOAD: ADWIN_ADD_LE(adwin_tree, instruction, 20, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 24, 12); break; case I_GET_DATA_TYPE: ADWIN_ADD_LE(adwin_debug_tree, unused, 20, 4); ADWIN_ADD_LE(adwin_tree, data_no32, 24, 4); ADWIN_ADD_LE(adwin_tree, start_index, 28, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 32, 4); break; case I_GET_DATA: case I_SET_DATA: ADWIN_ADD_LE(adwin_tree, data_type, 20, 4); ADWIN_ADD_LE(adwin_tree, data_no16, 24, 2); ADWIN_ADD_LE(adwin_tree, blocksize, 26, 2); ADWIN_ADD_LE(adwin_tree, start_index, 28, 4); ADWIN_ADD_LE(adwin_tree, count, 32, 4); break; case I_GET_DATA_SHIFTED_HANDSHAKE: ADWIN_ADD_BE(adwin_tree, data_no16, 20, 2); ADWIN_ADD_BE(adwin_tree, blocksize, 22, 2); ADWIN_ADD_BE(adwin_tree, start_index, 24, 4); ADWIN_ADD_BE(adwin_tree, count, 28, 4); ADWIN_ADD_BE(adwin_debug_tree, unused, 32, 4); break; case I_GET_DATA_SMALL: ADWIN_ADD_LE(adwin_debug_tree, unused, 20, 4); ADWIN_ADD_LE(adwin_tree, data_no16, 24, 2); ADWIN_ADD_LE(adwin_debug_tree, unused, 26, 2); ADWIN_ADD_LE(adwin_tree, start_index, 28, 4); ADWIN_ADD_LE(adwin_tree, count, 32, 4); break; case I_GET_PAR_ALL: ADWIN_ADD_LE(adwin_tree, start_index, 20, 4); ADWIN_ADD_LE(adwin_tree, count, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; case I_SET_DATA_LAST_STATUS: ADWIN_ADD_LE(adwin_tree, data_packet_index, 20, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 24, 12); break; case I_GET_ARM_VERSION: ADWIN_ADD_LE(adwin_tree, armVersion, 20, 4); ADWIN_ADD_LE(adwin_debug_tree, unused,24, 12); break; case I_GET_FIFO: case I_SET_FIFO: ADWIN_ADD_LE(adwin_tree, data_type, 20, 4); ADWIN_ADD_LE(adwin_tree, fifo_no16, 24, 2); ADWIN_ADD_LE(adwin_debug_tree, unused, 26, 6); ADWIN_ADD_LE(adwin_tree, count, 32, 4); break; case I_GET_FIFO_RETRY: case I_SET_FIFO_RETRY: ADWIN_ADD_LE(adwin_tree, data_type, 20, 4); ADWIN_ADD_LE(adwin_tree, fifo_no16, 24, 2); ADWIN_ADD_LE(adwin_debug_tree, unused, 26, 2); ADWIN_ADD_LE(adwin_tree, retry_packet_index, 28, 4); ADWIN_ADD_LE(adwin_tree, count, 32, 4); break; case I_TEST_VERSION: ADWIN_ADD_LE(adwin_debug_tree, unused, 20, 16); break; case I_GET_MEMORY: ADWIN_ADD_LE(adwin_tree, address, 20, 4); ADWIN_ADD_LE(adwin_tree, count, 24, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 28, 8); break; default: ; /* should not happen */ /* illegal values should be displayed properly by instruction_mapping */ } ADWIN_ADD_LE(adwin_debug_tree, link_addr,36, 4); ADWIN_ADD_LE(adwin_tree, timeout, 40, 4); ADWIN_ADD_LE(adwin_debug_tree, osys, 44, 4); ADWIN_ADD_LE(adwin_debug_tree, unused, 48, 4); }