Cleanup pcap output.

remotes/origin/master-1.0.x
Victor Julien 17 years ago
parent e0aacac4c6
commit 53c9276d51

@ -107,10 +107,15 @@ TmEcode ReceivePcapFile(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq)
ptv->in_p = p; ptv->in_p = p;
/// Right now we just support reading packets one at a time. /* Right now we just support reading packets one at a time. */
int r = pcap_dispatch(pcap_g.pcap_handle, 1, (pcap_handler)PcapFileCallback, (u_char *)ptv); int r = pcap_dispatch(pcap_g.pcap_handle, 1, (pcap_handler)PcapFileCallback, (u_char *)ptv);
if (r <= 0) { if (r < 0) {
printf("ReceivePcap: code %" PRId32 " error %s\n", r, pcap_geterr(pcap_g.pcap_handle)); SCLogError(SC_ERR_PCAP_DISPATCH, "error code %" PRId32 " %s\n",
r, pcap_geterr(pcap_g.pcap_handle));
EngineStop();
return TM_ECODE_FAILED;
} else if (r == 0) {
SCLogDebug("error code %" PRId32 " %s\n", r, pcap_geterr(pcap_g.pcap_handle));
EngineStop(); EngineStop();
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
@ -175,7 +180,7 @@ TmEcode ReceivePcapFileThreadInit(ThreadVars *tv, void *initdata, void **data) {
break; break;
default: default:
printf("Error: datalink type %" PRId32 " not yet supported in module PcapFile.\n", pcap_g.datalink); printf("Error: datalink type %" PRId32 " not (yet) supported in module PcapFile.\n", pcap_g.datalink);
free(ptv); free(ptv);
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
@ -188,7 +193,7 @@ TmEcode ReceivePcapFileThreadInit(ThreadVars *tv, void *initdata, void **data) {
void ReceivePcapFileThreadExitStats(ThreadVars *tv, void *data) { void ReceivePcapFileThreadExitStats(ThreadVars *tv, void *data) {
PcapFileThreadVars *ptv = (PcapFileThreadVars *)data; PcapFileThreadVars *ptv = (PcapFileThreadVars *)data;
printf(" - (%s) Packets %" PRIu32 ", bytes %" PRIu64 ".\n", tv->name, ptv->pkts, ptv->bytes); SCLogInfo(" - (%s) Packets %" PRIu32 ", bytes %" PRIu64 ".", tv->name, ptv->pkts, ptv->bytes);
return; return;
} }

@ -126,14 +126,13 @@ void PcapCallback(char *user, struct pcap_pkthdr *h, u_char *pkt) {
TmEcode ReceivePcap(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) { TmEcode ReceivePcap(ThreadVars *tv, Packet *p, void *data, PacketQueue *pq) {
PcapThreadVars *ptv = (PcapThreadVars *)data; PcapThreadVars *ptv = (PcapThreadVars *)data;
/// Just read one packet at a time for now. /* Just read one packet at a time for now. */
int r = 0; int r = 0;
while (r == 0) { while (r == 0) {
//printf("ReceivePcap: call pcap_dispatch %" PRIu32 "\n", tv->flags);
r = pcap_dispatch(ptv->pcap_handle, 1, (pcap_handler)PcapCallback, (u_char *)ptv); r = pcap_dispatch(ptv->pcap_handle, 1, (pcap_handler)PcapCallback, (u_char *)ptv);
if (r < 0) { if (r < 0) {
printf("ReceivePcap: error %s\n", pcap_geterr(ptv->pcap_handle)); SCLogError(SC_ERR_PCAP_DISPATCH, "error code %"PRId32" %s",
r, pcap_geterr(ptv->pcap_handle));
break; break;
} }

@ -87,6 +87,7 @@ const char * SCErrorToString(SCError err)
CASE_CODE (SC_WARN_IPFW_UNBIND); CASE_CODE (SC_WARN_IPFW_UNBIND);
CASE_CODE (SC_ERR_MULTIPLE_RUN_MODE); CASE_CODE (SC_ERR_MULTIPLE_RUN_MODE);
CASE_CODE (SC_ERR_BPF); CASE_CODE (SC_ERR_BPF);
CASE_CODE (SC_ERR_PCAP_DISPATCH);
default: default:
return "UNKNOWN_ERROR"; return "UNKNOWN_ERROR";
} }

@ -108,6 +108,7 @@ typedef enum {
SC_ERR_UNKNOWN_RUN_MODE, SC_ERR_UNKNOWN_RUN_MODE,
SC_ERR_MULTIPLE_RUN_MODE, SC_ERR_MULTIPLE_RUN_MODE,
SC_ERR_BPF, SC_ERR_BPF,
SC_ERR_PCAP_DISPATCH,
} SCError; } SCError;
const char *SCErrorToString(SCError); const char *SCErrorToString(SCError);

Loading…
Cancel
Save