From 787fed1e563fa7e8973f8746479bfa82e37d5852 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 8 Apr 2016 12:17:27 +0200 Subject: [PATCH 01/37] some simplification of ZMQ output fields --- compact_zmq_format.h | 2 +- monroe_zmq_format.h | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/compact_zmq_format.h b/compact_zmq_format.h index 7f0ad68..0a5a11e 100644 --- a/compact_zmq_format.h +++ b/compact_zmq_format.h @@ -25,7 +25,7 @@ #define ZMQ_KEY_TSTAMP "tstamp" ## these are disabled if -DMONROE is not set -#define ZMQ_KEY_DATAID "" +#define ZMQ_KEY_DATAID "" #define ZMQ_KEY_DATAVERSION "" #define ZMQ_KEY_CID "cid" diff --git a/monroe_zmq_format.h b/monroe_zmq_format.h index 8576ad8..3e01715 100644 --- a/monroe_zmq_format.h +++ b/monroe_zmq_format.h @@ -43,28 +43,28 @@ #define ZMQ_KEY_INTERNAL_IP_ADDR "InternalIPAddress" #define ZMQ_KEY_ISP_NAME "Operator" #define ZMQ_KEY_LAC "LAC" -#define ZMQ_KEY_LTE_RSRP "LTERSRP" -#define ZMQ_KEY_LTE_FREQ "LTEFrequency" -#define ZMQ_KEY_LTE_RSSI "LTERSSI" -#define ZMQ_KEY_LTE_RSRQ "LTERSRQ" -#define ZMQ_KEY_LTE_BAND "LTEBand" -#define ZMQ_KEY_LTE_PCI "LTEPCI" +#define ZMQ_KEY_LTE_RSRP "RSRP" +#define ZMQ_KEY_LTE_FREQ "Frequency" +#define ZMQ_KEY_LTE_RSSI "RSSI" +#define ZMQ_KEY_LTE_RSRQ "RSRQ" +#define ZMQ_KEY_LTE_BAND "Band" +#define ZMQ_KEY_LTE_PCI "PCI" #define ZMQ_KEY_MODE "Mode" #define ZMQ_KEY_NW_MCCMNC "NWMCCMNC" #define ZMQ_KEY_RSCP "RSCP" #define ZMQ_KEY_RSSI "RSSI" #define ZMQ_KEY_SIGNAL "SignalStrength" -#define ZMQ_KEY_INTERFACEID "InterfaceId" +#define ZMQ_KEY_INTERFACEID "ICCID" #define ZMQ_KEY_INTERFACENAME "InterfaceName" -#define ZMQ_KEY_OPERATOR "Operator" +#define ZMQ_KEY_OPERATOR "MCCMNC" #define ZMQ_KEY_MODE "Mode" -#define ZMQ_KEY_SIGNAL "SignalStrength" +#define ZMQ_KEY_SIGNAL "RSSI" #define ZMQ_KEY_ALTITUDE "Altitude" #define ZMQ_KEY_LONGITUDE "Longitude" #define ZMQ_KEY_LATITUDE "Latitude" -#define ZMQ_KEY_NUMSAT "NumberOfSatellites" +#define ZMQ_KEY_NUMSAT "SatelliteCount" #define ZMQ_KEY_NMEA "NMEA" #define ZMQ_KEY_SPEED "Speed" From e9fb22351ee5291d79ec366ea086b8d9f51a2544 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 12 Apr 2016 21:08:45 +0200 Subject: [PATCH 02/37] revert DataId for sensor messages, they are joined into a common table --- metadata_writer_zeromq.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index ba5000c..b95aa10 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -186,15 +186,11 @@ static void md_zeromq_handle_munin(struct md_writer_zeromq *mwz, struct md_munin_event *mge) { char topic[8192]; - char dataid[256]; int retval; json_object_object_foreach(mge->json_blob, key, val) { - retval = snprintf(dataid, sizeof(dataid), "%s.%s", MONROE_ZMQ_DATA_ID_SENSOR, key); - if (retval >= sizeof(dataid)) continue; - - md_zeromq_add_default_fields(val, mge->sequence, mge->tstamp, dataid); + md_zeromq_add_default_fields(val, mge->sequence, mge->tstamp, MONROE_ZMQ_DATA_ID_SENSOR); retval = snprintf(topic, sizeof(topic), "%s.%s %s", MONROE_ZMQ_TOPIC_SENSOR, key, json_object_to_json_string_ext(val, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { From 79462b285a7700863e8f745e53369b229bc4cad5 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 18 Apr 2016 10:37:00 +0200 Subject: [PATCH 03/37] rm double definition of KEY_SIGNAL --- monroe_zmq_format.h | 1 - 1 file changed, 1 deletion(-) diff --git a/monroe_zmq_format.h b/monroe_zmq_format.h index 3e01715..d073f7b 100644 --- a/monroe_zmq_format.h +++ b/monroe_zmq_format.h @@ -53,7 +53,6 @@ #define ZMQ_KEY_NW_MCCMNC "NWMCCMNC" #define ZMQ_KEY_RSCP "RSCP" #define ZMQ_KEY_RSSI "RSSI" -#define ZMQ_KEY_SIGNAL "SignalStrength" #define ZMQ_KEY_INTERFACEID "ICCID" #define ZMQ_KEY_INTERFACENAME "InterfaceName" From 9951fad483ce823dcd5adedaf7ab0ce06c62a295 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 18 Apr 2016 10:37:21 +0200 Subject: [PATCH 04/37] send NaN values as null in GPS speed --- metadata_writer_zeromq.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index b95aa10..8603f85 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -122,13 +122,17 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, json_object_object_add(obj, ZMQ_KEY_LONGITUDE, obj_add); if (mge->speed) { - obj_add = json_object_new_double(mge->speed); + if (isnan(mge->speed)) { + json_object_object_add(obj, ZMQ_KEY_SPEED, NULL); + } else { + obj_add = json_object_new_double(mge->speed); - if (obj_add == NULL) { - json_object_put(obj); - return NULL; + if (obj_add == NULL) { + json_object_put(obj); + return NULL; + } + json_object_object_add(obj, ZMQ_KEY_SPEED, obj_add); } - json_object_object_add(obj, ZMQ_KEY_SPEED, obj_add); } if (mge->altitude) { From d9b325acec26e64de1ac942bdaec4d3d0066bb1f Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Wed, 18 May 2016 10:53:28 +0200 Subject: [PATCH 05/37] retry zmq connection if interface is not available --- metadata_writer_zeromq.c | 38 ++++++++++++++++++++++++++++---------- metadata_writer_zeromq.h | 3 +++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 8603f85..a1fa36a 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -166,6 +166,18 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, return obj; } +static void md_zeromq_send(struct md_writer_zeromq* mwz, const void *buf, size_t len, int flags) { + if (mwz->connected != 1) { + if ((zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) != 0) { + mwz->connected = 0; + } else { + META_PRINT_SYSLOG(mwz->parent, LOG_ERR, "zmq_bind retry SUCCEEDED.\n" ); + mwz->connected = 1; + } + } + zmq_send(mwz->zmq_publisher, buf, len, flags); +} + static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, struct md_gps_event *mge) { @@ -181,7 +193,7 @@ static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, retval = snprintf(topic, sizeof(topic), "%s %s", MONROE_ZMQ_TOPIC_GPS, json_object_to_json_string_ext(gps_obj, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); + md_zeromq_send(mwz, topic, strlen(topic), 0); } json_object_put(gps_obj); } @@ -198,7 +210,7 @@ static void md_zeromq_handle_munin(struct md_writer_zeromq *mwz, retval = snprintf(topic, sizeof(topic), "%s.%s %s", MONROE_ZMQ_TOPIC_SENSOR, key, json_object_to_json_string_ext(val, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); + md_zeromq_send(mwz, topic, strlen(topic), 0); } } } @@ -213,7 +225,7 @@ static void md_zeromq_handle_sysevent(struct md_writer_zeromq *mwz, md_zeromq_add_default_fields(mge->json_blob, mge->sequence, mge->tstamp, MONROE_ZMQ_DATA_ID_SYSEVENT); retval = snprintf(topic, sizeof(topic), "%s %s", MONROE_ZMQ_TOPIC_SYSEVENT, json_object_to_json_string_ext(mge->json_blob, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz->zmq_publisher , topic, strlen(topic), 0); + md_zeromq_send(mwz, topic, strlen(topic), 0); } } @@ -308,7 +320,7 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) - zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); + md_zeromq_send(mwz, topic, strlen(topic), 0); json_object_put(json_obj); } @@ -541,7 +553,7 @@ static void md_zeromq_handle_iface(struct md_writer_zeromq *mwz, return; } - retval = zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); + md_zeromq_send(mwz, topic, strlen(topic), 0); json_object_put(json_obj); } @@ -576,10 +588,14 @@ static uint8_t md_zeromq_config(struct md_writer_zeromq *mwz, { //INET6_ADDRSTRLEN is 46 (max length of ipv6 + trailing 0), 5 is port, 6 is //protocol (we right now only support TCP) - char zmq_addr[INET6_ADDRSTRLEN + 5 + 6]; + int32_t addrlen = INET6_ADDRSTRLEN + 5 + 6; int32_t retval; - snprintf(zmq_addr, sizeof(zmq_addr), "tcp://%s:%d", address, port); + mwz->zmq_addr = calloc(addrlen, 1); + if (mwz->zmq_addr == NULL) + return RETVAL_FAILURE; + + snprintf(mwz->zmq_addr, addrlen, "tcp://%s:%d", address, port); if ((mwz->zmq_context = zmq_ctx_new()) == NULL) return RETVAL_FAILURE; @@ -587,10 +603,12 @@ static uint8_t md_zeromq_config(struct md_writer_zeromq *mwz, if ((mwz->zmq_publisher = zmq_socket(mwz->zmq_context, ZMQ_PUB)) == NULL) return RETVAL_FAILURE; - if ((retval = zmq_bind(mwz->zmq_publisher, zmq_addr)) != 0) { - META_PRINT_SYSLOG(mwz->parent, LOG_ERR, "zmq_bind failed (%d): %s\n", errno, + if ((retval = zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) != 0) { + META_PRINT_SYSLOG(mwz->parent, LOG_ERR, "zmq_bind failed (%d): %s - will try again.\n", errno, zmq_strerror(errno)); - return RETVAL_FAILURE; + mwz->connected = 0; + } else { + mwz->connected = 1; } META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "ZeroMQ init done\n"); diff --git a/metadata_writer_zeromq.h b/metadata_writer_zeromq.h index d9de201..a704bc2 100644 --- a/metadata_writer_zeromq.h +++ b/metadata_writer_zeromq.h @@ -39,6 +39,9 @@ struct md_writer_zeromq { void *zmq_context; void *zmq_publisher; + char *zmq_addr; // to retry connection if zmq_send failed + int connected; }; void md_zeromq_setup(struct md_exporter *mde, struct md_writer_zeromq* mwz); +void md_zeromq_usage(); From 6f3481d77a6594110cc0a28709786875abe60e9c Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 31 May 2016 09:35:06 +0200 Subject: [PATCH 06/37] simplify zmq_send code --- metadata_writer_zeromq.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index a1fa36a..70b63a1 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -168,14 +168,18 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, static void md_zeromq_send(struct md_writer_zeromq* mwz, const void *buf, size_t len, int flags) { if (mwz->connected != 1) { - if ((zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) != 0) { - mwz->connected = 0; - } else { - META_PRINT_SYSLOG(mwz->parent, LOG_ERR, "zmq_bind retry SUCCEEDED.\n" ); + if ((zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) == 0) { mwz->connected = 1; } } - zmq_send(mwz->zmq_publisher, buf, len, flags); + if (mwz->connected == 1) { + if (zmq_send(mwz->zmq_publisher, buf, len, flags) != 0) { + if (errno != EAGAIN ) { + zmq_unbind(mwz->zmq_publisher, mwz->zmq_addr); + mwz->connected = 0; + } + } + } } static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, @@ -589,7 +593,6 @@ static uint8_t md_zeromq_config(struct md_writer_zeromq *mwz, //INET6_ADDRSTRLEN is 46 (max length of ipv6 + trailing 0), 5 is port, 6 is //protocol (we right now only support TCP) int32_t addrlen = INET6_ADDRSTRLEN + 5 + 6; - int32_t retval; mwz->zmq_addr = calloc(addrlen, 1); if (mwz->zmq_addr == NULL) @@ -603,7 +606,7 @@ static uint8_t md_zeromq_config(struct md_writer_zeromq *mwz, if ((mwz->zmq_publisher = zmq_socket(mwz->zmq_context, ZMQ_PUB)) == NULL) return RETVAL_FAILURE; - if ((retval = zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) != 0) { + if ((zmq_bind(mwz->zmq_publisher, mwz->zmq_addr)) != 0) { META_PRINT_SYSLOG(mwz->parent, LOG_ERR, "zmq_bind failed (%d): %s - will try again.\n", errno, zmq_strerror(errno)); mwz->connected = 0; From 71f08a07d3e71da27e773ab44c344ad00b1a78e0 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 21 Jun 2016 11:34:15 +0200 Subject: [PATCH 07/37] add InternalInterface key to zmq export, using a static mapping from OperatorName --- metadata_writer_zeromq.c | 33 +++++++++++++++++++++++++++++++++ monroe_zmq_format.h | 1 + 2 files changed, 34 insertions(+) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 70b63a1..a6feb56 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -329,6 +329,33 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, json_object_put(json_obj); } +static const char* map_operator(const char* operator) { + const char* const lookup[] = { + "Telenor", "op0", + "NetCom", "op1", + "242 14", "op2", + "ICE Nordisk Mobiltelefon AS", "op2", + "Telia Norge", "op2", + + "voda IT", "op0", + "TIM", "op1", + "I WIND", "op2", + + "Orange", "op0", + "Orange Internet Móvil", "op0", + "YOIGO", "op1", + + "Telenor SE", "op0", + "Telia", "op1", + "3 SE", "op2" + }; + int items = 16; + for (int i=0; iisp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, + map_operator(mie->isp_name))) { + json_object_put(obj); + return NULL; + } + if (mie->ip_addr && !md_zeromq_create_json_string(obj, ZMQ_KEY_IP_ADDR, mie->ip_addr)) { json_object_put(obj); diff --git a/monroe_zmq_format.h b/monroe_zmq_format.h index d073f7b..65cacb1 100644 --- a/monroe_zmq_format.h +++ b/monroe_zmq_format.h @@ -36,6 +36,7 @@ #define ZMQ_KEY_ENODEB_ID "ENODEBID" #define ZMQ_KEY_ICCID "ICCID" #define ZMQ_KEY_IF_NAME "InterfaceName" +#define ZMQ_KEY_IIF_NAME "InternalInterface" #define ZMQ_KEY_IMSI "IMSI" #define ZMQ_KEY_IMSI_MCCMNC "IMSIMCCMNC" #define ZMQ_KEY_IMEI "IMEI" From 0012665dc5d9cf0de2541f8733bf2dd465380415 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 21 Jun 2016 14:23:19 +0200 Subject: [PATCH 08/37] skip wwan0 in mapping --- metadata_writer_zeromq.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index a6feb56..749b621 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -380,10 +380,12 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie) return NULL; } - if (mie->isp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, - map_operator(mie->isp_name))) { - json_object_put(obj); - return NULL; + if (mie->ifname && (strncmp(mie->ifname, "usb", 3) == 0)) { + if (mie->isp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, + map_operator(mie->isp_name))) { + json_object_put(obj); + return NULL; + } } if (mie->ip_addr && !md_zeromq_create_json_string(obj, ZMQ_KEY_IP_ADDR, From dc00db01dfe3abe6ca31dcde0530a28598fe82ed Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 7 Jul 2016 14:15:26 +0200 Subject: [PATCH 09/37] add TelenorS to operator table --- metadata_writer_zeromq.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 749b621..995aa46 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -346,10 +346,11 @@ static const char* map_operator(const char* operator) { "YOIGO", "op1", "Telenor SE", "op0", + "TelenorS", "op0", "Telia", "op1", "3 SE", "op2" }; - int items = 16; + int items = 15; for (int i=0; iifname && (strncmp(mie->ifname, "usb", 3) == 0)) { - if (mie->isp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, - map_operator(mie->isp_name))) { - json_object_put(obj); - return NULL; + const char *iifname=map_operator(mie->isp_name); + if (iifname != NULL) { + if (mie->isp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, + map_operator(mie->isp_name))) { + json_object_put(obj); + return NULL; + } } } From 563ce65d9062b58bf47e89a990e9d1cffd8069e3 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 18 Jul 2016 23:56:30 +0200 Subject: [PATCH 10/37] add Movistar --- metadata_writer_zeromq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 995aa46..becccc6 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -344,13 +344,14 @@ static const char* map_operator(const char* operator) { "Orange", "op0", "Orange Internet Móvil", "op0", "YOIGO", "op1", + "Movistar", "op2", "Telenor SE", "op0", "TelenorS", "op0", "Telia", "op1", "3 SE", "op2" }; - int items = 15; + int items = 16; for (int i=0; i Date: Mon, 18 Jul 2016 23:57:14 +0200 Subject: [PATCH 11/37] typo --- metadata_writer_zeromq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index becccc6..618a084 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -344,7 +344,7 @@ static const char* map_operator(const char* operator) { "Orange", "op0", "Orange Internet Móvil", "op0", "YOIGO", "op1", - "Movistar", "op2", + "Movistar", "op1", "Telenor SE", "op0", "TelenorS", "op0", From dcaf22e7fbeed7aff1c840a4ade1e7f15730e6d3 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 21 Jul 2016 13:15:39 +0200 Subject: [PATCH 12/37] add Weblink --- metadata_writer_zeromq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 618a084..1200e25 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -348,10 +348,11 @@ static const char* map_operator(const char* operator) { "Telenor SE", "op0", "TelenorS", "op0", + "Weblink", "op0", "Telia", "op1", "3 SE", "op2" }; - int items = 16; + int items = 17; for (int i=0; i Date: Tue, 26 Jul 2016 10:37:44 +0200 Subject: [PATCH 13/37] refactoring, log message when dropping messages --- metadata_writer_zeromq.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 1200e25..4ff074b 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -174,9 +174,12 @@ static void md_zeromq_send(struct md_writer_zeromq* mwz, const void *buf, size_t } if (mwz->connected == 1) { if (zmq_send(mwz->zmq_publisher, buf, len, flags) != 0) { + META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "zmq_send returned errno %s (dropped message of len %zu)\n", + zmq_strerror(errno), len); + META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "Message: %.128s(...)\n", (char *)buf); if (errno != EAGAIN ) { - zmq_unbind(mwz->zmq_publisher, mwz->zmq_addr); - mwz->connected = 0; + zmq_unbind(mwz->zmq_publisher, mwz->zmq_addr); + mwz->connected = 0; } } } @@ -385,12 +388,9 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie) if (mie->ifname && (strncmp(mie->ifname, "usb", 3) == 0)) { const char *iifname=map_operator(mie->isp_name); - if (iifname != NULL) { - if (mie->isp_name && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, - map_operator(mie->isp_name))) { - json_object_put(obj); - return NULL; - } + if (iifname && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, iifname)) { + json_object_put(obj); + return NULL; } } From e253e8240d868428b00639bccc8df4ec08175e7f Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 26 Jul 2016 12:20:04 +0200 Subject: [PATCH 14/37] reduce munin message interval --- metadata_input_munin.c | 2 +- metadata_writer_zeromq.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/metadata_input_munin.c b/metadata_input_munin.c index 59eba1e..cc4bf29 100644 --- a/metadata_input_munin.c +++ b/metadata_input_munin.c @@ -17,7 +17,7 @@ #include "backend_event_loop.h" /* polling interval in seconds */ -#define MUNIN_POLLING_INTERVAL 5 +#define MUNIN_POLLING_INTERVAL 60 /* TODO - handle socket disconnect/reconnect diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 4ff074b..65d5de6 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -174,9 +174,9 @@ static void md_zeromq_send(struct md_writer_zeromq* mwz, const void *buf, size_t } if (mwz->connected == 1) { if (zmq_send(mwz->zmq_publisher, buf, len, flags) != 0) { - META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "zmq_send returned errno %s (dropped message of len %zu)\n", - zmq_strerror(errno), len); - META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "Message: %.128s(...)\n", (char *)buf); + //META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "zmq_send returned errno %s (dropped message of len %zu)\n", + // zmq_strerror(errno), len); + //META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "Message: %.128s(...)\n", (char *)buf); if (errno != EAGAIN ) { zmq_unbind(mwz->zmq_publisher, mwz->zmq_addr); mwz->connected = 0; From 1ba47e3c1c8a5e5e4979a6d280c3534c45cb41c0 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 22 Aug 2016 12:04:01 +0200 Subject: [PATCH 15/37] add voda ES to the operator list --- metadata_writer_zeromq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 65d5de6..c6690c8 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -348,6 +348,7 @@ static const char* map_operator(const char* operator) { "Orange Internet Móvil", "op0", "YOIGO", "op1", "Movistar", "op1", + "voda ES", "op2", "Telenor SE", "op0", "TelenorS", "op0", @@ -355,7 +356,7 @@ static const char* map_operator(const char* operator) { "Telia", "op1", "3 SE", "op2" }; - int items = 17; + int items = 18; for (int i=0; i Date: Thu, 22 Sep 2016 22:20:37 +0200 Subject: [PATCH 16/37] add NITOS isp as op0 --- metadata_writer_zeromq.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index c6690c8..6d3a4c8 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -354,9 +354,11 @@ static const char* map_operator(const char* operator) { "TelenorS", "op0", "Weblink", "op0", "Telia", "op1", - "3 SE", "op2" + "3 SE", "op2", + + "460 99", "op0" }; - int items = 18; + int items = 19; for (int i=0; i Date: Fri, 21 Oct 2016 09:45:34 +0200 Subject: [PATCH 17/37] +SWE to provider list --- metadata_writer_zeromq.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 6d3a4c8..5e7254a 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -70,7 +70,7 @@ static json_object *md_zeromq_create_json_string(json_object *obj, if (!obj_add) return NULL; - + json_object_object_add(obj, key, obj_add); return obj; } @@ -82,7 +82,7 @@ static json_object *md_zeromq_create_json_int(json_object *obj, const char *key, if (!obj_add) return NULL; - + json_object_object_add(obj, key, obj_add); return obj; } @@ -94,7 +94,7 @@ static json_object *md_zeromq_create_json_int64(json_object *obj, if (!obj_add) return NULL; - + json_object_object_add(obj, key, obj_add); return obj; } @@ -106,7 +106,7 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, if (!(obj = json_object_new_object())) return NULL; - + md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, MONROE_ZMQ_DATA_ID_GPS); if (!(obj_add = json_object_new_double(mge->latitude))) { @@ -162,7 +162,7 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, } json_object_object_add(obj, ZMQ_KEY_NMEA, obj_add); } - + return obj; } @@ -174,7 +174,7 @@ static void md_zeromq_send(struct md_writer_zeromq* mwz, const void *buf, size_t } if (mwz->connected == 1) { if (zmq_send(mwz->zmq_publisher, buf, len, flags) != 0) { - //META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "zmq_send returned errno %s (dropped message of len %zu)\n", + //META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "zmq_send returned errno %s (dropped message of len %zu)\n", // zmq_strerror(errno), len); //META_PRINT_SYSLOG(mwz->parent, LOG_INFO, "Message: %.128s(...)\n", (char *)buf); if (errno != EAGAIN ) { @@ -297,7 +297,7 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, event_str_cpy[event_str_len] = '\0'; mode = metadata_utils_get_csv_pos(event_str_cpy, 2); } - + json_obj = md_zeromq_create_json_modem_default(mwz, mce); if (!(obj_add = json_object_new_int(mode))) { @@ -355,12 +355,13 @@ static const char* map_operator(const char* operator) { "Weblink", "op0", "Telia", "op1", "3 SE", "op2", + "SWE", "op2", "460 99", "op0" }; - int items = 19; - for (int i=0; ievent_param) { case IFACE_EVENT_DEV_STATE: - retval = snprintf(topic, sizeof(topic), "%s.%s.%s %s", + retval = snprintf(topic, sizeof(topic), "%s.%s.%s %s", MONROE_ZMQ_TOPIC_MODEM, mie->iccid, MONROE_ZMQ_TOPIC_MODEM_STATE, @@ -639,7 +640,7 @@ static uint8_t md_zeromq_config(struct md_writer_zeromq *mwz, int32_t addrlen = INET6_ADDRSTRLEN + 5 + 6; mwz->zmq_addr = calloc(addrlen, 1); - if (mwz->zmq_addr == NULL) + if (mwz->zmq_addr == NULL) return RETVAL_FAILURE; snprintf(mwz->zmq_addr, addrlen, "tcp://%s:%d", address, port); From 2e587be30d7484d1b1819c7455fd6bb0597f1450 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Sat, 19 Nov 2016 19:07:26 +0200 Subject: [PATCH 18/37] add C-OTE --- metadata_writer_zeromq.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 5e7254a..86a6daa 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -357,9 +357,10 @@ static const char* map_operator(const char* operator) { "3 SE", "op2", "SWE", "op2", - "460 99", "op0" + "460 99", "op0", + "C-OTE", "op0" }; - int items = 20; + int items = 21; for (int i=0; i Date: Tue, 13 Dec 2016 10:20:58 +0400 Subject: [PATCH 19/37] map by imei, not operayor --- metadata_writer_zeromq.c | 38 ++------------------------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 86a6daa..740d257 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -332,40 +332,6 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, json_object_put(json_obj); } -static const char* map_operator(const char* operator) { - const char* const lookup[] = { - "Telenor", "op0", - "NetCom", "op1", - "242 14", "op2", - "ICE Nordisk Mobiltelefon AS", "op2", - "Telia Norge", "op2", - - "voda IT", "op0", - "TIM", "op1", - "I WIND", "op2", - - "Orange", "op0", - "Orange Internet Móvil", "op0", - "YOIGO", "op1", - "Movistar", "op1", - "voda ES", "op2", - - "Telenor SE", "op0", - "TelenorS", "op0", - "Weblink", "op0", - "Telia", "op1", - "3 SE", "op2", - "SWE", "op2", - - "460 99", "op0", - "C-OTE", "op0" - }; - int items = 21; - for (int i=0; iifname && (strncmp(mie->ifname, "usb", 3) == 0)) { - const char *iifname=map_operator(mie->isp_name); + if (mie->ifname && mie->imei && (strncmp(mie->ifname, "usb", 3) == 0)) { + const char *iifname=map_imei(mie->imei); if (iifname && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, iifname)) { json_object_put(obj); return NULL; From fb0611ac9aa9dc5de2d77606c2b83cd4a656313a Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 13 Dec 2016 09:12:22 +0100 Subject: [PATCH 20/37] implement map_imei --- metadata_writer_zeromq.c | 48 +++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 740d257..14afedf 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -333,7 +333,39 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, } -static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie) +char imei_mapping [10][30]; +int maplen=0; +static int map_imei(const char* imei, struct md_writer_zeromq *mwz) { + for (int i=0;iparent->logfile, "COMPARING '%s' and '%s' at index %i\n", imei, imei_mapping[i], i); + if (strcmp(imei_mapping[i], imei)==0) { + return i; + } + } + FILE *fp = fopen("/tmp/interfaces", "r"); + if (fp==NULL) return -1; + char* line = NULL; + int nr=0; + int match=-1; + size_t len = 0; + ssize_t read; + while ((read = getline(&line, &len, fp)) != -1) { + if(len>29) len=29; + strncpy(imei_mapping[nr], line, len); + imei_mapping[nr][strlen(imei_mapping[nr])-1]='\0'; + + META_PRINT(mwz->parent->logfile, "COMPARING '%s' and '%s' at index %i.\n", imei, imei_mapping[nr], nr); + + if (strcmp(imei_mapping[nr], imei)==0) match=nr; + if (++nr==10) break; + } + maplen=nr; + fclose(fp); + if (line) free(line); + return match; +} + +static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie, struct md_writer_zeromq *mwz) { struct json_object *obj = NULL; @@ -358,10 +390,14 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie) } if (mie->ifname && mie->imei && (strncmp(mie->ifname, "usb", 3) == 0)) { - const char *iifname=map_imei(mie->imei); - if (iifname && !md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, iifname)) { - json_object_put(obj); - return NULL; + int iifindex=map_imei(mie->imei, mwz); + if (iifindex > -1) { + char iifname[4]="opX"; + iifname[2]=iifindex + '0'; + if (!md_zeromq_create_json_string(obj, ZMQ_KEY_IIF_NAME, iifname)) { + json_object_put(obj); + return NULL; + } } } @@ -486,7 +522,7 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie) static void md_zeromq_handle_iface(struct md_writer_zeromq *mwz, struct md_iface_event *mie) { - struct json_object *json_obj = md_zeromq_create_iface_json(mie); + struct json_object *json_obj = md_zeromq_create_iface_json(mie, mwz); char topic[8192] = {0}; int retval = 0; From 637b2aa43503226ad006236b07a265c028966c98 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Tue, 13 Dec 2016 09:14:48 +0100 Subject: [PATCH 21/37] rm debug message --- metadata_writer_zeromq.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 14afedf..926fa9f 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -337,7 +337,6 @@ char imei_mapping [10][30]; int maplen=0; static int map_imei(const char* imei, struct md_writer_zeromq *mwz) { for (int i=0;iparent->logfile, "COMPARING '%s' and '%s' at index %i\n", imei, imei_mapping[i], i); if (strcmp(imei_mapping[i], imei)==0) { return i; } @@ -354,8 +353,6 @@ static int map_imei(const char* imei, struct md_writer_zeromq *mwz) { strncpy(imei_mapping[nr], line, len); imei_mapping[nr][strlen(imei_mapping[nr])-1]='\0'; - META_PRINT(mwz->parent->logfile, "COMPARING '%s' and '%s' at index %i.\n", imei, imei_mapping[nr], nr); - if (strcmp(imei_mapping[nr], imei)==0) match=nr; if (++nr==10) break; } From e9f02042af6275a6c07e29f56b5d5d194e1cc152 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 23 Dec 2016 08:25:54 +0400 Subject: [PATCH 22/37] split gps topic --- metadata_writer_zeromq.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 86a6daa..826cdfc 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -107,7 +107,16 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, if (!(obj = json_object_new_object())) return NULL; - md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, MONROE_ZMQ_DATA_ID_GPS); + char topic[256]; + topic=MONROE_ZMQ_DATA_ID_GPS; + if (mge->nmea_raw) { + if (strncmp(mge->nmea_raw, "GPGGA", 5)==0) { + topic=strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPGGA")); + } else if (strncmp(mge->nmea_raw, "GPRMC", 5)==0) { + topic=strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPRMC")); + } + } + md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, topic); if (!(obj_add = json_object_new_double(mge->latitude))) { json_object_put(obj); From 0862eae61d02e794db5d50e4bacf35e0bbd066b4 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 23 Dec 2016 09:40:38 +0100 Subject: [PATCH 23/37] rm overassignment --- metadata_writer_zeromq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 826cdfc..88c341e 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -108,13 +108,13 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, return NULL; char topic[256]; - topic=MONROE_ZMQ_DATA_ID_GPS; + strcat(topic, MONROE_ZMQ_DATA_ID_GPS); if (mge->nmea_raw) { if (strncmp(mge->nmea_raw, "GPGGA", 5)==0) { - topic=strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPGGA")); + strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPGGA"); } else if (strncmp(mge->nmea_raw, "GPRMC", 5)==0) { - topic=strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPRMC")); - } + strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPRMC"); + } } md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, topic); From 141c1b9dbbd98ef4966a1ea26780a0ca97a13687 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 23 Dec 2016 09:42:44 +0100 Subject: [PATCH 24/37] switch dest --- metadata_writer_zeromq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 88c341e..097009e 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -111,9 +111,9 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, strcat(topic, MONROE_ZMQ_DATA_ID_GPS); if (mge->nmea_raw) { if (strncmp(mge->nmea_raw, "GPGGA", 5)==0) { - strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPGGA"); + strcat(topic, ".GPGGA"); } else if (strncmp(mge->nmea_raw, "GPRMC", 5)==0) { - strcat(MONROE_ZMQ_DATA_ID_GPS, ".GPRMC"); + strcat(topic, ".GPRMC"); } } md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, topic); From 5821a4b41842ce06976ff3da5ecbcc7bb6eee038 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Wed, 25 Jan 2017 08:55:06 +0100 Subject: [PATCH 25/37] report InternalInterface for all modems with imei --- metadata_writer_zeromq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 926fa9f..2133b07 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -386,7 +386,7 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie, stru return NULL; } - if (mie->ifname && mie->imei && (strncmp(mie->ifname, "usb", 3) == 0)) { + if (mie->ifname && mie->imei) { int iifindex=map_imei(mie->imei, mwz); if (iifindex > -1) { char iifname[4]="opX"; From 9c52e8dfee2fdee1e969f3061f8839f53c11739f Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 2 Mar 2017 00:18:21 +0100 Subject: [PATCH 26/37] +export timestamps with us resolution --- metadata_writer_zeromq.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 7b05566..224448f 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -30,6 +30,7 @@ #include #include JSON_LOC #include +#include #include #include #include @@ -43,13 +44,22 @@ #include "metadata_utils.h" #include "metadata_exporter_log.h" +static int64_t override_tstamp() { + /* return a current export timestamp with us precision, as the + event timestamp with sec resolution is not deemed useful. */ + struct timeval tv; + gettimeofday(&tv, NULL); + + return 1000000 * tv.tv_sec + tv.tv_usec; +} + static void md_zeromq_add_default_fields(json_object* obj, int seq, int64_t tstamp, char* dataid) { json_object* obj_add = NULL; if (!(obj_add = json_object_new_int(seq))) return; json_object_object_add(obj, ZMQ_KEY_SEQ, obj_add); - if (!(obj_add = json_object_new_int64(tstamp))) return; + if (!(obj_add = json_object_new_int64(override_tstamp()))) return; json_object_object_add(obj, ZMQ_KEY_TSTAMP, obj_add); #ifdef MONROE @@ -381,7 +391,7 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie, stru md_zeromq_add_default_fields(obj, mie->sequence, mie->tstamp, MONROE_ZMQ_DATA_ID_MODEM); if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, mie->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, mie->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_string(obj, ZMQ_KEY_ICCID, mie->iccid) || !md_zeromq_create_json_string(obj, ZMQ_KEY_IMSI, mie->imsi) || !md_zeromq_create_json_string(obj, ZMQ_KEY_IMEI, mie->imei)) { @@ -643,7 +653,7 @@ static json_object *md_zeromq_handle_radio_cell_loc_gerant( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, event->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int64(obj, ZMQ_KEY_RADIO_CELL_ID, event->cell_id) || !md_zeromq_create_json_string(obj, ZMQ_KEY_RADIO_PLMN, event->plmn) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_LAC, event->lac) || @@ -698,7 +708,7 @@ static json_object *md_zeromq_handle_radio_cell_resel_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, event->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_SERVING_BCCH_ARFCN, event->serving_bcch_arfcn) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_SERVING_PBCCH_ARFCN, event->serving_pbcch_arfcn) || !md_zeromq_create_json_int64(obj, ZMQ_KEY_RADIO_SERVING_C1, event->serving_c1) || @@ -756,7 +766,7 @@ static json_object *md_zeromq_handle_radio_cipher_mode_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, event->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CIPHERING_STATE, event->ciphering_state) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CIPHERING_ALGORITHM, event->ciphering_algorithm)) { json_object_put(obj); @@ -794,7 +804,7 @@ static json_object *md_zeromq_handle_cell_reset_param_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, event->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CELL_RESELECT_HYSTERESIS, event->cell_reselect_hysteresis) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_MS_TXPWR_MAX_CCH, event->ms_txpwr_max_cch) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_RXLEV_ACCESS_MIN, event->rxlev_access_min) || @@ -842,7 +852,7 @@ static json_object *md_zeromq_handle_rr_channel_conf_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, event->tstamp) || + !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_NUM_DED_CHANS, event->num_ded_chans) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_DTX_INDICATOR, event->dtx_indicator) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_POWER_LEVEL, event->power_level) || From ab10175e9dea67dafacb2422952c62c33a107b83 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 2 Mar 2017 08:07:24 +0100 Subject: [PATCH 27/37] increase data version, change timestamp data type from int64 to double Number --- metadata_writer_zeromq.c | 30 +++++++++++++++++++++--------- monroe_zmq_format.h | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 224448f..16d464e 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -44,13 +44,13 @@ #include "metadata_utils.h" #include "metadata_exporter_log.h" -static int64_t override_tstamp() { +static double override_tstamp() { /* return a current export timestamp with us precision, as the event timestamp with sec resolution is not deemed useful. */ struct timeval tv; gettimeofday(&tv, NULL); - return 1000000 * tv.tv_sec + tv.tv_usec; + return (double) tv.tv_sec + (double) (tv.tv_usec / 1000000.0); } static void md_zeromq_add_default_fields(json_object* obj, int seq, int64_t tstamp, char* dataid) { @@ -59,7 +59,7 @@ static void md_zeromq_add_default_fields(json_object* obj, int seq, int64_t tsta if (!(obj_add = json_object_new_int(seq))) return; json_object_object_add(obj, ZMQ_KEY_SEQ, obj_add); - if (!(obj_add = json_object_new_int64(override_tstamp()))) return; + if (!(obj_add = json_object_new_double(override_tstamp()))) return; json_object_object_add(obj, ZMQ_KEY_TSTAMP, obj_add); #ifdef MONROE @@ -109,6 +109,18 @@ static json_object *md_zeromq_create_json_int64(json_object *obj, return obj; } +static json_object *md_zeromq_create_json_double(json_object *obj, + const char *key, double value) +{ + struct json_object *obj_add = json_object_new_double(value); + + if (!obj_add) + return NULL; + + json_object_object_add(obj, key, obj_add); + return obj; +} + static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, struct md_gps_event *mge) { @@ -391,7 +403,7 @@ static json_object *md_zeromq_create_iface_json(struct md_iface_event *mie, stru md_zeromq_add_default_fields(obj, mie->sequence, mie->tstamp, MONROE_ZMQ_DATA_ID_MODEM); if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, mie->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_string(obj, ZMQ_KEY_ICCID, mie->iccid) || !md_zeromq_create_json_string(obj, ZMQ_KEY_IMSI, mie->imsi) || !md_zeromq_create_json_string(obj, ZMQ_KEY_IMEI, mie->imei)) { @@ -653,7 +665,7 @@ static json_object *md_zeromq_handle_radio_cell_loc_gerant( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int64(obj, ZMQ_KEY_RADIO_CELL_ID, event->cell_id) || !md_zeromq_create_json_string(obj, ZMQ_KEY_RADIO_PLMN, event->plmn) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_LAC, event->lac) || @@ -708,7 +720,7 @@ static json_object *md_zeromq_handle_radio_cell_resel_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_SERVING_BCCH_ARFCN, event->serving_bcch_arfcn) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_SERVING_PBCCH_ARFCN, event->serving_pbcch_arfcn) || !md_zeromq_create_json_int64(obj, ZMQ_KEY_RADIO_SERVING_C1, event->serving_c1) || @@ -766,7 +778,7 @@ static json_object *md_zeromq_handle_radio_cipher_mode_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CIPHERING_STATE, event->ciphering_state) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CIPHERING_ALGORITHM, event->ciphering_algorithm)) { json_object_put(obj); @@ -804,7 +816,7 @@ static json_object *md_zeromq_handle_cell_reset_param_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_CELL_RESELECT_HYSTERESIS, event->cell_reselect_hysteresis) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_MS_TXPWR_MAX_CCH, event->ms_txpwr_max_cch) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_RXLEV_ACCESS_MIN, event->rxlev_access_min) || @@ -852,7 +864,7 @@ static json_object *md_zeromq_handle_rr_channel_conf_event( } if (!md_zeromq_create_json_int(obj, ZMQ_KEY_SEQ, event->sequence) || - !md_zeromq_create_json_int64(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || + !md_zeromq_create_json_double(obj, ZMQ_KEY_TSTAMP, override_tstamp()) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_NUM_DED_CHANS, event->num_ded_chans) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_DTX_INDICATOR, event->dtx_indicator) || !md_zeromq_create_json_int(obj, ZMQ_KEY_RADIO_POWER_LEVEL, event->power_level) || diff --git a/monroe_zmq_format.h b/monroe_zmq_format.h index 22a804c..a98c6af 100644 --- a/monroe_zmq_format.h +++ b/monroe_zmq_format.h @@ -1,6 +1,6 @@ #pragma once -#define MONROE_ZMQ_DATA_VERSION 1 +#define MONROE_ZMQ_DATA_VERSION 2 #define MONROE_ZMQ_DATA_ID_SYSEVENT "MONROE.META.NODE.EVENT" #define MONROE_ZMQ_DATA_ID_SENSOR "MONROE.META.NODE.SENSOR" #define MONROE_ZMQ_DATA_ID_MODEM "MONROE.META.DEVICE.MODEM" From 03bb615569447e1ebc387e8de1eb57dfd839fdbb Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 2 Mar 2017 22:20:37 +0100 Subject: [PATCH 28/37] init empty string --- metadata_writer_zeromq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 16d464e..94c636e 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -129,7 +129,7 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, if (!(obj = json_object_new_object())) return NULL; - char topic[256]; + char topic[256] = ""; strcat(topic, MONROE_ZMQ_DATA_ID_GPS); if (mge->nmea_raw) { if (strncmp(mge->nmea_raw, "GPGGA", 5)==0) { From 8207fc3710748d5ef56a811c8647312f26dbfd8f Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Thu, 2 Mar 2017 22:27:58 +0100 Subject: [PATCH 29/37] fix gps topic detection --- metadata_writer_zeromq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 94c636e..f81cb42 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -132,9 +132,9 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, char topic[256] = ""; strcat(topic, MONROE_ZMQ_DATA_ID_GPS); if (mge->nmea_raw) { - if (strncmp(mge->nmea_raw, "GPGGA", 5)==0) { + if (strncmp(mge->nmea_raw, "$GPGGA", 6)==0) { strcat(topic, ".GPGGA"); - } else if (strncmp(mge->nmea_raw, "GPRMC", 5)==0) { + } else if (strncmp(mge->nmea_raw, "$GPRMC", 6)==0) { strcat(topic, ".GPRMC"); } } From 1e2695f26fbb8ce8043c30ccdb7466f50fc4883c Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 3 Mar 2017 21:21:37 +1300 Subject: [PATCH 30/37] [fix] change topic, not dataid --- metadata_writer_zeromq.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index f81cb42..7da9c9a 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -129,16 +129,7 @@ static json_object* md_zeromq_create_json_gps(struct md_writer_zeromq *mwz, if (!(obj = json_object_new_object())) return NULL; - char topic[256] = ""; - strcat(topic, MONROE_ZMQ_DATA_ID_GPS); - if (mge->nmea_raw) { - if (strncmp(mge->nmea_raw, "$GPGGA", 6)==0) { - strcat(topic, ".GPGGA"); - } else if (strncmp(mge->nmea_raw, "$GPRMC", 6)==0) { - strcat(topic, ".GPRMC"); - } - } - md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, topic); + md_zeromq_add_default_fields(obj, mge->sequence, mge->tstamp_tv.tv_sec, MONROE_ZMQ_DATA_ID_GPS); if (!(obj_add = json_object_new_double(mge->latitude))) { json_object_put(obj); @@ -228,7 +219,16 @@ static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, return; } - retval = snprintf(topic, sizeof(topic), "%s %s", MONROE_ZMQ_TOPIC_GPS, json_object_to_json_string_ext(gps_obj, JSON_C_TO_STRING_PLAIN)); + char suffix[10]=""; + if (mge->nmea_raw) { + if (strncmp(mge->nmea_raw, "$GPGGA", 6)==0) { + suffix = ".GPGGA"; + } else if (strncmp(mge->nmea_raw, "$GPRMC", 6)==0) { + suffix = ".GPRMC"; + } + } + + retval = snprintf(topic, sizeof(topic), "%s%s %s", MONROE_ZMQ_TOPIC_GPS, suffix, json_object_to_json_string_ext(gps_obj, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { md_zeromq_send(mwz, topic, strlen(topic), 0); From 2ae893fc28bf46f1725303d5b86c11d2dd0402be Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Fri, 3 Mar 2017 09:43:36 +0100 Subject: [PATCH 31/37] fix char type --- metadata_writer_zeromq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 7da9c9a..2943159 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -219,7 +219,7 @@ static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, return; } - char suffix[10]=""; + char* suffix=""; if (mge->nmea_raw) { if (strncmp(mge->nmea_raw, "$GPGGA", 6)==0) { suffix = ".GPGGA"; From 2d64d6e83873dcacebfdf1d1962e31041d6fb829 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 12 Jun 2017 14:51:50 +0200 Subject: [PATCH 32/37] use add_default_fields in all message types --- metadata_writer_zeromq.c | 87 +++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 60bb051..e256a5a 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -108,10 +108,20 @@ static json_object *md_zeromq_create_json_double(json_object *obj, static uint8_t md_zeromq_add_default_fields(const struct md_writer_zeromq *mwz, struct json_object* obj, int seq, int64_t tstamp, const char* dataid) { if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - seq) || + seq)) { + return 0; + } + if ((mwz->metadata_project == MD_PROJECT_NNE) && !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - tstamp) || - (mwz->keys[MD_ZMQ_KEY_DATAVERSION] && + tstamp)) { + return 0; + } else + if ((mwz->metadata_project == MD_PROJECT_MNR) && + !md_zeromq_create_json_double(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], + override_tstamp())) { + return 0; + } + if ((mwz->keys[MD_ZMQ_KEY_DATAVERSION] && !md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_DATAVERSION], MD_ZMQ_DATA_VERSION)) || (mwz->keys[MD_ZMQ_KEY_DATAID] && @@ -201,8 +211,7 @@ static void md_zeromq_handle_munin(struct md_writer_zeromq *mwz, mwz->topics[MD_ZMQ_TOPIC_SENSOR], key); if (retval >= sizeof(dataid)) continue; - md_zeromq_add_default_fields(mwz, val, mge->sequence, mge->tstamp, - dataid); + md_zeromq_add_default_fields(mwz, val, mge->sequence, mge->tstamp, dataid); retval = snprintf(topic, sizeof(topic), "%s.%s %s", mwz->topics[MD_ZMQ_TOPIC_SENSOR], @@ -221,7 +230,7 @@ static void md_zeromq_handle_sysevent(struct md_writer_zeromq *mwz, int retval; md_zeromq_add_default_fields(mwz, mge->json_blob, mge->sequence, - mge->tstamp, mwz->topics[MD_ZMQ_TOPIC_SYSEVENT]); + mge->tstamp, mwz->topics[MD_ZMQ_TOPIC_SYSEVENT]); retval = snprintf(topic, sizeof(topic), "%s %s", mwz->topics[MD_ZMQ_TOPIC_SYSEVENT], @@ -378,11 +387,7 @@ static json_object *md_zeromq_create_iface_json(const struct md_writer_zeromq *m } } - if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - mie->sequence) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - mie->tstamp) || - !md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_ICCID], + if (!md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_ICCID], mie->iccid) || !md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_IMSI], mie->imsi) || @@ -549,6 +554,12 @@ static json_object *md_zeromq_handle_radio_cell_loc_gerant( if (!(obj = json_object_new_object())) return NULL; + if (!md_zeromq_add_default_fields(mwz, obj, event->sequence, + event->tstamp, mwz->topics[MD_ZMQ_TOPIC_RADIO_CELL_LOCATION_GERAN])) { + json_object_put(obj); + return NULL; + } + if (event->iccid && !md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_ICCID], event->iccid)) { @@ -570,11 +581,7 @@ static json_object *md_zeromq_handle_radio_cell_loc_gerant( return NULL; } - if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - event->sequence) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - override_tstamp()) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_RADIO_CELL_ID], + if (!md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_RADIO_CELL_ID], event->cell_id) || !md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_RADIO_PLMN], event->plmn) || @@ -640,11 +647,13 @@ static json_object *md_zeromq_handle_radio_cell_resel_event( return NULL; } - if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - event->sequence) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - event->tstamp) || - !md_zeromq_create_json_int(obj, + if (!md_zeromq_add_default_fields(mwz, obj, event->sequence, + event->tstamp, mwz->topics[MD_ZMQ_TOPIC_RADIO_GRR_CELL_RESEL])) { + json_object_put(obj); + return NULL; + } + + if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_RADIO_SERVING_BCCH_ARFCN], event->serving_bcch_arfcn) || !md_zeromq_create_json_int(obj, @@ -726,11 +735,13 @@ static json_object *md_zeromq_handle_radio_cipher_mode_event( return NULL; } - if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - event->sequence) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - event->tstamp) || - !md_zeromq_create_json_int(obj, + if (!md_zeromq_add_default_fields(mwz, obj, event->sequence, + event->tstamp, mwz->topics[MD_ZMQ_TOPIC_RADIO_GSM_RR_CIPHER_MODE])) { + json_object_put(obj); + return NULL; + } + + if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_RADIO_CIPHERING_STATE], event->ciphering_state) || !md_zeromq_create_json_int(obj, @@ -771,13 +782,15 @@ static json_object *md_zeromq_handle_cell_reset_param_event( event->imei)) { json_object_put(obj); return NULL; + } + + if (!md_zeromq_add_default_fields(mwz, obj, event->sequence, + event->tstamp, mwz->topics[MD_ZMQ_TOPIC_RADIO_GSM_RR_CELL_SEL_RESEL_PARAM])) { + json_object_put(obj); + return NULL; } - if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_SEQ], - event->sequence) || - !md_zeromq_create_json_int64(obj, mwz->keys[MD_ZMQ_KEY_TSTAMP], - event->tstamp) || - !md_zeromq_create_json_int(obj, + if (!md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_RADIO_CELL_RESELECT_HYSTERESIS], event->cell_reselect_hysteresis) || !md_zeromq_create_json_int(obj, @@ -850,13 +863,13 @@ static json_object *md_zeromq_handle_rr_channel_conf_event( return NULL; } + if (!md_zeromq_add_default_fields(mwz, obj, event->sequence, + event->tstamp, mwz->topics[MD_ZMQ_TOPIC_RADIO_GSM_RR_CHANNEL_CONF])) { + json_object_put(obj); + return NULL; + } + if (!md_zeromq_create_json_int(obj, - mwz->keys[MD_ZMQ_KEY_SEQ], - event->sequence) || - !md_zeromq_create_json_int64(obj, - mwz->keys[MD_ZMQ_KEY_TSTAMP], - event->tstamp) || - !md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_RADIO_NUM_DED_CHANS], event->num_ded_chans) || !md_zeromq_create_json_int(obj, From 212a338c323e2ea67f08c0d701645d5a1d4175f4 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 12 Jun 2017 14:54:59 +0200 Subject: [PATCH 33/37] restrict imei mapping to MNR project --- metadata_writer_zeromq.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index e256a5a..473c6d3 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -375,14 +375,17 @@ static json_object *md_zeromq_create_iface_json(const struct md_writer_zeromq *m return NULL; } - if (mie->ifname && mie->imei) { - int iifindex=map_imei(mie->imei, mwz); - if (iifindex > -1) { - char iifname[4]="opX"; - iifname[2]=iifindex + '0'; - if (!md_zeromq_create_json_string(obj, mwz->keys[MD_ZMQ_KEY_MONROE_IIF_NAME], iifname)) { - json_object_put(obj); - return NULL; + if (mwz->metadata_project == MD_PROJECT_MNR) { + if (mie->ifname && mie->imei) { + int iifindex=map_imei(mie->imei, mwz); + if (iifindex > -1) { + char iifname[4]="opX"; + iifname[2]=iifindex + '0'; + if (!md_zeromq_create_json_string(obj, + mwz->keys[MD_ZMQ_KEY_MONROE_IIF_NAME], iifname)) { + json_object_put(obj); + return NULL; + } } } } From 25d862bbd1b3fd5da4b3d1af727fb3b032592957 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 12 Jun 2017 15:17:57 +0200 Subject: [PATCH 34/37] restore zmq_send call --- metadata_writer_zeromq.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 473c6d3..9814c38 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -193,7 +193,7 @@ static void md_zeromq_handle_gps(struct md_writer_zeromq *mwz, json_object_to_json_string_ext(gps_obj, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz, topic, strlen(topic), 0); + zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); } json_object_put(gps_obj); } @@ -217,7 +217,7 @@ static void md_zeromq_handle_munin(struct md_writer_zeromq *mwz, mwz->topics[MD_ZMQ_TOPIC_SENSOR], key, json_object_to_json_string_ext(val, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz, topic, strlen(topic), 0); + zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); } } } @@ -237,7 +237,7 @@ static void md_zeromq_handle_sysevent(struct md_writer_zeromq *mwz, json_object_to_json_string_ext(mge->json_blob, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) { - zmq_send(mwz, topic, strlen(topic), 0); + zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); } } @@ -326,7 +326,7 @@ static void md_zeromq_handle_conn(struct md_writer_zeromq *mwz, json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PLAIN)); if (retval < sizeof(topic)) - zmq_send(mwz, topic, strlen(topic), 0); + zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); json_object_put(json_obj); } @@ -544,7 +544,7 @@ static void md_zeromq_handle_iface(struct md_writer_zeromq *mwz, return; } - zmq_send(mwz, topic, strlen(topic), 0); + zmq_send(mwz->zmq_publisher, topic, strlen(topic), 0); json_object_put(json_obj); } From f6c50142b77d7acc129b51edb26b3e672e8d7682 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 12 Jun 2017 15:25:12 +0200 Subject: [PATCH 35/37] s/reselet/reselect/g --- metadata_exporter.h | 2 +- metadata_input_netlink.c | 4 ++-- metadata_writer_nne.c | 2 +- metadata_writer_zeromq.c | 4 ++-- metadata_writer_zeromq.h | 2 +- metadata_writer_zeromq_monroe.c | 2 +- metadata_writer_zeromq_nne.c | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/metadata_exporter.h b/metadata_exporter.h index b0e1c3e..bc50ab6 100644 --- a/metadata_exporter.h +++ b/metadata_exporter.h @@ -260,7 +260,7 @@ struct md_radio_grr_cell_resel_event { uint8_t serving_priority_class; uint8_t serving_rxlev_avg; uint8_t serving_five_second_timer; - uint8_t cell_reselet_status; + uint8_t cell_reselect_status; uint8_t recent_cell_selection; }; diff --git a/metadata_input_netlink.c b/metadata_input_netlink.c index 656f3b5..09fc8b4 100644 --- a/metadata_input_netlink.c +++ b/metadata_input_netlink.c @@ -294,8 +294,8 @@ static void md_input_netlink_radio_grr_cell_resel(struct md_input_netlink *min, event->serving_c32 = (uint32_t) json_object_get_int(val); else if (!strcmp(key, "serving_five_second_timer")) event->serving_five_second_timer = (uint8_t) json_object_get_int(val); - else if (!strcmp(key, "cell_reselet_status")) - event->cell_reselet_status = (uint8_t) json_object_get_int(val); + else if (!strcmp(key, "cell_reselect_status")) + event->cell_reselect_status = (uint8_t) json_object_get_int(val); else if (!strcmp(key, "recent_cell_selection")) event->recent_cell_selection = (uint8_t) json_object_get_int(val); } diff --git a/metadata_writer_nne.c b/metadata_writer_nne.c index ce789ae..fd60947 100644 --- a/metadata_writer_nne.c +++ b/metadata_writer_nne.c @@ -840,7 +840,7 @@ struct nne_radio_descr NNE_RADIO_GRR_CELL_RESEL_DESCR[] = { { "grr_cell_resel.serving_priority_class", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, serving_priority_class) }, { "grr_cell_resel.serving_rxlev_avg", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, serving_rxlev_avg) }, { "grr_cell_resel.serving_five_second_timer", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, serving_five_second_timer) }, - { "grr_cell_resel.cell_reselet_status", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, cell_reselet_status) }, + { "grr_cell_resel.cell_reselect_status", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, cell_reselect_status) }, { "grr_cell_resel.recent_cell_selection", NNE_TYPE_UINT8, offsetof(struct md_radio_grr_cell_resel_event, recent_cell_selection) }, { NULL, NNE_TYPE_NULL, 0 } }; diff --git a/metadata_writer_zeromq.c b/metadata_writer_zeromq.c index 9814c38..bc1cde8 100644 --- a/metadata_writer_zeromq.c +++ b/metadata_writer_zeromq.c @@ -684,8 +684,8 @@ static json_object *md_zeromq_handle_radio_cell_resel_event( mwz->keys[MD_ZMQ_KEY_RADIO_SERVING_FIVE_SECOND_TIMER], event->serving_five_second_timer) || !md_zeromq_create_json_int(obj, - mwz->keys[MD_ZMQ_KEY_RADIO_CELL_RESELET_STATUS], - event->cell_reselet_status) || + mwz->keys[MD_ZMQ_KEY_RADIO_CELL_RESELECT_STATUS], + event->cell_reselect_status) || !md_zeromq_create_json_int(obj, mwz->keys[MD_ZMQ_KEY_RADIO_RECENT_CELL_SELECTION], event->recent_cell_selection)) { diff --git a/metadata_writer_zeromq.h b/metadata_writer_zeromq.h index 5fe9ec4..a4a80f7 100644 --- a/metadata_writer_zeromq.h +++ b/metadata_writer_zeromq.h @@ -116,7 +116,7 @@ enum md_zmq_keys { MD_ZMQ_KEY_RADIO_SERVING_C31, MD_ZMQ_KEY_RADIO_SERVING_C32, MD_ZMQ_KEY_RADIO_SERVING_FIVE_SECOND_TIMER, - MD_ZMQ_KEY_RADIO_CELL_RESELET_STATUS , + MD_ZMQ_KEY_RADIO_CELL_RESELECT_STATUS , MD_ZMQ_KEY_RADIO_RECENT_CELL_SELECTION, MD_ZMQ_KEY_RADIO_GRR_CELL_NEIGHBORS, diff --git a/metadata_writer_zeromq_monroe.c b/metadata_writer_zeromq_monroe.c index 4ed4538..f0cd7ac 100644 --- a/metadata_writer_zeromq_monroe.c +++ b/metadata_writer_zeromq_monroe.c @@ -75,7 +75,7 @@ const char *monroe_keys[MD_ZMQ_KEYS_MAX + 1] = { "ServingC31", "ServingC32", "ServingFiveSecondTimer", - "CellReseletStatus", + "CellReselectStatus", "RecentCellSelection", "GRRCellNeighbors", diff --git a/metadata_writer_zeromq_nne.c b/metadata_writer_zeromq_nne.c index b05a4b0..30f5c8c 100644 --- a/metadata_writer_zeromq_nne.c +++ b/metadata_writer_zeromq_nne.c @@ -81,7 +81,7 @@ const char *nne_keys[MD_ZMQ_KEYS_MAX + 1] = { "serving_c31", "serving_c32", "serving_five_second_timer", - "cell_reselet_status", + "cell_reselect_status", "recent_cell_selection", "grr_cell_neighbors", From 35aa274fc00edb8e4a9a0f8b661f38cb61cf329e Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Mon, 12 Jun 2017 15:41:18 +0200 Subject: [PATCH 36/37] add missing field ISP_NAME=Operator --- metadata_writer_zeromq_monroe.c | 1 + 1 file changed, 1 insertion(+) diff --git a/metadata_writer_zeromq_monroe.c b/metadata_writer_zeromq_monroe.c index f0cd7ac..eddb418 100644 --- a/metadata_writer_zeromq_monroe.c +++ b/metadata_writer_zeromq_monroe.c @@ -35,6 +35,7 @@ const char *monroe_keys[MD_ZMQ_KEYS_MAX + 1] = { "IMEI", "IPAddress", "InternalIPAddress", + "Operator", "LAC", "LTERSRP", "LTEFrequency", From 019e4f480039c8a859150401858ef8cefc391810 Mon Sep 17 00:00:00 2001 From: Thomas Hirsch Date: Wed, 14 Jun 2017 14:38:25 +0200 Subject: [PATCH 37/37] add missing topics --- metadata_writer_zeromq_monroe.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/metadata_writer_zeromq_monroe.c b/metadata_writer_zeromq_monroe.c index eddb418..a3bb266 100644 --- a/metadata_writer_zeromq_monroe.c +++ b/metadata_writer_zeromq_monroe.c @@ -14,7 +14,12 @@ const char *monroe_topics[MD_ZMQ_TOPICS_MAX + 1] = { "UPDATE", "IP_ADDR", "LOC_CHANGE", - "NW_MCCMNC_CHANGE" + "NW_MCCMNC_CHANGE", + "RADIO_CELL_LOCATION_GERAN", + "RADIO_GSM_RR_CELL_SEL_RESEL_PARAM", + "RADIO_GRR_CELL_RESEL", + "RADIO_GSM_RR_CIPHER_MODE", + "RADIO_GSM_RR_CHANNEL_CONF" }; const char *monroe_keys[MD_ZMQ_KEYS_MAX + 1] = {