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); }