X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2FpcapDecoder%2Fmain.cpp;h=8029b51ab1a5db2489f8bcf03704c7512fc9e6a5;hb=3190f5702ccfcd2c42c51f4aa3217b249fead77f;hp=65681d8086b6939ef6809e056fc4295222213f3d;hpb=e7dbacff41163bf8cefb267daae84d96056ebc86;p=anna.git diff --git a/example/diameter/pcapDecoder/main.cpp b/example/diameter/pcapDecoder/main.cpp index 65681d8..8029b51 100644 --- a/example/diameter/pcapDecoder/main.cpp +++ b/example/diameter/pcapDecoder/main.cpp @@ -290,10 +290,10 @@ void my_callback(u_char *useless, const struct pcap_pkthdr* pkthdr, } bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) throw() { - // Get hex string static char buffer[8192]; std::ifstream infile(pathfile.c_str(), std::ifstream::in); + if(infile.is_open()) { infile >> buffer; std::string hexString(buffer, strlen(buffer)); @@ -304,7 +304,6 @@ bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) t msg += hexString; anna::Logger::debug(msg, ANNA_FILE_LOCATION); ); - anna::functions::fromHexString(hexString, db); // Close file infile.close(); @@ -316,10 +315,11 @@ bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) t void _exit(const std::string &message, int resultCode = 1) { - if (resultCode) + if(resultCode) std::cerr << message << std::endl << std::endl; else std::cout << message << std::endl << std::endl; + exit(resultCode); } @@ -327,6 +327,7 @@ void _exit(const std::string &message, int resultCode = 1) { //------------------------------------------------------------------- int main(int argc, char **argv) { std::string exec = argv[0]; + std::string filetrace = exec.substr(exec.find_last_of("/") + 1) + ".trace"; std::cout << std::endl; //check command line arguments @@ -351,7 +352,7 @@ int main(int argc, char **argv) { << (ignoreFlags ? "non strict" : "strict") << std::endl; // Logger and engines: Logger::setLevel(Logger::Debug); - Logger::initialize("pcapDecoder", new TraceWriter("file.trace", 2048000)); + Logger::initialize("pcapDecoder", new TraceWriter(filetrace.c_str(), 2048000)); anna::diameter::codec::Engine *codecEngine = new anna::diameter::codec::Engine(); anna::diameter::stack::Engine &stackEngine = @@ -397,11 +398,11 @@ int main(int argc, char **argv) { // Tracing: //if (cl.exists("trace")) // anna::Logger::setLevel(anna::Logger::asLevel(cl.getValue("trace"))); - // Check hex content input file (look extension): anna::DataBlock db_aux(true); + if(isHex) { - if (!getDataBlockFromHexFile(inputFile, db_aux)) + if(!getDataBlockFromHexFile(inputFile, db_aux)) _exit("Error reading hex file provided"); try { @@ -414,17 +415,14 @@ int main(int argc, char **argv) { outputFile += ".as.xml"; std::ofstream out(outputFile, std::ifstream::out); out << G_codecMsg.asXMLString(); - // Close output file: out.close(); - - std::string msg = "Open 'file.trace' in order to see process traces.\n"; + std::string msg = "Open '"; msg += filetrace; msg += "' in order to see process traces.\n"; msg += "Open '"; msg += outputFile; msg += "' to see decoding results."; _exit(msg, 0); } // Normal input: pcap file: - // SNIFFING //////////////////////////////////////////////////////////////////////////////////////////////7 //temporary packet buffers struct pcap_pkthdr header; // The header that pcap gives us @@ -484,8 +482,7 @@ int main(int argc, char **argv) { // Close output file: out.close(); - - std::string msg = "Open 'file.trace' in order to see process traces.\n"; + std::string msg = "Open '"; msg += filetrace; msg += "' in order to see process traces.\n"; msg += "Open '"; msg += outputFile; msg += "' to see decoding results."; _exit(msg, 0); }