Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __INET_IPADDRESSRESOLVER_H
00020 #define __INET_IPADDRESSRESOLVER_H
00021
00022 #include <omnetpp.h>
00023 #include "IPvXAddress.h"
00024
00025 class IInterfaceTable;
00026 class InterfaceEntry;
00027 class IRoutingTable;
00028 class RoutingTable6;
00029 class NotificationBoard;
00030
00031
00046 class INET_API IPAddressResolver
00047 {
00048 protected:
00049
00050 virtual IPAddress getIPv4AddressFrom(IInterfaceTable *ift);
00051
00052 virtual IPv6Address getIPv6AddressFrom(IInterfaceTable *ift);
00053
00054
00055
00056 virtual IPv6Address getInterfaceIPv6Address(InterfaceEntry *ie);
00057
00058 public:
00059 enum {
00060 ADDR_PREFER_IPv4,
00061 ADDR_PREFER_IPv6,
00062 ADDR_IPv4,
00063 ADDR_IPv6
00064 };
00065
00066 public:
00067 IPAddressResolver() {}
00068 virtual ~IPAddressResolver() {}
00069
00077 virtual IPvXAddress resolve(const char *str, int addrType=ADDR_PREFER_IPv6);
00078
00085 virtual bool tryResolve(const char *str, IPvXAddress& result, int addrType=ADDR_PREFER_IPv6);
00086
00095 virtual IPvXAddress addressOf(cModule *host, int addrType=ADDR_PREFER_IPv6);
00096
00100 virtual IPvXAddress addressOf(cModule *host, const char *ifname, int addrType=ADDR_PREFER_IPv6);
00101
00106 virtual IPAddress routerIdOf(cModule *host);
00107
00112 virtual IPvXAddress getAddressFrom(IInterfaceTable *ift, int addrType=ADDR_PREFER_IPv6);
00113
00117 virtual IPvXAddress getAddressFrom(InterfaceEntry *ie, int addrType=ADDR_PREFER_IPv6);
00118
00124 virtual IInterfaceTable *interfaceTableOf(cModule *host);
00125
00131 virtual IRoutingTable *routingTableOf(cModule *host);
00132
00133 #ifndef WITHOUT_IPv6
00134
00139 virtual RoutingTable6 *routingTable6Of(cModule *host);
00140 #endif
00141
00147 virtual NotificationBoard *notificationBoardOf(cModule *host);
00148
00152 virtual IInterfaceTable *findInterfaceTableOf(cModule *host);
00153
00157 virtual IRoutingTable *findRoutingTableOf(cModule *host);
00158
00159 #ifndef WITHOUT_IPv6
00160
00163 virtual RoutingTable6 *findRoutingTable6Of(cModule *host);
00164 #endif
00165
00169 virtual NotificationBoard *findNotificationBoardOf(cModule *host);
00171 };
00172
00173
00174 #endif
00175
00176