📄 pana_config_manager.cxx
字号:
payload.Get().u.m_DHCPv6)); ACE_DEBUG((LM_INFO, " Auto Conf v6 : %d\n", payload.Get().u.m_AUTOv6)); ACE_DEBUG((LM_INFO, " DHCPv4 IPsec : %d\n", payload.Get().u.m_DHCPv4IPsec)); ACE_DEBUG((LM_INFO, " IKEv2 : %d\n", payload.Get().u.m_IKEv2));}int PANA_XMLPPAC ::svc(DOMNode *n){ ACE_UINT32 flg; std::string tagName; tagName = "dhcpv4"; OD_Utl_XMLDataUInt32 dhcpv4(tagName, flg); dhcpv4.populate(n->getFirstChild()); payload.Get().u.m_DHCPv4 = flg; tagName = "dhcpv6"; OD_Utl_XMLDataUInt32 dhcpv6(tagName, flg); dhcpv6.populate(n->getFirstChild()); payload.Get().u.m_DHCPv6 = flg; tagName = "autoconfv6"; OD_Utl_XMLDataUInt32 autoconfv6(tagName, flg); autoconfv6.populate(n->getFirstChild()); payload.Get().u.m_AUTOv6 = flg; tagName = "dhcpv4_ipsec"; OD_Utl_XMLDataUInt32 tunnel(tagName, flg); tunnel.populate(n->getFirstChild()); payload.Get().u.m_DHCPv4IPsec = flg; tagName = "ikev2"; OD_Utl_XMLDataUInt32 ikev2(tagName, flg); ikev2.populate(n->getFirstChild()); payload.Get().u.m_IKEv2 = flg; payload.Get().u.m_NoConfig = (payload.Get().v > 0) ? false : true; print(); return (0);}void PANA_XMLDeviceId::print(){ ACE_DEBUG((LM_INFO, " EP Device Id : %d, ", payload.type));}int PANA_XMLDeviceId::svc(DOMNode *n){ std::string tagName; std::string id; tagName = "type"; ACE_UINT32 type; OD_Utl_XMLDataUInt32 ptype(tagName, type); ptype.populate(n->getFirstChild()); payload.type = type; tagName = "id"; OD_Utl_XMLDataString pid(tagName, id); pid.populate(n->getFirstChild()); print(); ACE_DEBUG((LM_INFO, "[%s]\n", id.data())); char buf[256]; if ((payload.type != AAA_ADDR_FAMILY_IPV4) && (payload.type != AAA_ADDR_FAMILY_IPV6)) { int len = PANA_DeviceIdConverter::AsciiToHex (id.data(), (unsigned char*)buf); if (len > 0) { payload.value.assign(buf, len); } else { return (-1); } } else { ACE_OS::sprintf(buf, "%s:0", id.data()); ACE_INET_Addr addr(buf); PANA_DeviceIdConverter::PopulateFromAddr(addr, payload); } return (0);}void PANA_XMLDataClient::print(){ ACE_DEBUG((LM_INFO, " Client configuration\n")); ACE_DEBUG((LM_INFO, " PAA IP Adress : %s\n", payload.m_PaaIpAddress.data())); ACE_DEBUG((LM_INFO, " PAA Port Number : %d\n", payload.m_PaaPortNumber)); ACE_DEBUG((LM_INFO, " PAA Mcast Addr : %s\n", payload.m_PaaMcastAddress.data()));}int PANA_XMLDataClient::svc(DOMNode *n){ std::string tagName; tagName = "paa_ip_address"; OD_Utl_XMLDataString paa_ip(tagName, payload.m_PaaIpAddress); paa_ip.populate(n->getFirstChild()); tagName = "paa_port_number"; OD_Utl_XMLDataUInt32 paa_port(tagName, payload.m_PaaPortNumber); paa_port.populate(n->getFirstChild()); tagName = "paa_mcast_address"; OD_Utl_XMLDataString paa_mcast(tagName, payload.m_PaaMcastAddress); paa_mcast.populate(n->getFirstChild()); print(); tagName = "isp_info"; PANA_XMLProviderInfo isp(tagName, payload.m_IspInfo); isp.banner() = "ISP Info"; isp.populate(n->getFirstChild()); return (0);}void PANA_XMLDataAuthAgent::print(){ ACE_DEBUG((LM_INFO, " Auth Agent configuration\n")); ACE_DEBUG((LM_INFO, " Use Cookie : %d\n", payload.m_UseCookie)); ACE_DEBUG((LM_INFO, " Session-Lifetime: %d\n", payload.m_SessionLifetime)); ACE_DEBUG((LM_INFO, " Grace Period : %d\n", payload.m_GracePeriod)); ACE_DEBUG((LM_INFO, " Multicast Addr : %s\n", payload.m_McastAddress.data()));}int PANA_XMLDataAuthAgent::svc(DOMNode *n){ std::string tagName; tagName = "use_cookie"; OD_Utl_XMLDataUInt32 ck(tagName, payload.m_UseCookie); ck.populate(n->getFirstChild()); tagName = "session_lifetime"; OD_Utl_XMLDataUInt32 sessLifetime(tagName, payload.m_SessionLifetime); sessLifetime.populate(n->getFirstChild()); tagName = "grace_period"; OD_Utl_XMLDataUInt32 gracePeriod(tagName, payload.m_GracePeriod); gracePeriod.populate(n->getFirstChild()); tagName = "mcast_address"; OD_Utl_XMLDataString mcast(tagName, payload.m_McastAddress); mcast.populate(n->getFirstChild()); tagName = "carry_device_id"; OD_Utl_XMLDataUInt32 carryId(tagName, payload.m_CarryDeviceId); carryId.populate(n->getFirstChild()); print(); tagName = "nap_info"; PANA_XMLProviderInfo nap(tagName, payload.m_NapInfo); nap.banner() = "NAP Info"; nap.populate(n->getFirstChild()); ACE_UINT32 ndx = 0; char buf[32]; tagName = "isp_info"; DOMNode *sibling = n->getFirstChild(); while (sibling != NULL) { if (sibling->getNodeType() == DOMNode::ELEMENT_NODE) { char *c_str = XMLString::transcode(sibling->getNodeName()); if (XMLString::compareString(c_str, tagName.c_str()) == 0) { PANA_CfgProviderInfo *pInfo; ACE_NEW_NORETURN(pInfo, PANA_CfgProviderInfo); PANA_XMLProviderInfo isp(tagName, *pInfo); ACE_OS::sprintf(buf, "%s #%d", "ISP Info", ++ ndx); isp.banner() = buf; if (isp.populate(sibling) == 0) { payload.m_IspInfo.push_back(pInfo); } else { delete pInfo; } } XMLString::release(&c_str); } sibling = sibling->getNextSibling(); } tagName = "ep_id"; sibling = n->getFirstChild(); while (sibling != NULL) { if (sibling->getNodeType() == DOMNode::ELEMENT_NODE) { char *c_str = XMLString::transcode(sibling->getNodeName()); if (XMLString::compareString(c_str, tagName.c_str()) == 0) { PANA_DeviceId *devId = new PANA_DeviceId; PANA_XMLDeviceId pId(tagName, *devId); if (pId.populate(sibling) == 0) { payload.m_EpIdList.push_back(devId); } else { delete devId; } } XMLString::release(&c_str); } sibling = sibling->getNextSibling(); } return (0);}int PANA_XMLData::svc(DOMNode *n){ std::string tagName; tagName = "general"; PANA_XMLDataGeneral general(tagName, payload.m_General); general.populate(n->getFirstChild()); tagName = "client"; PANA_XMLDataClient client(tagName, payload.m_PaC); client.populate(n->getFirstChild()); tagName = "auth_agent"; PANA_XMLDataAuthAgent aa(tagName, payload.m_PAA); aa.populate(n->getFirstChild()); return (0);}PANA_CfgManager::PANA_CfgManager(){}PANA_CfgManager::~PANA_CfgManager(){ // do nothing}void PANA_CfgManager::open(std::string &cfg_file){ std::string cfgRoot = "pana_configuration"; OD_Utl_XMLTreeParser parser; PANA_XMLData configData(cfgRoot, m_Data); if (parser.open(cfg_file, configData) != 0) { throw (PANA_Exception(PANA_Exception::CONFIG_ERROR, "Fatal: Unable to parse XML config file")); }}void PANA_CfgManager::close(){ // free up allocated provider list PANA_CfgProviderInfo *i; PANA_CfgProviderList &ispList = m_Data.m_PAA.m_IspInfo; while (! ispList.empty()) { i = ispList.front(); if (i) { delete i; } ispList.pop_front(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -