#include <anna/diameter/helpers/dcca/functions.hpp>
#include <anna/diameter/helpers/dcca/functions.hpp>
#include <anna/diameter.comm/OriginHost.hpp>
+#include <anna/diameter.comm/OriginHostManager.hpp>
// Local
#include "Procedure.hpp"
}
}
-void Procedure::execute(const std::string &args, std::string &response, anna::diameter::comm::OriginHost *originHost) throw(anna::RuntimeException) {
+void Procedure::execute(const std::string &args, std::string &response) throw(anna::RuntimeException) {
response = "Dynamic procedure failed to process '"; response += args; response += "': ";
// Load xml messages:
anna::diameter::codec::Message ccri, ccrt;
anna::diameter::codec::Avp *ccri_sessionId, *ccrt_sessionId, *ccri_framedIPAddress, *ccrt_framedIPAddress, *ccri_msisdn, *ccri_imsi;
- anna::diameter::codec::Avp *si1, *si2, *sidata1, *sidata2, *sitype1, *sitype2;
+ anna::diameter::codec::Avp *si1, *si2, *sidata1, *sidata2, *sitype1;
+ anna::diameter::codec::Avp *ccri_originHost;
///////// CCR-Initial:
ccri.loadXML(ccr_i);
// Session-Id & Framed-Ip-Address AVPs
ccri_sessionId = ccri.getAvp("Session-Id");
ccri_framedIPAddress = ccri.getAvp("Framed-IP-Address");
+ ccri_originHost = ccri.getAvp("Origin-Host");
// Subscription-Id AVPs
if (ccri.countAvp("Subscription-Id") != 2) {
char cad_framed[16];
anna::testing::TestCase *tc;
+ // Origin host manager:
+ anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate();
+ // Assume the oh name from CCR-I (same as CCR-T):
+ std::string originHostName = ccri_originHost->getDiameterIdentity()->getValue();
+ anna::diameter::comm::OriginHost *originHost = ohm.getOriginHost(originHostName);
+
for (ll_index = 0; ll_index < ll_seq_size; ll_index++) {
// Calculate next values ////////////////////////////////////////////////////////////