It is a bit confusing your request, I suppose that you want that an application module using UDP could broadcast packets
The broadcast mechanism is a limited broadcast, the packet is sent in a particular interface, it is necessary also to include the interface in which you want to send the packet.
--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.
For more options, visit https://groups.google.com/d/optout.
**.host[*].packetControl.destAddresses = "sink(modulepath)"
destAddresses.clear();const char *destAddrs = par("destAddresses");cStringTokenizer tokenizer(destAddrs);
const char *token;while ((token = tokenizer.nextToken()) != nullptr) { L3Address result; L3AddressResolver().tryResolve(token, result); if (result.isUnspecified()) EV_ERROR << "cannot resolve destination address: " << token << endl; else destAddresses.push_back(result);}
L3Address PacketControl::chooseDestAddr(){ int k = intrand(destAddresses.size()); return destAddresses[k];}
void PacketControl::send(cPacket *packet) { L3Address destAddr = chooseDestAddr(); IL3AddressType *addressType = destAddr.getAddressType(); INetworkProtocolControlInfo *controlInfo = addressType->createNetworkProtocolControlInfo(); controlInfo->setDestinationAddress(destAddr); controlInfo->setTransportProtocol(protocol);
packet->setControlInfo(check_and_cast<cObject *>(controlInfo));
EV_INFO << "Sending packet: "; printPacket(packet); emit(sentPkSignal, packet); cSimpleModule::send(packet, "ipOut"); numSent++;}
void PacketControl::send(cPacket *packet) { L3Address destAddr = chooseDestAddr(); IL3AddressType *addressType = destAddr.getAddressType(); INetworkProtocolControlInfo *controlInfo = addressType->createNetworkProtocolControlInfo(); controlInfo->setDestinationAddress(addressType->getBroadcastAddress());
controlInfo->setTransportProtocol(protocol);
packet->setControlInfo(check_and_cast<cObject *>(controlInfo));
EV_INFO << "Sending packet: "; printPacket(packet); emit(sentPkSignal, packet); cSimpleModule::send(packet, "ipOut"); numSent++;}
void PacketControl::send(cPacket *packet) { L3Address destAddr = IPv4Address::ALLONES_ADDRESS; IL3AddressType *addressType = destAddr.getAddressType(); INetworkProtocolControlInfo *controlInfo = addressType->createNetworkProtocolControlInfo(); controlInfo->setDestinationAddress(destAddr); controlInfo->setTransportProtocol(protocol);
packet->setControlInfo(check_and_cast<cObject *>(controlInfo));
EV_INFO << "Sending packet: "; printPacket(packet); emit(sentPkSignal, packet); cSimpleModule::send(packet, "ipOut"); numSent++;}
---------------------------Confirm---------------------------Error in module (inet::GenericNetworkProtocol) IEEE802154Network.sink.networkLayer.gnp (id=15) at event #13, t=0: check_and_cast(): cannot cast (inet::IPv4ControlInfo *) to type 'inet::GenericNetworkProtocolControlInfo *'.---------------------------OK ---------------------------
**.sink.packetControl.destAddresses = "host[0](modulepath) host[1](modulepath) host[2](modulepath)"
//TODO: How to broadcast?
L3Address destAddr = chooseDestAddr(); IL3AddressType *addressType = destAddr.getAddressType(); INetworkProtocolControlInfo *controlInfo = addressType->createNetworkProtocolControlInfo(); controlInfo->setDestinationAddress(destAddr);