예제 #1
0
/**
 * 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;
}
예제 #2
0
/**
 * 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;
}
예제 #3
0
/**
 * 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();
}