pcap-file: set tenant-id if available

Set the id to each packet's 'pcap_v' structure.
pull/1608/head
Victor Julien 11 years ago
parent 127d8183d7
commit bea66156b9

@ -78,6 +78,8 @@ typedef struct PcapFileGlobalVars_ {
typedef struct PcapFileThreadVars_ typedef struct PcapFileThreadVars_
{ {
uint32_t tenant_id;
/* counters */ /* counters */
uint32_t pkts; uint32_t pkts;
uint64_t bytes; uint64_t bytes;
@ -155,6 +157,7 @@ void PcapFileCallbackLoop(char *user, struct pcap_pkthdr *h, u_char *pkt)
p->datalink = pcap_g.datalink; p->datalink = pcap_g.datalink;
p->pcap_cnt = ++pcap_g.cnt; p->pcap_cnt = ++pcap_g.cnt;
p->pcap_v.tenant_id = ptv->tenant_id;
ptv->pkts++; ptv->pkts++;
ptv->bytes += h->caplen; ptv->bytes += h->caplen;
@ -271,6 +274,16 @@ TmEcode ReceivePcapFileThreadInit(ThreadVars *tv, void *initdata, void **data)
SCReturnInt(TM_ECODE_FAILED); SCReturnInt(TM_ECODE_FAILED);
memset(ptv, 0, sizeof(PcapFileThreadVars)); memset(ptv, 0, sizeof(PcapFileThreadVars));
intmax_t tenant = 0;
if (ConfGetInt("pcap-file.tenant-id", &tenant) == 1) {
if (tenant > 0 && tenant < UINT_MAX) {
ptv->tenant_id = (uint32_t)tenant;
SCLogInfo("tenant %u", ptv->tenant_id);
} else {
SCLogError(SC_ERR_INVALID_ARGUMENT, "tenant out of range");
}
}
char errbuf[PCAP_ERRBUF_SIZE] = ""; char errbuf[PCAP_ERRBUF_SIZE] = "";
pcap_g.pcap_handle = pcap_open_offline((char *)initdata, errbuf); pcap_g.pcap_handle = pcap_open_offline((char *)initdata, errbuf);
if (pcap_g.pcap_handle == NULL) { if (pcap_g.pcap_handle == NULL) {

@ -39,6 +39,7 @@ char *PcapLiveGetDevice(int);
/* per packet Pcap vars */ /* per packet Pcap vars */
typedef struct PcapPacketVars_ typedef struct PcapPacketVars_
{ {
uint32_t tenant_id;
} PcapPacketVars; } PcapPacketVars;
/** needs to be able to contain Windows adapter id's, so /** needs to be able to contain Windows adapter id's, so

Loading…
Cancel
Save