Merge pull request #58 from wllm-rbnt/dev

Add support for pcap output to FIFO
This commit is contained in:
Alexandre Dulaunoy 2021-07-21 23:09:39 +02:00 committed by GitHub
commit deb2566496
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -219,25 +219,30 @@ logpkt_pcap_open_fd(int fd) {
pcap_file_hdr_t hdr;
off_t sz;
ssize_t n;
struct stat st;
sz = lseek(fd, 0, SEEK_END);
if (sz == -1)
if(fstat(fd, &st))
return -1;
if (sz > 0) {
if (lseek(fd, 0, SEEK_SET) == -1)
if(!S_ISFIFO(st.st_mode)) {
sz = lseek(fd, 0, SEEK_END);
if (sz == -1)
return -1;
n = read(fd, &hdr, sizeof(pcap_file_hdr_t));
if (n != sizeof(pcap_file_hdr_t))
return -1;
if (hdr.magic_number == PCAP_MAGIC)
return lseek(fd, 0, SEEK_END) == -1 ? -1 : 0;
if (lseek(fd, 0, SEEK_SET) == -1)
return -1;
if (ftruncate(fd, 0) == -1)
return -1;
}
if (sz > 0) {
if (lseek(fd, 0, SEEK_SET) == -1)
return -1;
n = read(fd, &hdr, sizeof(pcap_file_hdr_t));
if (n != sizeof(pcap_file_hdr_t))
return -1;
if (hdr.magic_number == PCAP_MAGIC)
return lseek(fd, 0, SEEK_END) == -1 ? -1 : 0;
if (lseek(fd, 0, SEEK_SET) == -1)
return -1;
if (ftruncate(fd, 0) == -1)
return -1;
}
}
return logpkt_write_global_pcap_hdr(fd);
}