DhcpClient

Package: inet.applications.dhcp

DhcpClient

simple module

Implements the DHCP client protocol. DHCP (Dynamic Host Configuration Protocol), described in RFC 2131, provides configuration parameters to Internet hosts. Requires UDP.

See also: DhcpServer, DhcpMessage

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters

Name Type Default value Description
interfaceTableModule string

path to the InterfaceTable module

routingTableModule string

path to the Ipv4RoutingTable module

interface string ""

which NIC should be configured (i.e. wlan0, eth1 etc.)

startTime double 0s

starting time of DHCP initialization

stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

stopOperationTimeout double 2s

timeout value for lifecycle stop operation

Properties

Name Value Description
display i=block/app2
lifecycleSupport
selfMessageKinds inet::DhcpTimerType

Gates

Name Direction Size Description
socketIn input
socketOut output

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
omnetpp::cMessage1 (DhcpTimerType::WAIT_OFFER)DHCP Timeout
omnetpp::cMessage3 (DhcpTimerType::T1)TN Timer
omnetpp::cMessage4 (DhcpTimerType::T2)TN Timer
omnetpp::cMessage5 (DhcpTimerType::LEASE_TIMEOUT)Lease Timeout
omnetpp::cMessage6 (DhcpTimerType::START_DHCP)Starting DHCP

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::arrivedarrived
ScenarioManagerinet::ScenarioManager::moduleOperationStageCompletedmoduleOperationStageCompleted
InterfaceTableinet::InterfaceTable::findInterfaceByNamefindInterfaceByName
InterfaceTableinet::InterfaceTable::interfaceChangedinterfaceChanged
Ipv4RoutingTableinet::Ipv4RoutingTable::addRouteaddRoute(...)
Ipv4RoutingTableinet::Ipv4RoutingTable::deleteRoutedeleteRoute(...)

Called methods (observed)

functioninfocall from
inet::DhcpClient::handleOperationStagehandleOperationStageScenarioManager
inet::DhcpClient::receiveSignall2AssociatedIeee80211MgmtSta

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
socketInIndication2 (UdpStatusInd::UDP_I_SOCKET_CLOSED)UdpSocketClosedIndicationUdpSocketInd
socketInPacket0 (UdpStatusInd::UDP_I_DATA)UdpDscpInd, EcnInd, HopLimitInd, InterfaceInd, L3AddressInd, L4PortInd, MacAddressInd, NetworkProtocolInd, SocketInd, TosInd, TransportProtocolInd, ErrorRateInd?, Ieee802SapInd?, SignalPowerInd?, SignalTimeInd?, SnirInd?, Ieee80211ChannelInd?, Ieee80211ModeInd?

Outgoing messages (observed)

gatemsgkindctrldestModuletags
socketOutPacket0 (UdpCommandCode::UDP_C_DATA)UdpDispatchProtocolReq, InterfaceReq, L3AddressReq, L4PortReq, SocketReq
socketOutRequest1 (UdpCommandCode::UDP_C_BIND)UdpBindCommandUdpDispatchProtocolReq, SocketReq
socketOutRequest3 (UdpCommandCode::UDP_C_SETOPTION)UdpSetBroadcastCommandUdpDispatchProtocolReq, SocketReq
socketOutRequest4 (UdpCommandCode::UDP_C_CLOSE)UdpCloseCommandUdpDispatchProtocolReq, SocketReq

Packet operations (observed)

chunkTypepacketAction
DhcpMessageinsertAtBack, peekAtFront

Shared Tagging operations (observed)

tagTypetagAction
DispatchProtocolReqaddTagIfAbsent
InterfaceReqaddTagIfAbsent
L3AddressReqaddTagIfAbsent
L4PortReqaddTagIfAbsent
SocketIndfindTag
SocketReqaddTagIfAbsent

Tagging operations (observed)

tagTypetagAction
inet::Ipv4InterfaceDatagetTag, getTagForUpdate

Source code

//
// Implements the DHCP client protocol. DHCP (Dynamic Host Configuration Protocol),
// described in RFC 2131, provides configuration parameters to Internet hosts.
// Requires UDP.
//
// @see ~DhcpServer, ~DhcpMessage
//
simple DhcpClient like IApp
{
    parameters:
        string interfaceTableModule; // path to the InterfaceTable module
        string routingTableModule; // path to the Ipv4RoutingTable module
        string interface = default(""); // which NIC should be configured (i.e. wlan0, eth1 etc.)
        double startTime @unit(s) = default(0s); // starting time of DHCP initialization
        @display("i=block/app2");
        @lifecycleSupport;
        double stopOperationExtraTime @unit(s) = default(-1s);    // extra time after lifecycle stop operation finished
        double stopOperationTimeout @unit(s) = default(2s);    // timeout value for lifecycle stop operation
        @selfMessageKinds(inet::DhcpTimerType);
    gates:
        input socketIn @labels(UdpControlInfo/up);
        output socketOut @labels(UdpControlInfo/down);
}

File: src/inet/applications/dhcp/DhcpClient.ned