diff --git a/daemon/control_ng.c b/daemon/control_ng.c index b86c4de31..c9f4b56a7 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -563,20 +563,18 @@ static void homer_trace_msg_in(ng_ctx *hctx, str *data) { if (hctx && hctx->local_ep) { hctx->should_trace = should_trace_msg(hctx->command); if (hctx->should_trace) { - struct timeval tv; - gettimeofday(&tv, NULL); GString *msg = create_homer_msg(&hctx->cookie, data); - homer_send(msg, &hctx->callid, hctx->sin_ep, hctx->local_ep, &tv, rtpe_config.homer_ng_capt_proto); + homer_send(msg, &hctx->callid, hctx->sin_ep, hctx->local_ep, now_us(), + rtpe_config.homer_ng_capt_proto); } } } static void homer_trace_msg_out(ng_ctx *hctx, str *data) { if (hctx && hctx->should_trace) { - struct timeval tv; - gettimeofday(&tv, NULL); GString *msg = create_homer_msg(&hctx->cookie, data); - homer_send(msg, &hctx->callid, hctx->local_ep, hctx->sin_ep, &tv, rtpe_config.homer_ng_capt_proto); + homer_send(msg, &hctx->callid, hctx->local_ep, hctx->sin_ep, now_us(), + rtpe_config.homer_ng_capt_proto); } } diff --git a/daemon/homer.c b/daemon/homer.c index 58349b145..8da1eb25c 100644 --- a/daemon/homer.c +++ b/daemon/homer.c @@ -41,7 +41,7 @@ static struct homer_sender *main_homer_sender; static int send_hepv3 (GString *s, const str *id, int, const endpoint_t *src, const endpoint_t *dst, - const struct timeval *, int hep_capture_proto); + int64_t, int hep_capture_proto); // state handlers static int __established(struct homer_sender *hs); @@ -203,7 +203,7 @@ void homer_sender_init(const endpoint_t *ep, int protocol, int capture_id) { // takes over the GString int homer_send(GString *s, const str *id, const endpoint_t *src, - const endpoint_t *dst, const struct timeval *tv, int hep_capture_proto) + const endpoint_t *dst, int64_t tv, int hep_capture_proto) { if (!main_homer_sender) goto out; @@ -320,7 +320,7 @@ typedef struct hep_generic hep_generic_t; // modifies the GString in place static int send_hepv3 (GString *s, const str *id, int capt_id, const endpoint_t *src, const endpoint_t *dst, - const struct timeval *tv, int hep_capture_proto) + int64_t tv, int hep_capture_proto) { struct hep_generic *hg=NULL; @@ -402,14 +402,14 @@ static int send_hepv3 (GString *s, const str *id, int capt_id, const endpoint_t /* TIMESTAMP SEC */ hg->time_sec.chunk.vendor_id = htons(0x0000); hg->time_sec.chunk.type_id = htons(0x0009); - hg->time_sec.data = htonl(tv->tv_sec); + hg->time_sec.data = tv / 1000000; hg->time_sec.chunk.length = htons(sizeof(hg->time_sec)); /* TIMESTAMP USEC */ hg->time_usec.chunk.vendor_id = htons(0x0000); hg->time_usec.chunk.type_id = htons(0x000a); - hg->time_usec.data = htonl(tv->tv_usec); + hg->time_usec.data = tv % 1000000; hg->time_usec.chunk.length = htons(sizeof(hg->time_usec)); /* Protocol TYPE */ diff --git a/daemon/rtcp.c b/daemon/rtcp.c index a79cb760a..5519081fc 100644 --- a/daemon/rtcp.c +++ b/daemon/rtcp.c @@ -269,7 +269,7 @@ struct rtcp_handler { void (*xr_rr_time)(struct rtcp_process_ctx *, const struct xr_rb_rr_time *); void (*xr_voip_metrics)(struct rtcp_process_ctx *, const struct xr_rb_voip_metrics *); void (*finish)(struct rtcp_process_ctx *, call_t *, const endpoint_t *, const endpoint_t *, - const struct timeval *); + int64_t); void (*destroy)(struct rtcp_process_ctx *); }; // collection of all handler types @@ -323,7 +323,7 @@ static void homer_sdes_item(struct rtcp_process_ctx *, const struct sdes_chunk * const char *); static void homer_sdes_list_end(struct rtcp_process_ctx *); static void homer_finish(struct rtcp_process_ctx *, call_t *, const endpoint_t *, const endpoint_t *, - const struct timeval *); + int64_t); // syslog functions static void logging_init(struct rtcp_process_ctx *); @@ -338,7 +338,7 @@ static void logging_xr_dlrr(struct rtcp_process_ctx *, const struct xr_rb_dlrr * static void logging_xr_stats(struct rtcp_process_ctx *, const struct xr_rb_stats *); static void logging_xr_voip_metrics(struct rtcp_process_ctx *, const struct xr_rb_voip_metrics *); static void logging_finish(struct rtcp_process_ctx *, call_t *, const endpoint_t *, const endpoint_t *, - const struct timeval *); + int64_t); static void logging_destroy(struct rtcp_process_ctx *); // structs for each handler type @@ -718,13 +718,13 @@ next: abort(); } - CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, &mp->tv); + CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, timeval_us(mp->tv)); CAH(destroy); return log_ctx->discard ? 1 : 0; error: - CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, &mp->tv); + CAH(finish, c, &mp->fsin, &mp->sfd->socket.local, timeval_us(mp->tv)); CAH(destroy); rtcp_list_free(q); return -1; @@ -1124,7 +1124,7 @@ static void homer_sdes_list_end(struct rtcp_process_ctx *ctx) { g_string_append_printf(ctx->json, "],"); } static void homer_finish(struct rtcp_process_ctx *ctx, call_t *c, const endpoint_t *src, - const endpoint_t *dst, const struct timeval *tv) + const endpoint_t *dst, int64_t tv) { str_sanitize(ctx->json); g_string_append(ctx->json, " }"); @@ -1252,7 +1252,7 @@ static void logging_xr_voip_metrics(struct rtcp_process_ctx *ctx, const struct x ctx->scratch.xr_vm.jb_abs_max); } static void logging_finish(struct rtcp_process_ctx *ctx, call_t *c, const endpoint_t *src, - const endpoint_t *dst, const struct timeval *tv) + const endpoint_t *dst, int64_t tv) { str_sanitize(ctx->log); if (ctx->log->len > ctx->log_init_len) diff --git a/include/homer.h b/include/homer.h index 5649a7f0f..c6245a1d7 100644 --- a/include/homer.h +++ b/include/homer.h @@ -6,8 +6,7 @@ #define PROTO_RTCP_JSON 0x05 void homer_sender_init(const endpoint_t *, int, int); -int homer_send(GString *, const str *, const endpoint_t *, const endpoint_t *, - const struct timeval *, int); +int homer_send(GString *, const str *, const endpoint_t *, const endpoint_t *, int64_t, int); int has_homer(void); #endif