Commit d89bfa72 authored by Cedric Roux's avatar Cedric Roux

Merge remote-tracking branch 'origin/T-fixes-w43' into develop_integration_2018_w44

parents e46031fe 633534c2
...@@ -60,6 +60,11 @@ macpdu2wireshark: macpdu2wireshark.o database.o utils.o handler.o event.o \ ...@@ -60,6 +60,11 @@ macpdu2wireshark: macpdu2wireshark.o database.o utils.o handler.o event.o \
multi: multi.o utils.o database.o config.o multi: multi.o utils.o database.o config.o
$(CC) $(CFLAGS) -o multi $^ $(LIBS) $(CC) $(CFLAGS) -o multi $^ $(LIBS)
multi.o: ../T_IDs.h
../T_IDs.h:
cd .. && $(MAKE)
.PHONY: all gui/gui.a view/view.a logger/logger.a filter/filter.a .PHONY: all gui/gui.a view/view.a logger/logger.a filter/filter.a
gui/gui.a: gui/gui.a:
......
...@@ -16,6 +16,8 @@ void usage(void) ...@@ -16,6 +16,8 @@ void usage(void)
" -f <name> <value> field 'name' of 'event' has to match 'value'\n" " -f <name> <value> field 'name' of 'event' has to match 'value'\n"
" type of 'name' must be int\n" " type of 'name' must be int\n"
" (you can use several -f options)\n" " (you can use several -f options)\n"
" -after <raw time> <nsec> 'event' time has to be greater than this\n"
" -count <n> dump 'n' matching events (less if EOF reached)\n"
); );
exit(1); exit(1);
} }
...@@ -51,6 +53,10 @@ int main(int n, char **v) ...@@ -51,6 +53,10 @@ int main(int n, char **v)
int filter_count = 0; int filter_count = 0;
int buffer_arg; int buffer_arg;
int found; int found;
int count = 1;
int check_time = 0;
time_t sec;
long nsec;
for (i = 1; i < n; i++) { for (i = 1; i < n; i++) {
if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage(); if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage();
...@@ -63,6 +69,14 @@ int main(int n, char **v) ...@@ -63,6 +69,14 @@ int main(int n, char **v)
filter_value[filter_count++] = atoi(v[++i]); filter_value[filter_count++] = atoi(v[++i]);
continue; continue;
} }
if (!strcmp(v[i], "-after")) { if (i>n-3) usage();
check_time = 1;
sec = atoll(v[++i]);
nsec = atol(v[++i]);
continue;
}
if (!strcmp(v[i], "-count"))
{ if (i > n-2) usage(); count = atoi(v[++i]); continue; }
if (file == NULL) { file = v[i]; continue; } if (file == NULL) { file = v[i]; continue; }
if (event_name == NULL) { event_name = v[i]; continue; } if (event_name == NULL) { event_name = v[i]; continue; }
if (buffer_name == NULL) { buffer_name = v[i]; continue; } if (buffer_name == NULL) { buffer_name = v[i]; continue; }
...@@ -111,13 +125,20 @@ int main(int n, char **v) ...@@ -111,13 +125,20 @@ int main(int n, char **v)
break; break;
if (i != filter_count) if (i != filter_count)
continue; continue;
if (check_time &&
!(e.sending_time.tv_sec > sec ||
(e.sending_time.tv_sec == sec && e.sending_time.tv_nsec >= nsec)))
continue;
if (fwrite(e.e[buffer_arg].b, e.e[buffer_arg].bsize, 1, out) != 1) if (fwrite(e.e[buffer_arg].b, e.e[buffer_arg].bsize, 1, out) != 1)
{ perror(output_file); exit(1); } { perror(output_file); exit(1); }
found = 1; found++;
break; if (found == count)
break;
} }
if (found == 0) printf("ERROR: event not found\n"); if (found == 0) printf("ERROR: event not found\n");
if (found != count)
printf("WARNING: dumped %d events (wanted %d)\n", found, count);
fclose(out); fclose(out);
......
...@@ -30,6 +30,7 @@ void framelog_set_skip(logger *_this, int skip_delay); ...@@ -30,6 +30,7 @@ void framelog_set_skip(logger *_this, int skip_delay);
void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9); void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9);
void textlog_dump_buffer(logger *_this, int dump_buffer); void textlog_dump_buffer(logger *_this, int dump_buffer);
void textlog_raw_time(logger *_this, int raw_time);
#include "view/view.h" #include "view/view.h"
......
...@@ -33,6 +33,7 @@ struct textlog { ...@@ -33,6 +33,7 @@ struct textlog {
/* local output buffer */ /* local output buffer */
OBUF o; OBUF o;
int dump_buffer; int dump_buffer;
int raw_time;
}; };
static void _event(void *p, event e) static void _event(void *p, event e)
...@@ -51,9 +52,13 @@ static void _event(void *p, event e) ...@@ -51,9 +52,13 @@ static void _event(void *p, event e)
#ifdef T_SEND_TIME #ifdef T_SEND_TIME
t = localtime(&e.sending_time.tv_sec); t = localtime(&e.sending_time.tv_sec);
/* round tv_nsec to nearest millisecond */ if (l->raw_time)
sprintf(tt, "%2.2d:%2.2d:%2.2d.%9.9ld: ", t->tm_hour, t->tm_min, t->tm_sec, sprintf(tt, "%2.2d:%2.2d:%2.2d.%9.9ld [%ld]: ",
e.sending_time.tv_nsec); t->tm_hour, t->tm_min, t->tm_sec,
e.sending_time.tv_nsec, e.sending_time.tv_sec);
else
sprintf(tt, "%2.2d:%2.2d:%2.2d.%9.9ld: ", t->tm_hour, t->tm_min, t->tm_sec,
e.sending_time.tv_nsec);
PUTS(&l->o, tt); PUTS(&l->o, tt);
#endif #endif
...@@ -215,3 +220,9 @@ void textlog_dump_buffer(logger *_this, int dump_buffer) ...@@ -215,3 +220,9 @@ void textlog_dump_buffer(logger *_this, int dump_buffer)
struct textlog *l = _this; struct textlog *l = _this;
l->dump_buffer = dump_buffer; l->dump_buffer = dump_buffer;
} }
void textlog_raw_time(logger *_this, int raw_time)
{
struct textlog *l = _this;
l->raw_time = raw_time;
}
...@@ -52,6 +52,7 @@ void usage(void) ...@@ -52,6 +52,7 @@ void usage(void)
" they will be processed in order\n" " they will be processed in order\n"
" by default, all is off\n" " by default, all is off\n"
" -full also dump buffers' content\n" " -full also dump buffers' content\n"
" -raw-time also prints 'raw time'\n"
" -ip <host> connect to given IP address (default %s)\n" " -ip <host> connect to given IP address (default %s)\n"
" -p <port> connect to given port (default %d)\n" " -p <port> connect to given port (default %d)\n"
" -x GUI output\n" " -x GUI output\n"
...@@ -91,6 +92,7 @@ int main(int n, char **v) ...@@ -91,6 +92,7 @@ int main(int n, char **v)
int gui_active = 1; int gui_active = 1;
textlog_data textlog_data; textlog_data textlog_data;
int full = 0; int full = 0;
int raw_time = 0;
/* write on a socket fails if the other end is closed and we get SIGPIPE */ /* write on a socket fails if the other end is closed and we get SIGPIPE */
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) abort(); if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) abort();
...@@ -117,6 +119,7 @@ int main(int n, char **v) ...@@ -117,6 +119,7 @@ int main(int n, char **v)
if (!strcmp(v[i], "-debug-gui")) { gui_logd = 1; continue; } if (!strcmp(v[i], "-debug-gui")) { gui_logd = 1; continue; }
if (!strcmp(v[i], "-no-gui")) { gui_active = 0; continue; } if (!strcmp(v[i], "-no-gui")) { gui_active = 0; continue; }
if (!strcmp(v[i], "-full")) { full = 1; continue; } if (!strcmp(v[i], "-full")) { full = 1; continue; }
if (!strcmp(v[i], "-raw-time")) { raw_time = 1; continue; }
usage(); usage();
} }
...@@ -162,6 +165,7 @@ int main(int n, char **v) ...@@ -162,6 +165,7 @@ int main(int n, char **v)
// "ev: {} eNB_id [eNB_ID] frame [frame] subframe [subframe]"); // "ev: {} eNB_id [eNB_ID] frame [frame] subframe [subframe]");
logger_add_view(textlog, out); logger_add_view(textlog, out);
if (full) textlog_dump_buffer(textlog, 1); if (full) textlog_dump_buffer(textlog, 1);
if (raw_time) textlog_raw_time(textlog, 1);
free(name); free(name);
free(desc); free(desc);
} }
...@@ -187,7 +191,7 @@ int main(int n, char **v) ...@@ -187,7 +191,7 @@ int main(int n, char **v)
while (1) { while (1) {
event e; event e;
e = get_event(textlog_data.socket, &ebuf, database); e = get_event(textlog_data.socket, &ebuf, database);
if (e.type == -1) abort(); if (e.type == -1) break;
handle_event(h, e); handle_event(h, e);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment