diff options
author | Grant Erickson <gerickson@nuovations.com> | 2023-12-23 10:58:12 -0800 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2023-12-27 12:50:26 +0100 |
commit | bd4fd9ba5c33e0a39c3f6daab76133994ea8e019 (patch) | |
tree | 3e557c2e63ec93926382882b81eba4c13e3afd8b | |
parent | c10867006e650e4743a15bca403381b1f11156ee (diff) | |
download | connman-bd4fd9ba5c33e0a39c3f6daab76133994ea8e019.tar.gz |
service: Log service default, error, and state changes.
Service default, error, and state changes are significant enough and
low-frequency enough to warrant logging at the info level. This adds
log entries for each in the form:
... [Ii]nterface <interface name> [ <service type> ] ...
to achieve:
Interface eth0 [ ethernet ] is the default
Interface eth0 [ ethernet ] error "online-check-failed"
Interface eth0 [ ethernet ] state is online
log entries for default, error, and state changes, respectively.
-rw-r--r-- | src/service.c | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/src/service.c b/src/service.c index d3bd1fe83..f3e022c91 100644 --- a/src/service.c +++ b/src/service.c @@ -4187,6 +4187,17 @@ bool __connman_service_index_is_default(int index) return __connman_service_get_index(service) == index; } +static void service_log_default(const struct connman_service *service) +{ + g_autofree char *interface = NULL; + + interface = connman_service_get_interface(service); + + connman_info("Interface %s [ %s ] is the default", + interface, + __connman_service_type2string(service->type)); +} + static void default_changed(const char *function) { struct connman_service *service = connman_service_get_default(); @@ -4233,6 +4244,8 @@ static void default_changed(const char *function) current_default = service; if (service) { + service_log_default(service); + if (service->hostname && connman_setting_get_bool("AllowHostnameUpdates")) __connman_utsname_set_hostname(service->hostname); @@ -4257,10 +4270,24 @@ static void default_changed(const char *function) __connman_notifier_default_changed(service); } +static void service_log_state(const struct connman_service *service) +{ + g_autofree char *interface = NULL; + + interface = connman_service_get_interface(service); + + connman_info("Interface %s [ %s ] state is %s", + interface, + __connman_service_type2string(service->type), + state2string(service->state)); +} + static void state_changed(struct connman_service *service) { const char *str; + service_log_state(service); + __connman_notifier_service_state_changed(service, service->state); str = state2string(service->state); @@ -6450,6 +6477,19 @@ static DBusMessage *set_property(DBusConnection *conn, return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } +static void service_log_error(const struct connman_service *service, + enum connman_service_error error) +{ + g_autofree char *interface = NULL; + + interface = connman_service_get_interface(service); + + connman_warn("Interface %s [ %s ] error \"%s\"", + interface, + __connman_service_type2string(service->type), + error2string(error)); +} + /** * @brief * Set the specified network service "Error" property. @@ -6471,7 +6511,14 @@ static DBusMessage *set_property(DBusConnection *conn, static void set_error(struct connman_service *service, enum connman_service_error error) { - const char *str; + const char *str = error2string(error); + + if (!str) + str = ""; + + DBG("service %p (%s) error %d (%s)", + service, connman_service_get_identifier(service), + error, str); if (service->error == error) return; @@ -6481,14 +6528,12 @@ static void set_error(struct connman_service *service, if (!service->path) return; + if (error != CONNMAN_SERVICE_ERROR_UNKNOWN) + service_log_error(service, error); + if (!allow_property_changed(service)) return; - str = error2string(service->error); - - if (!str) - str = ""; - connman_dbus_property_changed_basic(service->path, CONNMAN_SERVICE_INTERFACE, "Error", DBUS_TYPE_STRING, &str); |