I have tried almost the same thing. Defined a new function for which I have passed the WifiMacHeader as parameter which I got in Receive function and I am able to print the Addresses from the header.
Just for experimental purpose I have created a packet in "ap-wifi-mac" and trying it to send to "wifi-net-device" using "ForwardUp" function but I couldn't find any packet getting received.
ostringstream msg;
msg<<"Hello World!!!"<<"\0";
Ptr<Packet> pkt = Create<Packet>((uint8_t*)msg.str().c_str(),msg.str().length());
EthernetHeader header;
header.SetDestination("00:00:00:00:00:04");
header.SetSource("00:00:00:00:00:02");
pkt->AddHeader(header);
this->ForwardUp(pkt,"00:00:00:00:00:02","00:00:00:00:00:04");
The above piece of code in ApWifiMac::CsmaNet(WifiMacHeader hdr)