예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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);
}
예제 #4
0
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);
	}
}
예제 #5
0
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);
}
예제 #6
0
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);
}
예제 #7
0
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);
}
예제 #8
0
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);

}