diff options
author | Yunchih Chen <yunchih.cat@gmail.com> | 2018-12-07 22:02:40 +0800 |
---|---|---|
committer | Yunchih Chen <yunchih.cat@gmail.com> | 2019-03-07 15:02:17 +0800 |
commit | 644b830057bcc29d960a89198d3709902a51b8fe (patch) | |
tree | f3c4ffa3bc9f8b3a2f53a34e2146da5588e34066 /bin/nfextract.c | |
parent | 5d07a9163a50c3bfd7365bafbab58c40bb6d9a59 (diff) | |
download | nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar.gz nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar.bz2 nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar.lz nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar.xz nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.tar.zst nfcollect-644b830057bcc29d960a89198d3709902a51b8fe.zip |
Minor fix
Diffstat (limited to 'bin/nfextract.c')
-rw-r--r-- | bin/nfextract.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/bin/nfextract.c b/bin/nfextract.c index 1b14125..0ca112e 100644 --- a/bin/nfextract.c +++ b/bin/nfextract.c @@ -22,7 +22,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#define _XOPEN_SOURCE 700 // strptime +#define _XOPEN_SOURCE 700 // strptime #ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809 // strdup #endif @@ -50,9 +50,7 @@ #define DATE_FORMAT "%Y-%m-%d" #define DATE_FORMAT_FULL DATE_FORMAT " %H:%M" #define DATE_FORMAT_FULL2 DATE_FORMAT " %H:%M:%S" - -sem_t nfl_commit_queue; -uint16_t nfl_group_id; +#define DATE_FORMAT_OUTPUT DATE_FORMAT_FULL2 const char *help_text = "Usage: " PROG " [OPTION]\n" @@ -72,20 +70,6 @@ void sig_handler(int signo) { puts("Terminated due to SIGHUP ..."); } -static inline void format_entry(char *output, Entry *e) { - sprintf(output, - " " - "t=%ld\t" - "daddr=%s\t" - "proto=%s\t" - "uid=%d\t" - "sport=%d\t" - "dport=%d", - e->timestamp, inet_ntoa(e->daddr), - e->protocol == IPPROTO_TCP ? "TCP" : "UDP", e->uid, e->sport, - e->dport); -} - static void callback(const State *s, const Timerange *range) { int nr_entries = s->header->nr_entries; @@ -95,10 +79,24 @@ static void callback(const State *s, const Timerange *range) { while (i < nr_entries && s->store[i].timestamp < range->from) i++; - char output[1024]; + time_t last_t = 0; + char timestamp[20]; while (i < nr_entries && s->store[i].timestamp < range->until) { - format_entry(output, &s->store[i]); - puts((char *)output); + if (last_t != s->store[i].timestamp || !last_t) { + last_t = s->store[i].timestamp; + strftime(timestamp, 20, DATE_FORMAT_OUTPUT, localtime(&last_t)); + } + + printf(" " + "%-18s:\t" + "daddr=%-16s\t" + "proto=%s\t" + "uid=%d\t" + "sport=%d\t" + "dport=%d\n", + timestamp, inet_ntoa(s->store[i].daddr), + s->store[i].protocol == IPPROTO_TCP ? "TCP" : "UDP", + s->store[i].uid, s->store[i].sport, s->store[i].dport); ++i; } } |