Communicating Through Protocol Layers With INET Packet

77 views
Skip to first unread message

Gérard KPONHINTO

unread,
Aug 24, 2021, 1:02:47 PM8/24/21
to OMNeT++ Users
Hello colleagues

I'm troubling with the reception packet at the receiver side. Please your help me to find a way.

At the SENDER side, I encapsulate the data packet (which comes from UdpBasicApp through Udp protocol) when it arrives at Network Layer as follows:

void Sim::encapsulate(Packet *packet) {
    cModule *iftModule = findModuleByPath("SensorNetwork.sink.interfaceTable");
    IInterfaceTable *ift = check_and_cast<IInterfaceTable *>(iftModule);
    auto *ie = ift->findFirstNonLoopbackInterface();
    mySinkMacAddr  = ie->getMacAddress();
    mySinkNetwAddr = ie->getNetworkAddress();
    interfaceId = ie->getInterfaceId();

    //Set Source and Destination Mac and Network Address.
    packet->addTagIfAbsent<MacAddressReq>()->setSrcAddress(myMacAddr);
    packet->addTagIfAbsent<MacAddressReq>()->setDestAddress(mySinkMacAddr);
    packet->addTagIfAbsent<L3AddressReq>()->setSrcAddress(myNetwAddr);
    packet->addTagIfAbsent<L3AddressReq>()->setDestAddress(mySinkNetwAddr);

    packet->addTagIfAbsent<InterfaceReq>()->setInterfaceId(interfaceId);

    //Attaches a "control info" structure (object) to the down message or packet.
    packet->addTagIfAbsent<PacketProtocolTag>()->setProtocol(&getProtocol());
    packet->addTagIfAbsent<DispatchProtocolInd>()->setProtocol(&getProtocol());
}

At the RECEIVER side, I try to get the Network Address of the SENDER as follows :
    auto l3 = packet->addTagIfAbsent<L3AddressReq>()->getSrcAddress();
And when I print l3, EV_DEBUG << "THE SOURCE NETWORK ADDRESS IS : " <<l3<<endl;
the output is DEBUG: THE SOURCE NETWORK ADDRESS IS : <none>

What is wrong ?
How can I access to the SENDER network Address through the received packet  ?

Many thanks in advance.
I will be grateful


Reply all
Reply to author
Forward
0 new messages