remote_rom: fix payload initialization

This commit is contained in:
Johannes Schlatow
2016-07-26 11:36:57 +02:00
committed by Norman Feske
parent 1cf653d548
commit 3e746c6444

View File

@@ -144,6 +144,12 @@ class Remote_rom::Packet_base : public Ethernet_frame, public Ipv4_packet
Ipv4_packet::checksum(Ipv4_packet::calculate_checksum(*this));
}
/**
* Placement new.
*/
void * operator new(Genode::size_t size, void* addr) {
return addr; }
} __attribute__((packed));
class Remote_rom::SignalPacket : public Packet_base
@@ -372,7 +378,7 @@ class Remote_rom::Backend_server : public Backend_server_base, public Backend_ba
{
/* create and transmit packet via NIC session */
Nic::Packet_descriptor pd = alloc_tx_packet(DataPacket::packet_size(size));
DataPacket *packet = (DataPacket*)_nic.tx()->packet_content(pd);
DataPacket *packet = new (_nic.tx()->packet_content(pd)) DataPacket();
packet->prepare_ethernet(_mac_address, Ethernet_frame::BROADCAST);
packet->prepare_ipv4(_src_ip, _dst_ip);
@@ -411,7 +417,7 @@ class Remote_rom::Backend_server : public Backend_server_base, public Backend_ba
/* create and transmit packet via NIC session */
Nic::Packet_descriptor pd = alloc_tx_packet(sizeof(SignalPacket));
SignalPacket *packet = (SignalPacket*)_nic.tx()->packet_content(pd);
SignalPacket *packet = new (_nic.tx()->packet_content(pd)) SignalPacket();
packet->prepare_ethernet(_mac_address);
packet->prepare_ipv4(_src_ip, _dst_ip);