From cc552c8ef26686e71ae84eb586b62a9d0eba14d9 Mon Sep 17 00:00:00 2001 From: Amin Ben Ramdhane Date: Fri, 9 Mar 2018 18:36:03 +0100 Subject: [PATCH] Ticket refs #14137: Unable to retrieve "ErrorsSent", "ErrorsReceived", "DiscardPacketsSent", "DiscardPacketsReceived" parameters for Radios and Ethernet Interfaces via ACS --- dm/dmtree/tr181/ethernet.c | 44 ++++++++++++++++++++++++++++++++++++++ dm/dmtree/tr181/ethernet.h | 4 ++++ dm/dmtree/tr181/wifi.c | 41 ++++++++++++++++++++++++++++++++++- dm/dmtree/tr181/wifi.h | 4 ++++ 4 files changed, 92 insertions(+), 1 deletion(-) diff --git a/dm/dmtree/tr181/ethernet.c b/dm/dmtree/tr181/ethernet.c index b2e2266..5169e10 100644 --- a/dm/dmtree/tr181/ethernet.c +++ b/dm/dmtree/tr181/ethernet.c @@ -54,6 +54,10 @@ DMLEAF tEthernetStatParams[] = { {"BytesReceived", &DMREAD, DMT_UNINT, get_eth_port_stats_rx_bytes, NULL, NULL, NULL}, {"PacketsSent", &DMREAD, DMT_UNINT, get_eth_port_stats_tx_packets, NULL, NULL, NULL}, {"PacketsReceived", &DMREAD, DMT_UNINT, get_eth_port_stats_rx_packets, NULL, NULL, NULL}, +{"ErrorsSent", &DMREAD, DMT_UNINT, get_eth_port_stats_tx_errors, NULL, NULL, NULL}, +{"ErrorsReceived", &DMREAD, DMT_UNINT, get_eth_port_stats_rx_errors, NULL, NULL, NULL}, +{"DiscardPacketsSent", &DMREAD, DMT_UNINT, get_eth_port_stats_tx_discardpackets, NULL, NULL, NULL}, +{"DiscardPacketsReceived", &DMREAD, DMT_UNINT, get_eth_port_stats_rx_discardpackets, NULL, NULL, NULL}, {0} }; @@ -332,6 +336,46 @@ int get_eth_port_stats_rx_packets(char *refparam, struct dmctx *ctx, void *data, return 0; } +int get_eth_port_stats_tx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + + dmubus_call("network.device", "status", UBUS_ARGS{{"name", ((struct eth_port_args *)data)->ifname, String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "tx_errors"); + return 0; +} + +int get_eth_port_stats_rx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + + dmubus_call("network.device", "status", UBUS_ARGS{{"name", ((struct eth_port_args *)data)->ifname, String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "rx_errors"); + return 0; +} + +int get_eth_port_stats_tx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + + dmubus_call("network.device", "status", UBUS_ARGS{{"name", ((struct eth_port_args *)data)->ifname, String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "tx_dropped"); + return 0; +} + +int get_eth_port_stats_rx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + + dmubus_call("network.device", "status", UBUS_ARGS{{"name", ((struct eth_port_args *)data)->ifname, String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "rx_dropped"); + return 0; +} + /************************************************************* * ENTRY METHOD /*************************************************************/ diff --git a/dm/dmtree/tr181/ethernet.h b/dm/dmtree/tr181/ethernet.h index 6fb1907..e5d343c 100644 --- a/dm/dmtree/tr181/ethernet.h +++ b/dm/dmtree/tr181/ethernet.h @@ -33,6 +33,10 @@ int get_eth_port_stats_tx_bytes(char *refparam, struct dmctx *ctx, void *data, c int get_eth_port_stats_rx_bytes(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_eth_port_stats_tx_packets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_eth_port_stats_rx_packets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_eth_port_stats_tx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_eth_port_stats_rx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_eth_port_stats_tx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_eth_port_stats_rx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int set_eth_port_alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action); int set_eth_port_enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action); diff --git a/dm/dmtree/tr181/wifi.c b/dm/dmtree/tr181/wifi.c index afb7df5..7532915 100644 --- a/dm/dmtree/tr181/wifi.c +++ b/dm/dmtree/tr181/wifi.c @@ -69,6 +69,10 @@ DMLEAF tWifiRadioStatsParams[] = { {"BytesReceived", &DMREAD, DMT_UNINT, get_radio_statistics_rx_bytes, NULL, NULL, NULL}, {"PacketsSent", &DMREAD, DMT_UNINT, get_radio_statistics_tx_packets, NULL, NULL, NULL}, {"PacketsReceived", &DMREAD, DMT_UNINT, get_radio_statistics_rx_packets, NULL, NULL, NULL}, +{"ErrorsSent", &DMREAD, DMT_UNINT, get_radio_statistics_tx_errors, NULL, NULL, NULL}, +{"ErrorsReceived", &DMREAD, DMT_UNINT, get_radio_statistics_rx_errors, NULL, NULL, NULL}, +{"DiscardPacketsSent", &DMREAD, DMT_UNINT, get_radio_statistics_tx_discardpackets, NULL, NULL, NULL}, +{"DiscardPacketsReceived", &DMREAD, DMT_UNINT, get_radio_statistics_rx_discardpackets, NULL, NULL, NULL}, {0} }; @@ -613,7 +617,6 @@ int set_radio_auto_channel_enable(char *refparam, struct dmctx *ctx, void *data, int get_radio_statistics_tx_bytes(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { json_object *res; - dmubus_call("network.device", "status", UBUS_ARGS{{"name", section_name(((struct wifi_radio_args *)data)->wifi_radio_sec), String}}, 1, &res); DM_ASSERT(res, *value = ""); *value = dmjson_get_value(res, 2, "statistics", "tx_bytes"); @@ -647,6 +650,42 @@ int get_radio_statistics_rx_packets(char *refparam, struct dmctx *ctx, void *dat return 0; } +int get_radio_statistics_tx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + dmubus_call("network.device", "status", UBUS_ARGS{{"name", section_name(((struct wifi_radio_args *)data)->wifi_radio_sec), String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "tx_errors"); + return 0; +} + +int get_radio_statistics_rx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + dmubus_call("network.device", "status", UBUS_ARGS{{"name", section_name(((struct wifi_radio_args *)data)->wifi_radio_sec), String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "rx_errors"); + return 0; +} + +int get_radio_statistics_tx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + dmubus_call("network.device", "status", UBUS_ARGS{{"name", section_name(((struct wifi_radio_args *)data)->wifi_radio_sec), String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "tx_dropped"); + return 0; +} + +int get_radio_statistics_rx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) +{ + json_object *res; + dmubus_call("network.device", "status", UBUS_ARGS{{"name", section_name(((struct wifi_radio_args *)data)->wifi_radio_sec), String}}, 1, &res); + DM_ASSERT(res, *value = ""); + *value = dmjson_get_value(res, 2, "statistics", "rx_dropped"); + return 0; +} + int get_ssid_statistics_tx_bytes(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { json_object *res; diff --git a/dm/dmtree/tr181/wifi.h b/dm/dmtree/tr181/wifi.h index b56a3cc..241d6f6 100644 --- a/dm/dmtree/tr181/wifi.h +++ b/dm/dmtree/tr181/wifi.h @@ -78,6 +78,10 @@ int get_radio_statistics_tx_bytes(char *refparam, struct dmctx *ctx, void *data, int get_radio_statistics_rx_bytes(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_radio_statistics_tx_packets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_radio_statistics_rx_packets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_radio_statistics_tx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_radio_statistics_rx_errors(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_radio_statistics_tx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); +int get_radio_statistics_rx_discardpackets(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_ssid_alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_wifi_enable(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int get_wifi_status(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value);