/** * open file for read. * @param name * * @return bool */ bool LibPCapReader::Create(char * name, int loops) { this->m_loops = loops; if(name == NULL) { return false; } if (m_is_open) { return true; } m_file_handler = CAP_FOPEN_64(name,"rb"); if (m_file_handler == 0) { printf(" failed to open cap file %s : errno : %d\n",name, errno); return false; } CAP_FSEEK_64 (m_file_handler, 0, SEEK_END); m_file_size = CAP_FTELL_64 (m_file_handler); rewind (m_file_handler); if (init()) { m_is_open = true; return true; } fclose(m_file_handler); return false; }
/** * try to create type by type * @param name * * @return CCapReaderBase* */ CCapReaderBase * CCapReaderFactory::CreateReader(char * name, int loops) { if (name == NULL) { printf("Got null file name\n"); return NULL; } /* make sure we have a file */ FILE * f = CAP_FOPEN_64(name, "rb"); if (f == NULL) { if (errno == ENOENT) { printf("\nERROR: Cap file not found %s\n\n",name); } else { printf("\nERROR: Failed to open cap file '%s' with errno %d\n\n", name, errno); } return NULL; } // close the file fclose(f); for (capture_type_e i = LIBPCAP ; i<LAST_TYPE ; i = (capture_type_e(i+1)) ) { CCapReaderBase * next = CCapReaderFactory::CreateReaderInstace(i); if (next == NULL || next->Create(name,loops)) { return next; } delete next; } printf("\nERROR: file %s format not supported",name); printf("\nERROR: formats supported are LIBPCAP and ERF. other formats are deprecated\n\n"); return NULL; }
/** * Try to open file for writing. * @param name - file nae * * @return bool */ bool LibPCapWriter::Create(char * name) { if (name == NULL) { return false; } if (m_is_open) { return true; } m_file_handler = CAP_FOPEN_64(name,"wb"); if (m_file_handler == 0) { printf(" ERROR create file \n"); return(false); } /* prepare the write counter */ m_pkt_count = 0; return init(); }