Exemple #1
0
void EthernetFrame::macdata2Arp(ARP &a)
{
	WORD hardware_type = 0;
	WORD protocol_type = 0;
	BYTE hardware_address_length = 0;
	BYTE protocol_address_length = 0;
	WORD operation_code = 0;
	BYTE source_hardware_address[6] = {0};
	DWORD source_protocol_address = 0;
	BYTE target_hardware_address[6] = {0};
	DWORD target_protocol_address = 0;

	memcpy(&hardware_type, MACDATA, 2);
	memcpy(&protocol_type, MACDATA+2, 2);
	memcpy(&hardware_address_length, MACDATA+4, 1);
	memcpy(&protocol_address_length, MACDATA+5, 1);
	memcpy(&operation_code, MACDATA+6, 2);
	memcpy(source_hardware_address, MACDATA+8, 6);
	memcpy(&source_protocol_address, MACDATA+14, 4);
	memcpy(target_hardware_address, MACDATA+18, 6);
	memcpy(&target_protocol_address, MACDATA+24, 4);

	a.setHardwareType(hardware_type);
	a.setProtocolType(protocol_type);
	a.setHardwareAddressLength(hardware_address_length);
	a.setProtocolAddressLength(protocol_address_length);
	a.setOperationCode(operation_code);
	a.setSourceHardwareAddress(source_hardware_address);
	a.setSourceProtocolAddress(source_protocol_address);
	a.setTargetHardwareAddress(target_hardware_address);
	a.setTargetProtocolAddress(target_protocol_address);
}