本文整理汇总了C++中SPtr::addIA方法的典型用法代码示例。如果您正苦于以下问题:C++ SPtr::addIA方法的具体用法?C++ SPtr::addIA怎么用?C++ SPtr::addIA使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SPtr
的用法示例。
在下文中一共展示了SPtr::addIA方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addClntAddr
/**
* @brief adds an address to the client.
*
* Adds a single address to the client. If the client is not present in
* address manager, adds it, too. Also, if client's IA is missing, adds it as well.
*
* @param clntDuid client DUID
* @param clntAddr client's address (link-local, used if unicast is to be used)
* @param iface interface, on which client is reachable
* @param IAID ID of an IA
* @param T1 - T1 timer
* @param T2 - T2 timer
* @param addr - address to be added
* @param pref preferred lifetime
* @param valid valid lifetime
* @param quiet quiet mode (e.g. used during SOLICIT handling, don't print anything about
* adding client/IA/address, as it will be deleted immediately anyway)
*
* @return true, if addition was successful
*/
bool TSrvAddrMgr::addClntAddr(SPtr<TDUID> clntDuid , SPtr<TIPv6Addr> clntAddr,
int iface, unsigned long IAID, unsigned long T1, unsigned long T2,
SPtr<TIPv6Addr> addr, unsigned long pref, unsigned long valid,
bool quiet)
{
// find this client
SPtr <TAddrClient> ptrClient;
this->firstClient();
while ( ptrClient = this->getClient() ) {
if ( (*ptrClient->getDUID()) == (*clntDuid) )
break;
}
// have we found this client?
if (!ptrClient) {
if (!quiet) Log(Debug) << "Adding client (DUID=" << clntDuid->getPlain()
<< ") to addrDB." << LogEnd;
ptrClient = new TAddrClient(clntDuid);
this->addClient(ptrClient);
}
// find this IA
SPtr <TAddrIA> ptrIA;
ptrClient->firstIA();
while ( ptrIA = ptrClient->getIA() ) {
if ( ptrIA->getIAID() == IAID)
break;
}
// have we found this IA?
if (!ptrIA) {
ptrIA = new TAddrIA(iface, TAddrIA::TYPE_IA, clntAddr, clntDuid, T1, T2, IAID);
ptrClient->addIA(ptrIA);
if (!quiet)
Log(Debug) << "Adding IA (IAID=" << IAID << ") to addrDB." << LogEnd;
}
SPtr <TAddrAddr> ptrAddr;
ptrIA->firstAddr();
while ( ptrAddr = ptrIA->getAddr() ) {
if (*ptrAddr->get()==*addr)
break;
}
// address already exists
if (ptrAddr) {
Log(Warning) << "Address " << *ptrAddr
<< " is already assigned to this IA." << LogEnd;
return false;
}
// add address
ptrAddr = new TAddrAddr(addr, pref, valid);
ptrIA->addAddr(ptrAddr);
if (!quiet)
Log(Debug) << "Adding " << ptrAddr->get()->getPlain()
<< " to IA (IAID=" << IAID << ") to addrDB." << LogEnd;
return true;
}
示例2: matchParsedSystemInterfaces
//.........这里部分代码省略.........
Log(Warning) << "Config file does not contain any interface definitions. Trying to autodetect."
<< LogEnd;
List(TIPv6Addr) dnsList;
dnsList.clear();
parser->ParserOptStack.getLast()->setDNSServerLst(&dnsList);
// Try to add a hostname
char hostname[255];
if (get_hostname(hostname, 255) == LOWLEVEL_NO_ERROR) {
parser->ParserOptStack.getLast()->setFQDN(string(hostname));
} else {
parser->ParserOptStack.getLast()->setFQDN(string(""));
}
int cnt = 0;
ClntIfaceMgr().firstIface();
while ( ifaceIface = ClntIfaceMgr().getIface() ) {
// for each interface present in the system...
if (!inactiveMode()) {
if (!ifaceIface->flagUp()) {
Log(Notice) << "Interface " << ifaceIface->getFullName() << " is down, ignoring." << LogEnd;
continue;
}
if (!ifaceIface->flagRunning()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has flag RUNNING not set, ignoring." << LogEnd;
continue;
}
if (!ifaceIface->flagMulticast()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " is not multicast capable, ignoring." << LogEnd;
continue;
}
}
if ( !(ifaceIface->getMacLen() > 5) ) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has MAC address length " << ifaceIface->getMacLen()
<< " (6 or more required), ignoring." << LogEnd;
continue;
}
// ignore disabled Teredo pseudo-interface on Win (and other similar useless junk)
const static unsigned char zeros[] = {0,0,0,0,0,0,0,0};
const static unsigned char ones[] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
if ( (ifaceIface->getMacLen()<=8) &&
(!memcmp(zeros, ifaceIface->getMac(), min(8,ifaceIface->getMacLen())) ||
!memcmp(ones, ifaceIface->getMac(), min(8,ifaceIface->getMacLen()))) ) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has invalid MAC address "
<< hexToText((uint8_t*)ifaceIface->getMac(), ifaceIface->getMacLen(), true)
<< ", ignoring." << LogEnd;
continue;
}
if (!ifaceIface->countLLAddress()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has no link-local address, ignoring. "
<< "(Disconnected? Not associated? No-link?)" << LogEnd;
continue;
}
// One address...
SPtr<TClntCfgAddr> addr(new TClntCfgAddr());
addr->setOptions(parser->ParserOptStack.getLast());
// ... is stored in one IA...
SPtr<TClntCfgIA> ia = new TClntCfgIA();
ia->setOptions(parser->ParserOptStack.getLast());
ia->addAddr(addr);
// ... on this newly created interface...
cfgIface = SPtr<TClntCfgIface>(new TClntCfgIface(ifaceIface->getID()));
cfgIface->setIfaceName(ifaceIface->getName());
cfgIface->setIfaceID(ifaceIface->getID());
cfgIface->addIA(ia);
cfgIface->setOptions(parser->ParserOptStack.getLast());
// ... which is added to ClntCfgMgr
addIface(cfgIface);
Log(Info) << "Interface " << cfgIface->getFullName()
<< " has been added." << LogEnd;
if (inactiveMode() && !ifaceIface->flagRunning() ) {
makeInactiveIface(cfgIface->getID(), true, true, true); // move it to InactiveLst
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " is not operational yet"
<< " (not running), made inactive." << LogEnd;
}
cnt ++;
}
if (!cnt) {
Log(Crit) << "Unable to detect any suitable interfaces. If there are any interfaces that you"
<< " want to have configured, please specify them in client.conf file." << LogEnd;
return false;
}
}
return true;
}
示例3: matchParsedSystemInterfaces
//.........这里部分代码省略.........
ifaceIface->firstLLAddress();
inet_ntop6(ifaceIface->getLLAddress(), tmp);
if (is_addr_tentative(ifaceIface->getName(), ifaceIface->getID(), tmp)
== LOWLEVEL_TENTATIVE_YES) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has link-local address " << tmp
<< ", but it is currently tentative." << LogEnd;
if (this->inactiveMode()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " is not operational yet (link-local address "
<< "is not ready), skipping it for now." << LogEnd;
addIface(cfgIface);
makeInactiveIface(cfgIface->getID(), true); // move it to InactiveLst
return true;
}
Log(Crit) << "Interface " << ifaceIface->getFullName()
<< " has tentative link-local address (and inactive-mode is disabled)." << LogEnd;
return false;
}
this->addIface(cfgIface);
Log(Info) << "Interface " << cfgIface->getName() << "/" << cfgIface->getID()
<< " configuation has been loaded." << LogEnd;
}
} else {
// user didn't specified any interfaces in config file, so
// we'll try to configure each interface we could find
Log(Warning) << "Config file does not contain any interface definitions. Trying to autodetect."
<< LogEnd;
List(TIPv6Addr) dnsList;
dnsList.clear();
parser->ParserOptStack.getLast()->setDNSServerLst(&dnsList);
int cnt = 0;
ClntIfaceMgr().firstIface();
while ( ifaceIface = ClntIfaceMgr().getIface() ) {
// for each interface present in the system...
if (!ifaceIface->flagUp()) {
Log(Notice) << "Interface " << ifaceIface->getFullName() << " is down, ignoring." << LogEnd;
continue;
}
if (!ifaceIface->flagRunning()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has flag RUNNING not set, ignoring." << LogEnd;
continue;
}
if (!ifaceIface->flagMulticast()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " is not multicast capable, ignoring." << LogEnd;
continue;
}
if ( !(ifaceIface->getMacLen() > 5) ) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has MAC address length " << ifaceIface->getMacLen()
<< " (6 or more required), ignoring." << LogEnd;
continue;
}
ifaceIface->firstLLAddress();
if (!ifaceIface->getLLAddress()) {
Log(Notice) << "Interface " << ifaceIface->getFullName()
<< " has no link-local address, ignoring. "
<< "(Disconnected? Not associated? No-link?)" << LogEnd;
continue;
}
// One address...
SPtr<TClntCfgAddr> addr(new TClntCfgAddr());
addr->setOptions(parser->ParserOptStack.getLast());
// ... is stored in one IA...
SPtr<TClntCfgIA> ia = new TClntCfgIA();
ia->setOptions(parser->ParserOptStack.getLast());
ia->addAddr(addr);
// ... on this newly created interface...
cfgIface = SPtr<TClntCfgIface>(new TClntCfgIface(ifaceIface->getID()));
cfgIface->setIfaceName(ifaceIface->getName());
cfgIface->setIfaceID(ifaceIface->getID());
cfgIface->addIA(ia);
cfgIface->setOptions(parser->ParserOptStack.getLast());
// ... which is added to ClntCfgMgr
this->addIface(cfgIface);
Log(Info) << "Interface " << cfgIface->getName() << "/" << cfgIface->getID()
<< " has been added." << LogEnd;
cnt ++;
}
if (!cnt) {
Log(Crit) << "Unable to detect any suitable interfaces. If there are any interfaces that you"
<< " want to have configured, please specify them in client.conf file." << LogEnd;
return false;
}
}
return true;
}