51 #define LOW_NIBBLE(a) (((unsigned char)a) & 0x0f) 54 #define HIGH_NIBBLE(a) ((((unsigned char)a) & 0xf0) >> 4) 57 #define PARSE_MNC(a,b) { \ 58 if ( HIGH_NIBBLE(b[1]) == 0x0f ) { \ 60 a[1] = LOW_NIBBLE(b[2]) + '0'; \ 61 a[2] = HIGH_NIBBLE(b[2]) + '0'; \ 64 a[0] = LOW_NIBBLE(b[2]) + '0'; \ 65 a[1] = HIGH_NIBBLE(b[2]) + '0'; \ 66 a[2] = HIGH_NIBBLE(b[1]) + '0'; \ 71 #define PARSE_MCC(a,b) { \ 72 a[0] = LOW_NIBBLE(b[0]) + '0'; \ 73 a[1] = HIGH_NIBBLE(b[0]) + '0'; \ 74 a[2] = LOW_NIBBLE(b[1]) + '0'; \ 78 #define PARSE_PLMNID(a) \ 79 char mnc[4], mcc[4]; \ 83 #define PARSE_PLMNID_MCC(a) \ 87 #define APPEND_MNC(a) append("mnc").append(a).append(".") 88 #define APPEND_MCC(a) append("mcc").append(a).append(".") 89 #define APPEND_3GPPNETWORK append("3gppnetwork.org") 479 static EString tai_fqdn(
const char *lb,
const char *hb,
const char *mnc,
const char *mcc );
485 static EString tai_fqdn(
const char *lb,
const char *hb,
const unsigned char *plmnid );
492 static EString mme_fqdn(
const char *mmec,
const char *mmegi,
const char *mnc,
const char *mcc );
498 static EString mme_fqdn(
const char *mmec,
const char *mmegi,
const unsigned char *plmnid );
516 static EString rai_fqdn(
const char *rac,
const char *lac,
const char *mnc,
const char *mcc );
522 static EString rai_fqdn(
const char *rac,
const char *lac,
const unsigned char *plmnid );
528 static EString rnc_fqdn(
const char *rnc,
const char *mnc,
const char *mcc );
533 static EString rnc_fqdn(
const char *rnc,
const unsigned char *plmnid );
541 static EString sgsn_fqdn(
const char *nri,
const char *rac,
const char *lac,
const char *mnc,
const char *mcc );
548 static EString sgsn_fqdn(
const char *nri,
const char *rac,
const char *lac,
const unsigned char *plmnid );
676 static EString epc(
const char *mnc,
const char *mcc );
680 static EString epc(
const unsigned char *plmnid );
691 static EString apn_fqdn(
const char *apn,
const unsigned char *plmnid );
697 static EString apn(
const char *apn,
const char *mnc,
const char *mcc );
702 static EString apn(
const char *apn,
const unsigned char *plmnid );
799 Void setName(
const std::string &n );
815 Void
dump(
const char *prefix )
817 std::cout << prefix <<
"Name - " << m_name << std::endl;
818 std::cout << prefix <<
"topon - " << (m_topon?
"true":
"false") << std::endl;
820 std::cout << prefix <<
"Labels" << std::endl;
821 for ( CanonicalNodeName::const_iterator it = begin(); it != end(); ++it )
822 std::cout << prefix <<
" " << *it << std::endl;
834 typedef int UsageType;
846 Void
dump(
const char *prefix )
848 for (UsageTypeList::const_iterator it = begin();
852 std::cout << prefix << *it << std::endl;
861 typedef std::string NetworkCapability;
871 Void
dump(
const char *prefix )
873 for (NetworkCapabilityList::const_iterator it = begin();
877 std::cout << prefix << *it << std::endl;
891 Void
dump(
const char *prefix )
893 for (StringVector::const_iterator it = begin();
897 std::cout << prefix << *it << std::endl;
904 std::random_shuffle ( begin(), end() );
940 UsageType
addUsageType( UsageType ut ) { m_usageTypes.push_back( ut );
return ut; }
944 NetworkCapability &
addNetworkCapability( NetworkCapability &nc ) { m_networkCapabilities.push_back(nc);
return m_networkCapabilities.back(); }
948 Void parse(
const std::string &rp );
955 return std::find( m_usageTypes.begin(), m_usageTypes.end(), ut ) != m_usageTypes.end();
963 return std::find( m_networkCapabilities.begin(), m_networkCapabilities.end(), nc ) != m_networkCapabilities.end();
968 Void
dump(
const char *prefix =
"" )
971 if ( !m_rawProtocol.empty() )
972 std::cout <<
"/" << m_rawProtocol;
973 std::cout <<
"] - [";
975 for ( UsageTypeList::const_iterator it = m_usageTypes.begin(); it != m_usageTypes.end(); ++it )
977 std::cout << (first?
"":
",") << *it;
980 std::cout <<
"] - [";
982 for ( NetworkCapabilityList::const_iterator it = m_networkCapabilities.begin(); it != m_networkCapabilities.end(); ++it )
984 std::cout << (first?
"":
",") << *it;
987 std::cout <<
"]" << std::endl;
1021 for (AppProtocolList::const_iterator it = begin();
1025 (*it)->dump( prefix );
1045 while ( !m_protocols.empty() )
1048 m_protocols.pop_front();
1065 Void parse(
const std::string &ds );
1072 for ( AppProtocolList::const_iterator it = m_protocols.begin(); it != m_protocols.end(); ++it )
1074 if ( (*it)->getProtocol() == protocol )
1084 std::cout << m_rawService << std::endl;
1086 for ( AppProtocolList::const_iterator it = m_protocols.begin(); it != m_protocols.end(); ++it )
1139 uint16_t
setOrder( uint16_t order ) {
return m_order = order; }
1143 uint16_t
setPreference( uint16_t preference ) {
return m_preference = preference; }
1147 uint16_t
setPort( uint16_t port ) {
return m_port = port; }
1157 Void
addIPv4Host(
const std::string &host ) { m_ipv4_hosts.push_back( host ); }
1160 Void
addIPv6Host(
const std::string &host ) { m_ipv6_hosts.push_back( host ); }
1166 std::cout << prefix <<
"HOSTNAME: " << m_hostname << std::endl;
1167 std::cout << prefix <<
" order - " << m_order << std::endl;
1168 std::cout << prefix <<
" preference - " << m_preference << std::endl;
1169 std::cout << prefix <<
" port - " << m_port << std::endl;
1172 std::cout << prefix <<
" supported protocols" << std::endl;
1174 m_supported_protocols.dump( pfx.c_str() );
1176 std::cout << prefix <<
" IPv4 HOSTS" << std::endl;
1177 m_ipv4_hosts.dump( pfx.c_str() );
1179 std::cout << prefix <<
" IPv6 HOSTS" << std::endl;
1180 m_ipv6_hosts.dump( pfx.c_str() );
1189 uint16_t m_preference;
1220 for (NodeSelectorResultList::const_iterator it = begin();
1224 (*it)->dump( prefix );
1290 std::cout <<
"NodeSelector REQUEST" << std::endl;
1291 std::cout <<
" domain - " << m_domain << std::endl;
1293 std::cout <<
" desired protocols" << std::endl;
1294 m_desiredProtocols.dump(
" " );
1295 std::cout <<
" desired usage types" << std::endl;
1296 m_desiredUsageTypes.dump(
" " );
1297 std::cout <<
" desired network capabilities" << std::endl;
1298 m_desiredNetworkCapabilities.dump(
" " );
1299 std::cout <<
" results" << std::endl;
1300 m_results.dump(
" " );
1322 AppServiceEnum parseService(
const std::string &service, std::list<AppProtocolEnum> &protocols )
const;
1325 static Void async_callback(
DNS::QueryPtr q, Bool cacheHit,
const void *data);
1327 DNS::namedserverid_t m_nsid;
1355 ptTopologicalDistance = 2,
1391 std::cout << prefix <<
"canonical name 1 - " << m_cnn1.getName() << std::endl;
1392 m_candidate1.dump( pfx.c_str() );
1393 std::cout << prefix <<
"canonical name 2 - " << m_cnn2.getName() << std::endl;
1394 m_candidate2.dump( pfx .c_str());
1395 std::cout << prefix <<
"pair type - " << (
1396 m_pairtype == ptColocated ?
"colocated" :
1397 m_pairtype == ptTopologicalDistance ?
"topological distance" :
1398 m_pairtype == ptDNSPriority ?
"DNS priority" :
"unknown") << std::endl;
1399 std::cout << prefix <<
"topological matches - " << m_topologicalMatches << std::endl;
1410 int m_topologicalMatches;
1429 Void
dump(
const char *prefix =
"" )
1437 std::cout << prefix <<
"candidate list" << std::endl;
1438 for ( ColocatedCandidateList::const_iterator it = begin(); it != end(); ++it )
1440 std::cout << pfx1 <<
"candidate " << candidate++ << std::endl;
1441 (*it)->dump( pfx2.c_str() );
1611 SGWNodeSelector(
const unsigned char lb,
const unsigned char hb,
const char *mnc,
const char *mcc )
1616 sprintf( lbbuf,
"%02x", lb );
1617 sprintf( hbbuf,
"%02x", hb );
1632 sprintf( lbbuf,
"%02x", lb );
1633 sprintf( hbbuf,
"%02x", hb );
1711 sprintf( lbbuf,
"%02x", lb );
1712 sprintf( hbbuf,
"%02x", hb );
1727 sprintf( lbbuf,
"%02x", lb );
1728 sprintf( hbbuf,
"%02x", hb );
1864 setDomainName( fqdn );
1934 uint16_t
setOrder( uint16_t order ) {
return m_order = order; }
1972 std::cout << prefix <<
"Flags: " << (
1974 m_type ==
dnt_service ?
"service" :
"unknown") << std::endl;
1975 std::cout << prefix <<
"Order: " << m_order << std::endl;
1976 std::cout << prefix <<
"Preference: " << m_preference << std::endl;
1977 std::cout << prefix <<
"Service: " << m_service << std::endl;
1978 std::cout << prefix <<
"Replacement: " << m_replacement << std::endl;
1986 uint16_t m_preference;
2040 std::cout << prefix <<
"Name: " << m_name << std::endl;
2041 std::cout << prefix <<
"IPv4 addresses" << std::endl;
2042 m_ipv4_addrs.dump( pfx.c_str() );
2043 std::cout << prefix <<
"IPv6 addresses" << std::endl;
2044 m_ipv6_addrs.dump( pfx.c_str() );
2071 uint16_t
setPriority( uint16_t priority ) {
return m_priority = priority; }
2079 uint16_t
setWeight( uint16_t weight ) {
return m_weight = weight; }
2087 uint16_t
setPort( uint16_t port ) {
return m_port = port; }
2099 std::cout << prefix <<
"Priority: " << m_priority << std::endl;
2100 std::cout << prefix <<
"Weight: " << m_weight << std::endl;
2101 std::cout << prefix <<
"Port: " << m_port << std::endl;
2103 std::cout << prefix <<
"Diameter Host" << std::endl;
2104 m_host.dump( pfx.c_str() );
2108 uint16_t m_priority;
2140 for (DiameterSrvVector::const_iterator it = begin();
2144 std::cout << prefix <<
"Diameter SRV " << ++cnt << std::endl;
2145 (*it)->dump( pfx.c_str() );
2177 std::cout << prefix <<
"Host Information" << std::endl;
2178 m_host.dump( pfx.c_str() );
2206 std::cout << prefix <<
"Service Information" << std::endl;
2207 m_srv.dump( pfx.c_str() );
2234 Void
dump(
const char *prefix =
"" )
2236 for (DiameterNaptrList::const_iterator it = begin();
2305 #endif // #ifndef __EPCDNS_H uint16_t getOrder()
Retrieves the order value.
Definition: epcdns.h:1119
EpcNodeSelector & setAppService(AppServiceEnum s)
Assigns the required application service type.
Definition: epcdns.h:1881
x-16
Definition: epcdns.h:153
static EString local_homenetwork_fqdn(const char *lhn, const char *mcc)
Constructs the local home network identifier.
Definition: epcdns.cpp:426
static EString emergency_epdg_lac_fqdn(const char *lac, const char *mnc, const char *mcc)
Constructs the location area code based emergency ePDG FQDN.
Definition: epcdns.cpp:364
EpcNodeSelector(const char *node, const char *mnc, const char *mcc, AppServiceEnum appsvc=x_3gpp_any)
Class constructor.
Definition: epcdns.h:1842
SIP.
Definition: epcdns.h:352
DiameterHost(const char *name)
Class constructor.
Definition: epcdns.h:2002
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:1970
QoS.
Definition: epcdns.h:358
DiameterHost & getHost()
Retrieves the diameter host.
Definition: epcdns.h:2091
static EString mme_fqdn(const char *mmec, const char *mmegi, const char *mnc, const char *mcc)
Constructs the mobile management entity (MME) FQDN.
Definition: epcdns.cpp:83
x-s2a-pmip
Definition: epcdns.h:229
static EString getDiameterService(DiameterApplicationEnum app, DiameterProtocolEnum protocol)
Constructs the Diameter service string.
Definition: epcdns.cpp:702
static EString rai_fqdn(const char *rac, const char *lac, const char *mnc, const char *mcc)
Constructs the routing area identity (RAI) FQDN.
Definition: epcdns.cpp:127
uint16_t getPort()
Retrieves the IP port value.
Definition: epcdns.h:1125
SCTP.
Definition: epcdns.h:443
SGSN.
Definition: epcdns.h:116
x-sxc
Definition: epcdns.h:187
SGWAppProtocolEnum
the SGW related protocols.
Definition: epcdns.h:220
DiameterHost & getHost()
Retrieves the Diameter host.
Definition: epcdns.h:2168
Diameter name pointer (NAPTR) object.
Definition: epcdns.h:1909
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:2201
Encapsulates and extends a std::string object.
x-s2b-gtp
Definition: epcdns.h:204
PairType getPairType()
Retrieves the pair type.
Definition: epcdns.h:1379
Void shuffle()
Randomizes the list of strings.
Definition: epcdns.h:902
const EString & getRawProtocol()
Retrieves the raw protocol string.
Definition: epcdns.h:922
x-s4
Definition: epcdns.h:267
x-gn
Definition: epcdns.h:133
Credit Control.
Definition: epcdns.h:348
x-s2a-gtp
Definition: epcdns.h:155
x-s8-gtp
Definition: epcdns.h:177
static EString nonemergency_epdg_oi_fqdn(const char *mnc, const char *mcc)
Constructs the operator identifier (OI) based ePDG FQDN.
Definition: epcdns.cpp:235
NetworkCapabilityList & getNetworkCapabilities()
Retrieves the list of network capabilities.
Definition: epcdns.h:931
static EString home_network(const char *mnc, const char *mcc)
Constructs the home network domain name.
Definition: epcdns.cpp:24
uint16_t getOrder()
Retrieves the order value.
Definition: epcdns.h:1930
SGWNodeSelector(const char *node, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1664
MSC.
Definition: epcdns.h:120
A list of colocated candidates.
Definition: epcdns.h:1417
x-gp
Definition: epcdns.h:250
WiMAX Network Accounting Diameter Application (WNADA)
Definition: epcdns.h:416
NodeSelectorResult & getCandidate2()
Retrieves the second candidate node selector result object.
Definition: epcdns.h:1370
static uint32_t getDiameterApplication(DiameterApplicationEnum app)
Converts a DiameterApplicationEnum to the corresponding Diameter application ID.
Definition: epcdns.cpp:709
x-gn
Definition: epcdns.h:257
NodeSelectorResultList & getResults()
Retrieves the node selector results list.
Definition: epcdns.h:1264
ENodeBUPFNodeSelector(const char *enb, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1800
~AppService()
Class destructor.
Definition: epcdns.h:1043
NetworkCapability & addDesiredNetworkCapability(const char *nc)
Adds a desired network capability to the list of desired network capabilities.
Definition: epcdns.h:1273
x-n2
Definition: epcdns.h:317
x-nqprime
Definition: epcdns.h:141
MSCAppProtocolEnum
the MSC related protocols.
Definition: epcdns.h:296
x-s2c-dsmip
Definition: epcdns.h:165
const EString & getName() const
Retrieves the Diameter host name.
Definition: epcdns.h:2009
DiameterSrvVector & getSrvs()
Retrieves the Diameter server.
Definition: epcdns.h:2197
Application protocol object.
Definition: epcdns.h:912
uint16_t setOrder(uint16_t order)
Assigns the order value.
Definition: epcdns.h:1139
x-s2a-pmip
Definition: epcdns.h:202
~DiameterSrv()
Class destructor.
Definition: epcdns.h:2063
x-s8-pmip
Definition: epcdns.h:241
EString & getRawService()
Retrieves the raw application service string.
Definition: epcdns.h:1061
3GPP S9
Definition: epcdns.h:379
DiameterHost()
Default constructor.
Definition: epcdns.h:1999
Represents an NAPTR resource record.
Definition: dnsrecord.h:429
x-s1-u
Definition: epcdns.h:145
x-gp
Definition: epcdns.h:278
static EString apn_fqdn(const char *apn, const char *mnc, const char *mcc)
Constructs the APN FQDN.
Definition: epcdns.cpp:466
x-s11
Definition: epcdns.h:284
x-s5-pmip
Definition: epcdns.h:237
x-s5-gtp
Definition: epcdns.h:235
~DiameterSrvVector()
Class destructor.
Definition: epcdns.h:2122
Void addIPv6Host(const std::string &host)
Adds an IPv6 host to the list of IPv6 hosts.
Definition: epcdns.h:1160
Void addIPv4Host(const std::string &host)
Adds an IPv4 host to the list of IPv4 hosts.
Definition: epcdns.h:1157
static EString epc_nodes_domain_fqdn(const char *mnc, const char *mcc)
Constructs the EPC nodes subdomain (DNS zone).
Definition: epcdns.cpp:196
x-s8-gtp
Definition: epcdns.h:214
Unknown.
Definition: epcdns.h:131
DiameterProtocolEnum
The Diameter transport protocols.
Definition: epcdns.h:436
Represents a vector (array) of strings.
Definition: epcdns.h:886
x-s3
Definition: epcdns.h:167
EpcNodeSelector(const char *node, const unsigned char *plmnid, AppServiceEnum appsvc=x_3gpp_any)
Class constructor.
Definition: epcdns.h:1852
A Diameter NAPTR A record object.
Definition: epcdns.h:2160
static EString epc_node_fqdn(const char *node, const char *mnc, const char *mcc)
Constructs the EPC node FQDN.
Definition: epcdns.cpp:215
x-gn
Definition: epcdns.h:194
x-s4
Definition: epcdns.h:233
unknown
Definition: epcdns.h:324
Bool getTopon()
Determines if the "topon" feature is enabled for this object.
Definition: epcdns.h:803
static EString emergency_epdg_tai_fqdn(const char *lb, const char *hb, const char *mnc, const char *mcc)
Constructs the tracking area identity based emergency ePDG FQDN.
Definition: epcdns.cpp:340
SGWUPFNodeSelector(const char *lb, const char *hb, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1749
x-s5-gtp
Definition: epcdns.h:210
Unknown.
Definition: epcdns.h:439
AppServiceEnum getDesiredService()
Retrieves the desired application service type.
Definition: epcdns.h:1255
SGWNodeSelector(const char *lb, const char *hb, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1654
A PGW node selector.
Definition: epcdns.h:1521
A SGW node selector.
Definition: epcdns.h:1603
WiMAX Policy and Charging Control R3 Online Charging Diameter Application (WiMAX PCC-R3-OC) ...
Definition: epcdns.h:432
uint16_t getPriority()
Retrieves the priority value.
Definition: epcdns.h:2067
x-gp
Definition: epcdns.h:259
const EString & setReplacement(const std::string &replacement)
Assigns the replacement value.
Definition: epcdns.h:1966
SGWNodeSelector(const char *node, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1673
Mobile IPv6 IKE.
Definition: epcdns.h:354
Relay.
Definition: epcdns.h:360
x-s5-pmip
Definition: epcdns.h:212
A PGW user plane node selector.
Definition: epcdns.h:1562
Void dump(const char *prefix="")
Prints the contents of this object.
Definition: epcdns.h:2234
PGWUPFNodeSelector(const char *apn, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1578
AppServiceEnum
Service names defined in 23.003 v15.5.0, table 19.4.3.1.
Definition: epcdns.h:103
AppProtocolEnum
3GPP protocols defined in 23.003 v15.5.0, table 19.4.3.1.
Definition: epcdns.h:128
An eNodeB user plane node selector.
Definition: epcdns.h:1793
Contains the node selector results.
Definition: epcdns.h:1103
AppServiceEnum getService()
Retrieves the application service type.
Definition: epcdns.h:1055
StringVector & getIPv6Addresses()
Retrieves the list of IPv6 addresses for this Diameter host.
Definition: epcdns.h:2024
PGWAppProtocolEnum
the PGW related protocols.
Definition: epcdns.h:191
x-sv
Definition: epcdns.h:269
WiMAX Policy and Charging Control R3 Policies Diameter Application (WiMAX PCC-R3-P) ...
Definition: epcdns.h:426
NASREQ.
Definition: epcdns.h:342
static EString nonemergency_epdg_lac_fqdn(const char *lac, const char *mnc, const char *mcc)
Constructs the location area code based ePDG FQDN.
Definition: epcdns.cpp:279
AppProtocolList & getSupportedProtocols()
Retrieves the list supported protocols.
Definition: epcdns.h:1128
uint16_t setPort(uint16_t port)
Assigns the IP port.
Definition: epcdns.h:2087
uint16_t setPreference(uint16_t preference)
Assigns the preference value.
Definition: epcdns.h:1143
GGSN.
Definition: epcdns.h:114
AppProtocol * addDesiredProtocol(PGWAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1870
MMEAppProtocolEnum
the SGSN related protocols.
Definition: epcdns.h:273
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:1164
WiMAX DHCP Diameter Application (WDDA)
Definition: epcdns.h:422
DiameterHost(const std::string &name)
Class constructor.
Definition: epcdns.h:2005
static const char * getDiameterProtocol(DiameterProtocolEnum protocol)
Converts a DiameterProtocolEnum to the corresponding Diameter protocol string.
Definition: epcdns.cpp:797
x-gp
Definition: epcdns.h:135
The application service object.
Definition: epcdns.h:1034
x-s10
Definition: epcdns.h:282
Represents a vector (array) of Diameter servers.
Definition: epcdns.h:2118
UsageTypeList & getUsageTypes()
Retrieves the list of usage types.
Definition: epcdns.h:928
Provides several utilities for manipulating names, services and protocols.
Definition: epcdns.h:452
TCP with TLS.
Definition: epcdns.h:445
static EString sgsn_fqdn(const char *nri, const char *rac, const char *lac, const char *mnc, const char *mcc)
Constructs the serving GPRS support node (SGSN) FQDN.
Definition: epcdns.cpp:171
StringVector & getIPv6Hosts()
Retrieves the list of IPv6 hosts.
Definition: epcdns.h:1134
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:846
contains the information to select a node.
Definition: epcdns.h:1242
TCP.
Definition: epcdns.h:441
x_s2a_pmip
Definition: epcdns.h:159
x-s12
Definition: epcdns.h:227
const EString & setName(const char *name)
Assigns the Diameter host name.
Definition: epcdns.h:2013
static EString apn(const char *apn, const char *mnc, const char *mcc)
Constructs the APN.
Definition: epcdns.cpp:486
Represents a colocated candidate.
Definition: epcdns.h:1344
AppService()
Default constructor.
Definition: epcdns.h:1038
x-sxc
Definition: epcdns.h:310
UsageType addUsageType(UsageType ut)
Adds a usage type object to the usage type list.
Definition: epcdns.h:940
PGWNodeSelector(const char *apn, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1537
PairType
Pair type.
Definition: epcdns.h:1348
static EString rnc_fqdn(const char *rnc, const char *mnc, const char *mcc)
Constructs the radio network controller (RNC) FQDN.
Definition: epcdns.cpp:150
uint16_t setPreference(uint16_t pref)
Assigns the preference value.
Definition: epcdns.h:1942
Bool findUsageType(UsageType ut)
Determines if a usage type exists in the usage type list.
Definition: epcdns.h:953
A EPC node selector.
Definition: epcdns.h:1834
uint16_t setOrder(uint16_t order)
Assigns the order value.
Definition: epcdns.h:1934
3GPP S6a
Definition: epcdns.h:375
x-s12
Definition: epcdns.h:151
PGWUPFNodeSelector(const char *apn, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1569
SGWNodeSelector(unsigned char lb, unsigned char hb, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1627
unknown
Definition: epcdns.h:1898
DiameterProtocolEnum setProtocol(DiameterProtocolEnum proto)
Assigns the protocol type.
Definition: epcdns.h:2289
UPF.
Definition: epcdns.h:122
AppProtocol * addDesiredProtocol(UPFAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1587
const EString & setService(const char *service)
Assigns the service value.
Definition: epcdns.h:1950
Base Accounting.
Definition: epcdns.h:346
Mobile IPv6 Auth.
Definition: epcdns.h:356
Bool findNetworkCapability(const NetworkCapability &nc)
Determines if a network capability exists in the network capabilities list.
Definition: epcdns.h:961
Represents a Diameter selector.
Definition: epcdns.h:2252
Void addDesiredProtocol(AppProtocol *ap)
Adds a desired application protcol to the desired protocol list.
Definition: epcdns.h:1319
DiameterNaptrTypeEnum
Diameter name pointer (NAPTR) type.
Definition: epcdns.h:1895
const EString & getHostname()
Retrieves the host name.
Definition: epcdns.h:1116
SGWNodeSelector(const unsigned char lb, const unsigned char hb, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1611
x-s2a-mipv4
Definition: epcdns.h:157
~AppProtocolList()
Class destructor.
Definition: epcdns.h:1007
Represents a list of network capabilities.
Definition: epcdns.h:865
AppProtocol * addDesiredProtocol(UPFAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1777
x-s6a
Definition: epcdns.h:290
3GPP Gx
Definition: epcdns.h:381
static AppServiceEnum getAppService(const std::string &s)
Retrieves the AppServiceEnum value for a given string.
Definition: epcdns.cpp:506
Unknown.
Definition: epcdns.h:106
DNS::namedserverid_t setNamedServerID(DNS::namedserverid_t nsid)
Assigns the named server ID.
Definition: epcdns.h:1251
x-s5-pmip
Definition: epcdns.h:173
const EString & getRealm()
Retrieves the realm.
Definition: epcdns.h:2260
host name
Definition: epcdns.h:1900
SGWNodeSelector(const char *lb, const char *hb, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1644
uint16_t setWeight(uint16_t weight)
Assigns the weight value.
Definition: epcdns.h:2079
uint16_t getPreference()
Retrieves the preference value.
Definition: epcdns.h:1938
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:1019
x-s8-pmip
Definition: epcdns.h:216
x-s4
Definition: epcdns.h:169
x-s3
Definition: epcdns.h:265
x-s5-gtp
Definition: epcdns.h:171
AppProtocol * addDesiredProtocol(SGWAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1682
CanonicalNodeName & getCanonicalNodeName1()
Retrieves the first canonical node name.
Definition: epcdns.h:1373
const EString & setService(const std::string &service)
Assigns the service value.
Definition: epcdns.h:1954
SGWUPFNodeSelector(const unsigned char lb, const unsigned char hb, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1706
AppServiceEnum setAppService(AppServiceEnum s)
Assigns the application service type.
Definition: epcdns.h:1312
service
Definition: epcdns.h:1902
EAP.
Definition: epcdns.h:350
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:815
const EString & setRealm(const char *realm)
Assigns the realm.
Definition: epcdns.h:2264
x-s2b-pmip
Definition: epcdns.h:231
Mobile IPv4.
Definition: epcdns.h:344
static EString global_enodeb_id_fqdn(const char *enb, const char *mnc, const char *mcc)
Constructs the global eNodeB ID.
Definition: epcdns.cpp:405
const EString & setDomainName(const std::string &d)
Assigns the domain name.
Definition: epcdns.h:1316
SGW.
Definition: epcdns.h:112
int getTopologicalMatches()
Retrieves the number of topological matches.
Definition: epcdns.h:1382
const EString getName() const
Retrieves the canonical node name.
Definition: epcdns.h:806
AppProtocolList & getDesiredProtocols()
Retrieves the list of application protocols.
Definition: epcdns.h:1258
const EString & setRealm(const char *mnc, const char *mcc)
Assigns the realm.
Definition: epcdns.h:2269
virtual ~DiameterNaptr()
Class destructor.
Definition: epcdns.h:1920
A list of node selector result objects.
Definition: epcdns.h:1200
uint16_t getPort()
Retrieves the IP port.
Definition: epcdns.h:2083
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:2035
x-s2b-pmip
Definition: epcdns.h:163
x-s2a-gtp
Definition: epcdns.h:198
SGWUPFNodeSelector(const char *node, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1759
WiMAX Policy and Charging Control R3 Offline Charging Diameter Application (WiMAX PCC-R3-OFC) ...
Definition: epcdns.h:428
AppProtocol * addDesiredProtocol(PGWAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1546
x-sxa
Definition: epcdns.h:306
DiameterApplicationEnum setApplication(DiameterApplicationEnum app)
Assigns the applciation type.
Definition: epcdns.h:2281
x-s11
Definition: epcdns.h:149
SGWUPFNodeSelector(const char *node, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1768
const EString & setHostname(const std::string &hostname)
Assigns the host name.
Definition: epcdns.h:1151
SGSNAppProtocolEnum
the SGSN related protocols.
Definition: epcdns.h:254
static EString tai_fqdn(const char *lb, const char *hb, const char *mnc, const char *mcc)
Constructs the tracking area identity FQDN.
Definition: epcdns.cpp:60
MME.
Definition: epcdns.h:118
static EString mme_pool_fqdn(const char *mmegi, const char *mnc, const char *mcc)
Constructs the MME pool FQDN.
Definition: epcdns.cpp:106
A MME node selector.
Definition: epcdns.h:1458
uint16_t getPreference()
Retrieves the preference value.
Definition: epcdns.h:1122
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:891
SGWUPFNodeSelector(unsigned char lb, unsigned char hb, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1722
Canonical node name.
Definition: epcdns.h:788
WiMAX Policy and Charging Control R3 Offline Charging Prime Diameter Application (WiMAX PCC-R3-OFC-PR...
Definition: epcdns.h:430
const EString & setRealm(const unsigned char *plmnid)
Assigns the realm.
Definition: epcdns.h:2273
NetworkCapability & addDesiredNetworkCapability(NetworkCapability &nc)
Adds a desired network capability to the list of desired network capabilities.
Definition: epcdns.h:1277
const EString & getService()
Retrieves the service value.
Definition: epcdns.h:1946
Represents a diameter host.
Definition: epcdns.h:1995
static EString nonemergency_epdg_visitedcountry_fqdn(const char *mcc)
Constructs the visited country FQDN.
Definition: epcdns.cpp:301
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:2095
static EString home_network_gprs(const char *mnc, const char *mcc)
Constructs the APN operator identifier.
Definition: epcdns.cpp:42
Void dump()
Prints the contents of this object.
Definition: epcdns.h:1082
NodeSelectorResult & getCandidate1()
Retrieves the first candidate node selector result object.
Definition: epcdns.h:1367
x-s10
Definition: epcdns.h:147
Void dump(const char *prefix="")
Prints the contents of this object.
Definition: epcdns.h:1429
3GPP STa
Definition: epcdns.h:373
DiameterApplicationEnum
the Diameter application ID's.
Definition: epcdns.h:321
MMENodeSelector(const char *mmec, const char *mmegi, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1467
x-nqprime
Definition: epcdns.h:261
x-sv
Definition: epcdns.h:299
CanonicalNodeName & getCanonicalNodeName2()
Retrieves the second canonical node name.
Definition: epcdns.h:1376
x-s11
Definition: epcdns.h:225
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:1218
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:2172
AppProtocolEnum setProtocol(AppProtocolEnum ape)
Assigns the protocol enumeration.
Definition: epcdns.h:936
static AppProtocolEnum getAppProtocol(const std::string &p)
Retrieves the AppProtocolEnum value for a given string.
Definition: epcdns.cpp:519
UsageType addDesiredUsageType(UsageType ut)
Adds a desired usage type to the list of desired usage types.
Definition: epcdns.h:1269
ENodeBUPFNodeSelector(const char *enb, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1809
AppProtocol()
Default constructor.
Definition: epcdns.h:916
SGWUPFNodeSelector(const char *lb, const char *hb, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1739
static EString diameter_fqdn(const char *mnc, const char *mcc)
Constructs the Diameter FQDN.
Definition: epcdns.cpp:683
x-gp
Definition: epcdns.h:196
WiMAX MIP6 Diameter Application (WM6DA)
Definition: epcdns.h:420
~DiameterNaptrList()
Class destructor.
Definition: epcdns.h:2222
EpcNodeSelector(const char *fqdn, AppServiceEnum appsvc=x_3gpp_any)
Class constructor.
Definition: epcdns.h:1861
x-s1-mme
Definition: epcdns.h:286
DiameterNaptrA()
Default constructor.
Definition: epcdns.h:2164
AppProtocolList & getProtocols()
Retrieves the list of application protocols.
Definition: epcdns.h:1058
x-s8-pmip
Definition: epcdns.h:179
Void addIPv4Address(const std::string &addr)
Adds an IPv4 address for this Diameter host.
Definition: epcdns.h:2028
DiameterApplicationEnum getApplicataion()
Retrieves the application type.
Definition: epcdns.h:2277
AMF.
Definition: epcdns.h:124
MMENodeSelector(const char *mmec, const char *mmegi, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1477
Manages a list of application protocols.
Definition: epcdns.h:1001
const EString & getDomainName()
Retrieves the domain name.
Definition: epcdns.h:1261
PGWNodeSelector(const char *apn, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1528
x-nq
Definition: epcdns.h:280
MMENodeSelector(const char *mmegi, const char *mnc, const char *mcc)
Class constructor.
Definition: epcdns.h:1487
NodeSelectorResult()
Default constructor.
Definition: epcdns.h:1107
~NodeSelectorResultList()
Class destructor.
Definition: epcdns.h:1206
AppProtocol * addDesiredProtocol(UPFAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1818
Represents a Diameter server.
Definition: epcdns.h:2057
AppProtocol * findProtocol(AppProtocolEnum protocol)
Searches for a specific application protocol object.
Definition: epcdns.h:1070
AppProtocolList()
Default constructor.
Definition: epcdns.h:1005
x-sv
Definition: epcdns.h:292
static EString nonemergency_epdg_tai_fqdn(const char *lb, const char *hb, const char *mnc, const char *mcc)
Constructs the tracking area identity based ePDG FQDN.
Definition: epcdns.cpp:255
MMENodeSelector(const char *mmegi, const unsigned char *plmnid)
Class constructor.
Definition: epcdns.h:1496
AppService(const std::string &ds)
Class constructor.
Definition: epcdns.h:1041
NetworkCapability & addNetworkCapability(NetworkCapability &nc)
Adds a network capability to the network capability list.
Definition: epcdns.h:944
GGSNAppProtocolEnum
the GGSN related protocols.
Definition: epcdns.h:245
DiameterSrv()
Default constructor.
Definition: epcdns.h:2061
Void addSupportedProtocol(AppProtocol *ap)
Adds the application object to the list.
Definition: epcdns.h:1154
x-gn
Definition: epcdns.h:248
iMAX Network Access Authentication and Authorization Diameter Application (WNAAADA) ...
Definition: epcdns.h:414
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:1386
x-n2
Definition: epcdns.h:137
DiameterProtocolEnum getProtocol()
Retrieves the protocol type.
Definition: epcdns.h:2285
uint16_t setPort(uint16_t port)
Assigns the IP port.
Definition: epcdns.h:1147
3GPP SWm
Definition: epcdns.h:377
x-sv
Definition: epcdns.h:181
Void dump()
Prints the contents of this object.
Definition: epcdns.h:1288
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:2134
StringVector & getIPv4Hosts()
Retrieves the list of IPv4 hosts.
Definition: epcdns.h:1131
PGW.
Definition: epcdns.h:110
x-nq
Definition: epcdns.h:139
~AppProtocol()
Class destructor.
Definition: epcdns.h:918
DNS::namedserverid_t getNamedServerID()
Retrieves the named server ID.
Definition: epcdns.h:1247
A SGW user plane node selector.
Definition: epcdns.h:1698
x-sxa
Definition: epcdns.h:183
A list of Diameter NAPTR objects.
Definition: epcdns.h:2218
WiMAX MIP4 Diameter Application (WM4DA)
Definition: epcdns.h:418
x-s16
Definition: epcdns.h:263
x-s8-gtp
Definition: epcdns.h:239
The namespace for the TS 29.303 related DNS functions.
Definition: epcdns.h:96
Void dump(const char *prefix)
Prints the contents of this object.
Definition: epcdns.h:871
x-s2c-dsmip
Definition: epcdns.h:208
x-sxb
Definition: epcdns.h:308
x-s2a-mipv4
Definition: epcdns.h:200
x-s1-mme
Definition: epcdns.h:143
const EString & setName(const std::string &name)
Assigns the Diameter host name.
Definition: epcdns.h:2017
uint16_t setPriority(uint16_t priority)
Assigns the priority value.
Definition: epcdns.h:2071
DiameterNaptrTypeEnum getType()
Retrieves the NAPTR type.
Definition: epcdns.h:1926
x-s6a
Definition: epcdns.h:175
Void(* AsyncNodeSelectorCallback)(NodeSelector &ns, cpVoid data)
Definition: epcdns.h:1239
x-s3
Definition: epcdns.h:288
StringVector & getIPv4Addresses()
Retrieves the list of IPv4 addresses for this Diameter host.
Definition: epcdns.h:2021
x-gn
Definition: epcdns.h:276
uint16_t getWeight()
Retrieves the weight value.
Definition: epcdns.h:2075
std::shared_ptr< Query > QueryPtr
A typedef to std::shared_ptr<Query>.
Definition: dnsquery.h:40
Void addIPv6Address(const std::string &addr)
Adds an IPv6 address for this Diameter host.
Definition: epcdns.h:2031
DiameterNaptrS()
Default constructor.
Definition: epcdns.h:2193
x-s2b-gtp
Definition: epcdns.h:161
AMFAppProtocolEnum
the AMF related protocols.
Definition: epcdns.h:314
static EString emergency_epdg_visitedcountry_fqdn(const char *mcc)
Constructs the visited country emergency FQDN.
Definition: epcdns.cpp:386
AppProtocolEnum getProtocol()
Retrieves the protocol enumeration.
Definition: epcdns.h:925
String class.
Definition: estring.h:31
A Diameter NAPTR S record object.
Definition: epcdns.h:2189
Defines classes related to the DNS cache.
Void dump(const char *prefix="")
Prints the contents of this object.
Definition: epcdns.h:968
x-sxb
Definition: epcdns.h:185
Any.
Definition: epcdns.h:108
UsageTypeList()
Default constructor.
Definition: epcdns.h:842
UPFAppProtocolEnum
the UPF related protocols.
Definition: epcdns.h:303
NodeSelectorResultList()
Default constructor.
Definition: epcdns.h:1204
WiMAX Location Authentication Authorization Diameter Application (WLAADA)
Definition: epcdns.h:424
AppProtocol * addDesiredProtocol(MMEAppProtocolEnum p)
Adds the desired application protocol to the selector.
Definition: epcdns.h:1505
x-s1_u
Definition: epcdns.h:223
DiameterNaptr(DiameterNaptrTypeEnum drt)
Class constructor.
Definition: epcdns.h:1914
Represents a list of usage types.
Definition: epcdns.h:838
static EString epc(const char *mnc, const char *mcc)
Constructs the home network realm/domain name.
Definition: epcdns.cpp:447
static EString emergency_epdg_oi_fqdn(const char *mnc, const char *mcc)
Constructs the operator identifier (OI) based emergency ePDG FQDN.
Definition: epcdns.cpp:320
const EString & getReplacement()
Retrieves the replacement value.
Definition: epcdns.h:1958
x-s2b-pmip
Definition: epcdns.h:206
const EString & setReplacement(const char *replacement)
Assigns the replacement value.
Definition: epcdns.h:1962