diff --git a/ChangeLog b/ChangeLog index d57b9ec4b5..14e3f9044e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,93 @@ +2005-03-14 Ray Strode + + Fourth (probably working) cut at porting to + dbus 0.30 api and new hal. This cut adds + some new logging macros to make debugging + easier. + + * dispatcher-daemon/NetworkManagerDispatcher.c: + * info-daemon/NetworkmanagerInfo.c: + * info-daemon/NetworkManagerInfoPassphraseDialog.c: + * info-daemon/NetworkManagerInfoVPN.c: + * src/NetworkManager.c: + * src/NetworkManagerAP.c: + * src/NetworkManagerAPList.c: + * src/NetworkManagerDHCP.c: + * src/NetworkManagerDbus.c: + * src/NetworkManagerDevice.c: + * src/NetworkManagerPolicy.c: + * src/NetworkManagerSystem.c: + * src/NetworkManagerUtils.c: + * src/NetworkManagerWireless.c: + * src/autoip.c: + * src/nm-dbus-nm.c: + * src/backends/NetworkManagerDebian.c: + * src/backends/NetworkManagerGentoo.c: + * src/backends/NetworkManagerRedHat.c: + * src/backends/NetworkManagerSlackware.c: + use new logging macros. + + * dispatcher-daemon/NetworkManagerDispatcher.c: + (nmd_dbus_filter): s/dbus_free/g_free/ + + * info-daemon/Makefile.am: link in utils library. + * info-daemon/NetworkmanagerInfo.c: use new logging + macros. + (nmi_dbus_get_network): don't assume enumerations + are 32-bit. + (nmi_dbus_nmi_message_handler): don't free what + doesn't belong to us. + + * libnm_glib/libnm_glib.c: + (libnm_glib_get_nm_status): + (libnm_glib_init): don't free what doesn't + belong to us. + (libnm_glib_dbus): strdup result, so it doesn't get + lost when message is unref'd. + + * panel-applet/NMWirelessAppletDbus.c: + (nmwa_dbus_update_devices): s/dbus_free/g_free/ + + * src/NetworkManager.c: + (nm_monitor_wired_link_state): request initial status + dump of all cards when we start up, instead of relying + on /sys/.../carrier. + (nm_info_handler), (nm_set_up_log_handlers): + log handlers to specify what syslog priorites + the logging macros default to. + + * src/NetworkManagerAPList.c: + (nm_ap_list_populate_from_nmi): + s/dbus_free_string_array/g_strfreev/ + + * src/NetworkManagerDbus.c: + (nm_dbus_get_network_object): + validate d-bus message argument types. + Advance message iterator after reading argument, + prepend instead of append to GSList. + + * src/NetworkManagerDevice.c: + (nm_device_probe_wired_link_status): + remove redundant /sys in /sys path. remove wrong + contents == NULL means has carrier assumption. + + * src/nm-netlink-monitor.c + (nm_netlink_monitor_request_status): implement + function to ask kernel to dump interface link + status over netlink socket. + + * test/*.c: s/dbus_free/g_free/ + + * utils/nm-utils.h: + (nm_print_backtrace): new macro to print backtrace. + (nm_get_timestamp): new macro to get sub-second precise + unix timestamp. + (nm_info), (nm_debug), (nm_warning), (nm_error): + new logging functions. nm_info just prints, + nm_debug includes timestamp and function, + nm_warning includes function, nm_error includes + backtrace and sigtrap. + 2005-03-11 Ray Strode Third (unfinished, partially working) cut at porting to diff --git a/dispatcher-daemon/NetworkManagerDispatcher.c b/dispatcher-daemon/NetworkManagerDispatcher.c index e8d2d709cb..c49609d750 100644 --- a/dispatcher-daemon/NetworkManagerDispatcher.c +++ b/dispatcher-daemon/NetworkManagerDispatcher.c @@ -70,7 +70,7 @@ void nmd_execute_scripts (NMDAction action, char *iface_name, guint32 new_ip4_ad if (!dir) { - syslog (LOG_ERR, "nmd_execute_scripts(): opendir() could not open /etc/NetworkManager.d. errno = %d", errno); + nm_warning ("nmd_execute_scripts(): opendir() could not open /etc/NetworkManager.d. errno = %d", errno); return; } @@ -127,7 +127,7 @@ char * nmd_get_device_name (DBusConnection *connection, char *path) if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, path, NM_DBUS_INTERFACE, "getName"))) { - syslog (LOG_ERR, "Couldn't allocate the dbus message"); + nm_warning ("Couldn't allocate the dbus message"); return (NULL); } @@ -135,14 +135,14 @@ char * nmd_get_device_name (DBusConnection *connection, char *path) reply = dbus_connection_send_with_reply_and_block (connection, message, -1, &error); if (dbus_error_is_set (&error)) { - syslog (LOG_ERR, "%s raised: %s", error.name, error.message); + nm_warning ("%s raised: %s", error.name, error.message); dbus_message_unref (message); return (NULL); } if (reply == NULL) { - syslog( LOG_ERR, "dbus reply message was NULL" ); + nm_warning ("dbus reply message was NULL" ); dbus_message_unref (message); return (NULL); } @@ -151,7 +151,7 @@ char * nmd_get_device_name (DBusConnection *connection, char *path) dbus_error_init (&error); if (!dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &dev_name, DBUS_TYPE_INVALID)) { - syslog (LOG_ERR, "There was an error getting the device name from NetworkManager." ); + nm_warning ("There was an error getting the device name from NetworkManager." ); dev_name = NULL; } @@ -176,7 +176,7 @@ guint32 nmd_get_device_ip4_address (DBusConnection *connection, char *path) if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, path, NM_DBUS_INTERFACE, "getIP4Address"))) { - syslog (LOG_ERR, "Couldn't allocate the dbus message"); + nm_warning ("Couldn't allocate the dbus message"); return (0); } @@ -184,14 +184,14 @@ guint32 nmd_get_device_ip4_address (DBusConnection *connection, char *path) reply = dbus_connection_send_with_reply_and_block (connection, message, -1, &error); if (dbus_error_is_set (&error)) { - syslog (LOG_ERR, "%s raised: %s", error.name, error.message); + nm_warning ("%s raised: %s", error.name, error.message); dbus_message_unref (message); return (0); } if (reply == NULL) { - syslog( LOG_ERR, "dbus reply message was NULL" ); + nm_warning ("dbus reply message was NULL" ); dbus_message_unref (message); return (0); } @@ -200,7 +200,7 @@ guint32 nmd_get_device_ip4_address (DBusConnection *connection, char *path) dbus_error_init (&error); if (!dbus_message_get_args (reply, &error, DBUS_TYPE_UINT32, &address, DBUS_TYPE_INVALID)) { - syslog (LOG_ERR, "There was an error getting the device's IPv4 address from NetworkManager." ); + nm_warning ("There was an error getting the device's IPv4 address from NetworkManager." ); address = 0; } @@ -248,20 +248,20 @@ static DBusHandlerResult nmd_dbus_filter (DBusConnection *connection, DBusMessag if (action == NMD_DEVICE_NOW_ACTIVE || action == NMD_DEVICE_NOW_INACTIVE) { - syslog (LOG_NOTICE, "Device %s (%s) is now %s.", dev_object_path, dev_iface_name, + nm_info ("Device %s (%s) is now %s.", dev_object_path, dev_iface_name, (action == NMD_DEVICE_NOW_INACTIVE ? "down" : (action == NMD_DEVICE_NOW_ACTIVE ? "up" : "error"))); } else if (action == NMD_DEVICE_IP4_ADDRESS_CHANGE) { - syslog (LOG_NOTICE, "Device %s (%s) now has address %u.%u.%u.%u", dev_object_path, dev_iface_name, + nm_info ("Device %s (%s) now has address %u.%u.%u.%u", dev_object_path, dev_iface_name, NIPQUAD(dev_ip4_address)); } nmd_execute_scripts (action, dev_iface_name, dev_ip4_address); - dbus_free (dev_iface_name); - dbus_free (dev_object_path); + g_free (dev_iface_name); + g_free (dev_object_path); handled = TRUE; } @@ -286,7 +286,7 @@ static DBusConnection *nmd_dbus_init (void) connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); if (connection == NULL) { - syslog (LOG_ERR, "nmd_dbus_init(): could not connect to the message bus. dbus says: '%s'", error.message); + nm_warning ("nmd_dbus_init(): could not connect to the message bus. dbus says: '%s'", error.message); dbus_error_free (&error); return (NULL); } @@ -388,7 +388,7 @@ int main( int argc, char *argv[] ) if (become_daemon && daemon (FALSE, FALSE) < 0) { - syslog( LOG_ERR, "NetworkManagerDispatcher could not daemonize. errno = %d", errno ); + nm_warning ("NetworkManagerDispatcher could not daemonize. errno = %d", errno ); exit (1); } diff --git a/info-daemon/Makefile.am b/info-daemon/Makefile.am index 95b223d444..9c9da583d2 100644 --- a/info-daemon/Makefile.am +++ b/info-daemon/Makefile.am @@ -1,4 +1,4 @@ -INCLUDES = -I${top_srcdir} +INCLUDES = -I${top_srcdir} -I${top_srcdir}/utils AM_CPPFLAGS = \ $(DBUS_CFLAGS) \ @@ -43,7 +43,8 @@ NetworkManagerInfo_LDADD = \ $(GTK_LIBS) \ $(GDK_PIXBUF_LIBS) \ $(GNOME_KEYRING_LIBS) \ - $(LIBGNOMEUI_LIBS) + $(LIBGNOMEUI_LIBS) \ + $(top_builddir)/utils/libnmutils.la gladedir = $(datadir)/NetworkManagerInfo/glade diff --git a/info-daemon/NetworkManagerInfo.c b/info-daemon/NetworkManagerInfo.c index 02666bfa4e..a87b4a30f2 100644 --- a/info-daemon/NetworkManagerInfo.c +++ b/info-daemon/NetworkManagerInfo.c @@ -43,6 +43,7 @@ #include "NetworkManagerInfoDbus.h" #include "NetworkManagerInfo.h" #include "NetworkManagerInfoPassphraseDialog.h" +#include "nm-utils.h" static void nmi_spawn_notification_icon (NMIAppInfo *info); @@ -203,14 +204,14 @@ int main( int argc, char *argv[] ) if (!no_daemon && daemon (FALSE, FALSE) < 0) { - syslog( LOG_ERR, "NetworkManagerInfo could not daemonize. errno = %d", errno ); + nm_warning ("NetworkManagerInfo could not daemonize. errno = %d", errno ); exit (1); } app_info = g_new0 (NMIAppInfo, 1); if (!app_info) { - syslog (LOG_CRIT, "Not enough memory for application data."); + nm_error ("Not enough memory for application data."); exit (1); } @@ -223,7 +224,7 @@ int main( int argc, char *argv[] ) dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &dbus_error); if (dbus_connection == NULL) { - syslog (LOG_CRIT, "NetworkManagerInfo could not get the system bus. Make sure the message bus daemon is running?"); + nm_error ("NetworkManagerInfo could not get the system bus. Make sure the message bus daemon is running?"); exit (1); } dbus_connection_set_change_sigpipe (TRUE); diff --git a/info-daemon/NetworkManagerInfoDbus.c b/info-daemon/NetworkManagerInfoDbus.c index 031221aa78..1f0e02716a 100644 --- a/info-daemon/NetworkManagerInfoDbus.c +++ b/info-daemon/NetworkManagerInfoDbus.c @@ -33,6 +33,7 @@ #include "NetworkManagerInfoDbus.h" #include "NetworkManagerInfoPassphraseDialog.h" #include "NetworkManagerInfoVPN.h" +#include "nm-utils.h" /* @@ -168,7 +169,7 @@ void nmi_dbus_return_user_key (DBusConnection *connection, const char *device, if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, "setKeyForNetwork"))) { - syslog (LOG_ERR, "nmi_dbus_return_user_key(): Couldn't allocate the dbus message"); + nm_warning ("nmi_dbus_return_user_key(): Couldn't allocate the dbus message"); return; } @@ -180,7 +181,7 @@ void nmi_dbus_return_user_key (DBusConnection *connection, const char *device, DBUS_TYPE_INVALID)) { if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_ERR, "nmi_dbus_return_user_key(): dbus could not send the message"); + nm_warning ("nmi_dbus_return_user_key(): dbus could not send the message"); } dbus_message_unref (message); @@ -236,13 +237,13 @@ void nmi_dbus_signal_update_network (DBusConnection *connection, const char *net message = dbus_message_new_signal (NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "WirelessNetworkUpdate"); if (!message) { - syslog (LOG_ERR, "nmi_dbus_signal_update_network(): Not enough memory for new dbus message!"); + nm_warning ("nmi_dbus_signal_update_network(): Not enough memory for new dbus message!"); return; } dbus_message_append_args (message, DBUS_TYPE_STRING, &network, DBUS_TYPE_INVALID); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nmi_dbus_signal_update_network(): Could not raise the 'WirelessNetworkUpdate' signal!"); + nm_warning ("nmi_dbus_signal_update_network(): Could not raise the 'WirelessNetworkUpdate' signal!"); dbus_message_unref (message); } @@ -349,6 +350,7 @@ static DBusMessage *nmi_dbus_get_network_properties (NMIAppInfo *info, DBusMessa char *essid = NULL; gint timestamp = -1; + gint32 i; char *key = NULL; NMEncKeyType key_type = -1; gboolean trusted = FALSE; @@ -456,10 +458,13 @@ static DBusMessage *nmi_dbus_get_network_properties (NMIAppInfo *info, DBusMessa dbus_message_iter_init_append (reply, &iter); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &essid); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, ×tamp); + i = (gint32) timestamp; + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &i); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &key); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &key_type); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &auth_method); + i = (gint32) key_type; + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &i); + i = (gint32) auth_method; + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &i); dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &trusted); dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, &array_iter); @@ -654,7 +659,7 @@ static DBusHandlerResult nmi_dbus_nmi_message_handler (DBusConnection *connectio method = dbus_message_get_member (message); path = dbus_message_get_path (message); -/* syslog (LOG_WARNING, "nmi_dbus_nmi_message_handler() got method %s for path %s", method, path);*/ +/* nm_warning ("nmi_dbus_nmi_message_handler() got method %s for path %s", method, path);*/ if (strcmp ("getKeyForNetwork", method) == 0) { @@ -674,7 +679,7 @@ static DBusHandlerResult nmi_dbus_nmi_message_handler (DBusConnection *connectio } else if (strcmp ("networkNotFound", method) == 0) { - char *network; + const char *network; DBusError error; dbus_error_init (&error); @@ -686,7 +691,6 @@ static DBusHandlerResult nmi_dbus_nmi_message_handler (DBusConnection *connectio dbus_error_free (&error); text = g_strdup_printf ( "The requested wireless network '%s' does not appear to be in range. " "A different wireless network will be used if any are available.", network); - dbus_free (network); dialog = GTK_DIALOG (gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, text, NULL)); gtk_dialog_run (dialog); @@ -816,7 +820,7 @@ int nmi_dbus_service_init (DBusConnection *dbus_connection, NMIAppInfo *info) &dbus_error); if (dbus_error_is_set (&dbus_error)) { - syslog (LOG_ERR, "nmi_dbus_service_init() could not acquire its service. dbus_bus_acquire_service() says: '%s'", dbus_error.message); + nm_warning ("nmi_dbus_service_init() could not acquire its service. dbus_bus_acquire_service() says: '%s'", dbus_error.message); dbus_error_free (&dbus_error); return (-1); } @@ -831,7 +835,7 @@ int nmi_dbus_service_init (DBusConnection *dbus_connection, NMIAppInfo *info) if (!dbus_connection_register_object_path (dbus_connection, NMI_DBUS_PATH, &nmi_vtable, info)) { - syslog (LOG_ERR, "nmi_dbus_service_init() could not register a handler for NetworkManagerInfo. Not enough memory?"); + nm_warning ("nmi_dbus_service_init() could not register a handler for NetworkManagerInfo. Not enough memory?"); return (-1); } diff --git a/info-daemon/NetworkManagerInfoPassphraseDialog.c b/info-daemon/NetworkManagerInfoPassphraseDialog.c index 409a1d18fa..7a8ff5ea22 100644 --- a/info-daemon/NetworkManagerInfoPassphraseDialog.c +++ b/info-daemon/NetworkManagerInfoPassphraseDialog.c @@ -38,6 +38,7 @@ #include "NetworkManagerInfoDbus.h" #include "NetworkManagerInfoPassphraseDialog.h" +#include "nm-utils.h" enum NMIPassphraseDialogKeyTypes { @@ -318,7 +319,7 @@ int nmi_passphrase_dialog_init (NMIAppInfo *info) info->passphrase_dialog = glade_xml_new(GLADEDIR"/passphrase.glade", NULL, NULL); if (!info->passphrase_dialog) { - syslog (LOG_ERR, "Could not open the passphrase dialog glade file!"); + nm_warning ("Could not open the passphrase dialog glade file!"); return (-1); } diff --git a/info-daemon/NetworkManagerInfoVPN.c b/info-daemon/NetworkManagerInfoVPN.c index afef0c8639..6caba1ea02 100644 --- a/info-daemon/NetworkManagerInfoVPN.c +++ b/info-daemon/NetworkManagerInfoVPN.c @@ -40,6 +40,7 @@ #include "NetworkManagerInfoDbus.h" #include "NetworkManagerInfoVPN.h" +#include "nm-utils.h" int nmi_vpn_init (NMIAppInfo *info) { @@ -90,7 +91,7 @@ static void save_vpn_password (const char *vpn, const char *keyring, const char if (keyring_result != GNOME_KEYRING_RESULT_OK) { - syslog (LOG_ERR, "Couldn't store password in keyring, code %d", + nm_warning ("Couldn't store password in keyring, code %d", (int) keyring_result); } } @@ -120,7 +121,7 @@ static void response_cb (GtkWidget *dialog, int response, gpointer user_data) username = g_object_get_data (G_OBJECT (passwd_dialog), "NetworkManagerInfoVPN-username"); vpn = g_object_get_data (G_OBJECT (passwd_dialog), "NetworkManagerInfoVPN-vpn"); password = gnome_password_dialog_get_password (passwd_dialog); - syslog (LOG_ERR, "returning VPN vpn_password for %s@%s: %s", username, vpn, password); + nm_warning ("returning VPN vpn_password for %s@%s: %s", username, vpn, password); nmi_dbus_return_vpn_password (info->connection, info->vpn_password_message, password); switch (gnome_password_dialog_get_remember (passwd_dialog)) { diff --git a/libnm_glib/libnm_glib.c b/libnm_glib/libnm_glib.c index 1d1f5e0a30..14d68fe542 100644 --- a/libnm_glib/libnm_glib.c +++ b/libnm_glib/libnm_glib.c @@ -105,9 +105,8 @@ static char *libnm_glib_get_nm_status (DBusConnection *con) dbus_message_unref (reply); return g_strdup ("error"); } - dbus_message_unref (reply); ret = g_strdup (status); - dbus_free (status); + dbus_message_unref (reply); return ret; } @@ -298,6 +297,8 @@ static DBusHandlerResult libnm_glib_dbus_filter (DBusConnection *connection, DBu if (!(dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &status_string, DBUS_TYPE_INVALID))) status_string = g_strdup ("error"); + else + status_string = g_strdup (status_string); libnm_glib_update_status (ctx, status_string); g_free (status_string); @@ -518,7 +519,7 @@ libnm_glib_ctx *libnm_glib_init (void) { char *status_string = libnm_glib_get_nm_status (ctx->dbus_con); libnm_glib_update_status (ctx, status_string); - dbus_free (status_string); + g_free (status_string); } if (!g_thread_create (libnm_glib_dbus_worker, ctx, FALSE, &error)) diff --git a/panel-applet/NMWirelessAppletDbus.c b/panel-applet/NMWirelessAppletDbus.c index d61c2e8300..ff39aaba48 100644 --- a/panel-applet/NMWirelessAppletDbus.c +++ b/panel-applet/NMWirelessAppletDbus.c @@ -1433,7 +1433,7 @@ static void nmwa_dbus_update_devices (NMWirelessApplet *applet) if (!devices) { - dbus_free (nm_status); + g_free (nm_status); return; } @@ -1479,7 +1479,7 @@ static void nmwa_dbus_update_devices (NMWirelessApplet *applet) } } } - dbus_free (name); + g_free (name); } g_free (nm_act_dev); g_strfreev (devices); diff --git a/src/NetworkManager.c b/src/NetworkManager.c index a126065aad..326666729f 100644 --- a/src/NetworkManager.c +++ b/src/NetworkManager.c @@ -34,6 +34,7 @@ #include #include "NetworkManager.h" +#include "nm-utils.h" #include "NetworkManagerUtils.h" #include "NetworkManagerDevice.h" #include "NetworkManagerPolicy.h" @@ -107,8 +108,9 @@ NMDevice * nm_create_device_and_add_to_list (NMData *data, const char *udi, cons */ if (!data->enable_test_devices && test_device) { - syslog (LOG_ERR, "nm_create_device_and_add_to_list(): attempt to create a test device," - " but test devices were not enabled on the command line. Will not create the device.\n"); + nm_warning ("attempted to create a test device, " + "but test devices were not enabled " + "on the command line."); return (NULL); } @@ -123,7 +125,7 @@ NMDevice * nm_create_device_and_add_to_list (NMData *data, const char *udi, cons */ if (nm_try_acquire_mutex (data->dev_list_mutex, __FUNCTION__)) { - syslog (LOG_INFO, "Now managing %s device '%s'.", + nm_info ("Now managing %s device '%s'.", nm_device_is_wireless (dev) ? "wireless" : "wired", nm_device_get_iface (dev)); data->dev_list = g_slist_append (data->dev_list, dev); @@ -139,11 +141,11 @@ NMDevice * nm_create_device_and_add_to_list (NMData *data, const char *udi, cons else { /* If we couldn't add the device to our list, free its data. */ - syslog ( LOG_ERR, "nm_create_device_and_add_to_list() could not acquire device list mutex." ); + nm_warning ("could not acquire device list mutex." ); nm_device_unref (dev); dev = NULL; } - } else syslog ( LOG_ERR, "nm_create_device_and_add_to_list() could not allocate device data." ); + } else nm_warning ("could not allocate device data." ); return (dev); } @@ -194,7 +196,7 @@ void nm_remove_device_from_list (NMData *data, const char *udi) } } nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__); - } else syslog ( LOG_ERR, "nm_remove_device_from_list() could not acquire device list mutex." ); + } else nm_warning ("could not acquire device list mutex." ); } /* Hal doesn't really give us any way to pass a GMainContext to our @@ -223,7 +225,7 @@ static void nm_hal_device_added (LibHalContext *ctx, const char *udi) g_return_if_fail (data != NULL); - syslog ( LOG_DEBUG, "New device added (hal udi is '%s').", udi ); + nm_debug ("New device added (hal udi is '%s').", udi ); /* Sometimes the device's properties (like net.interface) are not set up yet, * so this call will fail, and it will actually be added when hal sets the device's @@ -247,7 +249,7 @@ static void nm_hal_device_removed (LibHalContext *ctx, const char *udi) g_return_if_fail (data != NULL); - syslog ( LOG_DEBUG, "Device removed (hal udi is '%s').", udi ); + nm_debug ("Device removed (hal udi is '%s').", udi ); nm_remove_device_from_list (data, udi); } @@ -263,7 +265,7 @@ static void nm_hal_device_new_capability (LibHalContext *ctx, const char *udi, c g_return_if_fail (data != NULL); - /*syslog ( LOG_DEBUG, "nm_hal_device_new_capability() called with udi = %s, capability = %s", udi, capability );*/ + /*nm_debug ("nm_hal_device_new_capability() called with udi = %s, capability = %s", udi, capability );*/ if (capability && ((strcmp (capability, "net.80203") == 0) || (strcmp (capability, "net.80211") == 0))) { @@ -284,7 +286,7 @@ static void nm_hal_device_new_capability (LibHalContext *ctx, const char *udi, c */ static void nm_hal_device_lost_capability (LibHalContext *ctx, const char *udi, const char *capability) { -/* syslog ( LOG_DEBUG, "nm_hal_device_lost_capability() called with udi = %s, capability = %s", udi, capability );*/ +/* nm_debug ("nm_hal_device_lost_capability() called with udi = %s, capability = %s", udi, capability );*/ } /* @@ -308,8 +310,8 @@ static void nm_add_initial_devices (NMData *data) net_devices = libhal_find_device_by_capability (data->hal_ctx, "net", &num_net_devices, &error); if (dbus_error_is_set (&error)) { - syslog (LOG_ERR, "nm_add_initial_devices() could not find existing" - "networking devices: %s", error.message); + nm_warning ("could not find existing networking devices: %s", + error.message); dbus_error_free (&error); } @@ -404,7 +406,7 @@ gboolean nm_poll_and_update_wireless_link_state (NMData *data) } nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__); - } else syslog ( LOG_ERR, "nm_poll_and_update_wireless_link_state() could not acquire device list mutex." ); + } else nm_warning ("could not acquire device list mutex." ); return (TRUE); } @@ -429,7 +431,7 @@ static NMData *nm_data_new (gboolean enable_test_devices) if (pipe(data->sigterm_pipe) < 0) { - syslog (LOG_CRIT, "Couldn't create pipe: %s", g_strerror (errno)); + nm_error ("Couldn't create pipe: %s", g_strerror (errno)); exit (EXIT_FAILURE); } @@ -453,7 +455,7 @@ static NMData *nm_data_new (gboolean enable_test_devices) if (!data->dev_list_mutex) { nm_data_free (data); - syslog (LOG_ERR, "Could not initialize data structure locks."); + nm_warning ("could not initialize data structure locks."); return (NULL); } nm_register_mutex_desc (data->dev_list_mutex, "Device List Mutex"); @@ -464,7 +466,7 @@ static NMData *nm_data_new (gboolean enable_test_devices) if (!data->allowed_ap_list || !data->invalid_ap_list) { nm_data_free (data); - syslog (LOG_ERR, "Could not create access point lists. Whacky stuff going on?"); + nm_warning ("could not create access point lists."); return (NULL); } @@ -508,19 +510,29 @@ static void nm_data_free (NMData *data) memset (data, 0, sizeof (NMData)); } - static void sigterm_handler (int signum) { int ignore; - syslog (LOG_NOTICE, "Caught SIGINT/SIGTERM"); + /* FIXME: This line is probably not a great + * thing to have in a signal handler + */ + nm_info ("Caught SIGINT/SIGTERM"); + ignore = write (nm_data->sigterm_pipe[1], "X", 1); } static gboolean sigterm_pipe_handler (GIOChannel *src, GIOCondition condition, gpointer user_data) { NMData *data = user_data; - syslog (LOG_NOTICE, "Caught terminiation signal"); + + /* FIXME: These lines are definitely not great + * things to have in a signal handler + * + * The fix is to have a pipe that non-signal handling + * code can watch and respond to. + */ + nm_info ("Caught terminiation signal"); if (data->active_device) nm_device_deactivate (data->active_device, FALSE); g_main_loop_quit (data->main_loop); @@ -586,8 +598,8 @@ nm_wired_link_activated (NmNetlinkMonitor *monitor, } } else - syslog (LOG_ERR, "unknown wired ethernet interface '%s' activated\n", - interface_name); + nm_info ("unknown wired ethernet interface '%s' " + "activated\n", interface_name); nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__); } } @@ -606,8 +618,8 @@ nm_wired_link_deactivated (NmNetlinkMonitor *monitor, if (device != NULL) nm_device_set_link_active (device, FALSE); else - syslog (LOG_ERR, "unknown wired ethernet interface '%s' " - "deactivated\n", interface_name); + nm_info ("unknown wired ethernet interface '%s' " + "deactivated\n", interface_name); nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__); } } @@ -619,8 +631,8 @@ nm_error_monitoring_wired_link_state (NmNetlinkMonitor *monitor, { /* FIXME: Try to handle the error instead of just printing it. */ - syslog (LOG_ERR, "error monitoring wired ethernet link state: %s\n", - error->message); + nm_warning ("error monitoring wired ethernet link state: %s\n", + error->message); } static void @@ -636,8 +648,8 @@ nm_monitor_wired_link_state (NMData *data) if (error != NULL) { - syslog (LOG_ERR, "could not monitor wired ethernet devices: %s", - error->message); + nm_warning ("could not monitor wired ethernet devices: %s", + error->message); g_error_free (error); g_object_unref (monitor); return; @@ -655,9 +667,65 @@ nm_monitor_wired_link_state (NMData *data) nm_netlink_monitor_attach (monitor, data->main_context); + /* Request initial status of cards + */ + nm_netlink_monitor_request_status (monitor, NULL); + data->netlink_monitor = monitor; } +static void +nm_info_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gboolean is_daemon) +{ + int syslog_priority; + + switch (log_level) + { + case G_LOG_LEVEL_ERROR: + syslog_priority = LOG_CRIT; + break; + + case G_LOG_LEVEL_CRITICAL: + syslog_priority = LOG_ERR; + break; + + case G_LOG_LEVEL_WARNING: + syslog_priority = LOG_WARNING; + break; + + case G_LOG_LEVEL_MESSAGE: + syslog_priority = LOG_NOTICE; + + case G_LOG_LEVEL_DEBUG: + syslog_priority = LOG_DEBUG; + break; + + case G_LOG_LEVEL_INFO: + default: + syslog_priority = LOG_INFO; + break; + } + + syslog (syslog_priority, message); +} + +static void +nm_set_up_log_handlers (gboolean become_daemon) +{ + if (become_daemon) + openlog (G_LOG_DOMAIN, LOG_CONS, LOG_DAEMON); + else + openlog (G_LOG_DOMAIN, LOG_CONS | LOG_PERROR, LOG_USER); + + g_log_set_handler (G_LOG_DOMAIN, + G_LOG_LEVEL_MASK, + (GLogFunc) nm_info_handler, + GINT_TO_POINTER (become_daemon)); +} + /* * main * @@ -675,7 +743,7 @@ int main( int argc, char *argv[] ) if ((int)getuid() != 0) { - printf( "You must be root to run NetworkManager!\n"); + g_printerr ("You must be root to run NetworkManager!\n"); return (EXIT_FAILURE); } @@ -721,8 +789,12 @@ int main( int argc, char *argv[] ) if (become_daemon && daemon (0, 0) < 0) { - syslog (LOG_ERR, "NetworkManager could not daemonize. errno = %d", errno); - exit (EXIT_FAILURE); + int saved_errno; + + saved_errno = errno; + nm_error ("NetworkManager could not daemonize: %s [error %u]", + g_strerror (saved_errno), saved_errno); + exit (EXIT_FAILURE); } g_type_init (); @@ -730,8 +802,8 @@ int main( int argc, char *argv[] ) g_thread_init (NULL); dbus_g_thread_init (); - openlog ("NetworkManager", (become_daemon) ? LOG_CONS : LOG_CONS | LOG_PERROR, (become_daemon) ? LOG_DAEMON : LOG_USER); - syslog (LOG_NOTICE, "starting..."); + nm_set_up_log_handlers (become_daemon); + nm_info ("starting..."); nm_system_init(); @@ -747,7 +819,7 @@ int main( int argc, char *argv[] ) nm_data = nm_data_new (enable_test_devices); if (!nm_data) { - syslog (LOG_CRIT, "nm_data_new() failed... Not enough memory?"); + nm_error ("nm_data_new() failed... Not enough memory?"); exit (EXIT_FAILURE); } @@ -755,25 +827,30 @@ int main( int argc, char *argv[] ) nm_data->dbus_connection = nm_dbus_init (nm_data); if (!nm_data->dbus_connection) { - syslog (LOG_CRIT, "nm_dbus_init() failed, exiting. Either dbus is not running, or the NetworkManager dbus security policy was not loaded."); + nm_error ("nm_dbus_init() failed, exiting. " + "Either dbus is not running, or the " + "NetworkManager dbus security policy " + "was not loaded."); nm_data_free (nm_data); exit (EXIT_FAILURE); } - /* If NMI is running, grab allowed wireless network lists from it ASAP */ + /* If NMI is running, grab allowed wireless network lists from it ASAP + */ if (nm_dbus_is_info_daemon_running (nm_data->dbus_connection)) nm_policy_schedule_allowed_ap_list_update (nm_data); - /* Right before we init hal, we have to make sure our mainloop integration function - * knows about our GMainContext. HAL doesn't give us any way to pass that into its - * mainloop integration callback, so its got to be a global. + /* Right before we init hal, we have to make sure our mainloop + * integration function knows about our GMainContext. HAL doesn't give + * us any way to pass that into its mainloop integration callback, so + * its got to be a global. */ main_context = nm_data->main_context; /* Initialize libhal. We get a connection to the hal daemon here. */ if ((ctx = libhal_ctx_new()) == NULL) { - syslog (LOG_CRIT, "libhal_ctx_new() failed, exiting..."); + nm_error ("libhal_ctx_new() failed, exiting..."); exit (EXIT_FAILURE); } @@ -783,7 +860,9 @@ int main( int argc, char *argv[] ) dbus_error_init (&dbus_error); if(!libhal_ctx_init (ctx, &dbus_error)) { - syslog (LOG_CRIT, "libhal_ctx_init() failed, exiting... Make sure the hal daemon is running? - %s", dbus_error.message); + nm_error ("libhal_ctx_init() failed: %s\n" + "Make sure the hal daemon is running?", + dbus_error.message); dbus_error_free (&dbus_error); exit (EXIT_FAILURE); @@ -805,12 +884,14 @@ int main( int argc, char *argv[] ) if (dbus_error_is_set (&dbus_error)) { - syslog (LOG_CRIT, "libhal_device_property_watch_all(): %s", dbus_error.message); + nm_error ("libhal_device_property_watch_all(): %s", + dbus_error.message); dbus_error_free (&dbus_error); exit (EXIT_FAILURE); } - /* Grab network devices that are already present and add them to our list */ + /* Grab network devices that are already present and add them to our + * list */ nm_add_initial_devices (nm_data); /* We run dhclient when we need to, and we don't want any stray ones @@ -827,7 +908,8 @@ int main( int argc, char *argv[] ) if (!nm_named_manager_start (nm_data->named, &error)) { - syslog (LOG_CRIT, "Couldn't initialize nameserver: %s", error->message); + nm_error ("couldn't initialize nameserver: %s", + error->message); exit (EXIT_FAILURE); } @@ -835,12 +917,13 @@ int main( int argc, char *argv[] ) g_main_loop_run (nm_data->main_loop); /* Cleanup */ - if (libhal_ctx_shutdown (nm_data->hal_ctx, &dbus_error) != 0) { - syslog (LOG_NOTICE, "Error: libhal shutdown failed - %s", dbus_error.message); + libhal_ctx_shutdown (nm_data->hal_ctx, &dbus_error); + if (dbus_error_is_set (&dbus_error)) { + nm_warning ("libhal shutdown failed - %s", + dbus_error.message); dbus_error_free (&dbus_error); } - libhal_ctx_free (nm_data->hal_ctx); nm_data_free (nm_data); diff --git a/src/NetworkManagerAP.c b/src/NetworkManagerAP.c index f679c68f72..a09b6ed726 100644 --- a/src/NetworkManagerAP.c +++ b/src/NetworkManagerAP.c @@ -21,6 +21,7 @@ #include "NetworkManagerAP.h" #include "NetworkManagerUtils.h" +#include "nm-utils.h" #include "NetworkManagerWireless.h" @@ -67,7 +68,7 @@ NMAccessPoint * nm_ap_new (void) ap = g_new0 (NMAccessPoint, 1); if (!ap) { - syslog (LOG_ERR, "nm_ap_new() could not allocate a new user access point info structure. Not enough memory?"); + nm_warning ("nm_ap_new() could not allocate a new user access point info structure. Not enough memory?"); return (NULL); } @@ -98,7 +99,7 @@ NMAccessPoint * nm_ap_new_from_ap (NMAccessPoint *src_ap) new_ap = nm_ap_new(); if (!new_ap) { - syslog (LOG_ERR, "nm_ap_new_from_uap() could not allocate a new user access point structure. Not enough memory?"); + nm_warning ("nm_ap_new_from_uap() could not allocate a new user access point structure. Not enough memory?"); return (NULL); } diff --git a/src/NetworkManagerAPList.c b/src/NetworkManagerAPList.c index f641eed6af..3cd0f614dc 100644 --- a/src/NetworkManagerAPList.c +++ b/src/NetworkManagerAPList.c @@ -26,6 +26,7 @@ #include "NetworkManagerAPList.h" #include "NetworkManagerUtils.h" #include "NetworkManagerDbus.h" +#include "nm-utils.h" struct NMAccessPointList @@ -55,7 +56,7 @@ NMAccessPointList *nm_ap_list_new (NMNetworkType type) if (!list->mutex) { g_free (list); - syslog (LOG_ERR, "nm_ap_list_new() could not create list mutex"); + nm_warning ("nm_ap_list_new() could not create list mutex"); return (NULL); } nm_register_mutex_desc (list->mutex, "AP List Mutex"); @@ -145,7 +146,7 @@ void nm_ap_list_append_ap (NMAccessPointList *list, NMAccessPoint *ap) if (!nm_ap_list_lock (list)) { - syslog( LOG_ERR, "nm_ap_list_append_ap() could not acquire AP list mutex." ); + nm_warning ("nm_ap_list_append_ap() could not acquire AP list mutex." ); return; } @@ -171,7 +172,7 @@ void nm_ap_list_remove_ap (NMAccessPointList *list, NMAccessPoint *ap) if (!nm_ap_list_lock (list)) { - syslog( LOG_ERR, "nm_ap_list_append_ap() could not acquire AP list mutex." ); + nm_warning ("nm_ap_list_append_ap() could not acquire AP list mutex." ); return; } @@ -360,7 +361,7 @@ void nm_ap_list_populate_from_nmi (NMAccessPointList *list, NMData *data) nm_ap_list_update_network_from_nmi (list, networks[i], data); } - dbus_free_string_array (networks); + g_strfreev (networks); } } @@ -696,16 +697,16 @@ void nm_ap_list_print_members (NMAccessPointList *list, const char *name) if (!(iter = nm_ap_list_iter_new (list))) return; - syslog (LOG_ERR, "AP_LIST_PRINT: printing members of '%s'", name); + nm_warning ("AP_LIST_PRINT: printing members of '%s'", name); while ((ap = nm_ap_list_iter_next (iter))) { const GTimeVal *timestamp = nm_ap_get_timestamp (ap); - syslog (LOG_ERR, "\t%d)\tobj=%p, essid='%s', timestamp=%ld, key='%s', enc=%d, addr=%p, strength=%d, %s=%f, rate=%d, inval=%d, mode=%d", + nm_warning ("\t%d)\tobj=%p, essid='%s', timestamp=%ld, key='%s', enc=%d, addr=%p, strength=%d, %s=%f, rate=%d, inval=%d, mode=%d", i, ap, nm_ap_get_essid (ap), timestamp->tv_sec, nm_ap_get_enc_key_source (ap), nm_ap_get_encrypted (ap), nm_ap_get_address (ap), nm_ap_get_strength (ap), (nm_ap_get_freq (ap) < 20) ? "channel" : "freq", nm_ap_get_freq (ap), nm_ap_get_rate (ap), nm_ap_get_invalid (ap), nm_ap_get_mode (ap)); i++; } - syslog (LOG_ERR, "AP_LIST_PRINT: done"); + nm_warning ("AP_LIST_PRINT: done"); nm_ap_list_iter_free (iter); } diff --git a/src/NetworkManagerDHCP.c b/src/NetworkManagerDHCP.c index 243c6b4d64..9b0e9c0eed 100644 --- a/src/NetworkManagerDHCP.c +++ b/src/NetworkManagerDHCP.c @@ -33,6 +33,7 @@ #include "NetworkManagerPolicy.h" #include "nm-named-manager.h" #include "../dhcpcd/client.h" +#include "nm-utils.h" extern gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip); @@ -49,7 +50,7 @@ static void set_nameservers (NMDevice *dev, void *data, int len) GPOINTER_TO_UINT (elt->data), &error)) { - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't remove nameserver: %s\n", error->message); + nm_warning ("Couldn't remove nameserver: %s\n", error->message); g_clear_error (&error); } } @@ -65,7 +66,7 @@ static void set_nameservers (NMDevice *dev, void *data, int len) ((unsigned char *)data)[i+1], ((unsigned char *)data)[i+2], ((unsigned char *)data)[i+3]); - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Adding nameserver: %s\n", nameserver); + nm_warning ("Adding nameserver: %s\n", nameserver); if ((id = nm_named_manager_add_nameserver_ipv4 (dev->app_data->named, nameserver, @@ -74,7 +75,7 @@ static void set_nameservers (NMDevice *dev, void *data, int len) GUINT_TO_POINTER (id)); else { - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't add nameserver: %s\n", error->message); + nm_warning ("Couldn't add nameserver: %s\n", error->message); g_clear_error (&error); } g_free (nameserver); @@ -94,7 +95,7 @@ static void set_domain_searches (NMDevice *dev, const char *searches_str) GPOINTER_TO_UINT (elt->data), &error)) { - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't remove domain search: %s\n", error->message); + nm_warning ("Couldn't remove domain search: %s\n", error->message); g_clear_error (&error); } } @@ -108,14 +109,14 @@ static void set_domain_searches (NMDevice *dev, const char *searches_str) const char *search_elt = *s; guint id; - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Adding domain search: %s\n", search_elt); + nm_warning ("Adding domain search: %s\n", search_elt); if ((id = nm_named_manager_add_domain_search (dev->app_data->named, search_elt, &error))) dev->app_data->domain_search_ids = g_list_append (dev->app_data->domain_search_ids, GUINT_TO_POINTER (id)); else { - syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't add domain search: %s\n", error->message); + nm_warning ("Couldn't add domain search: %s\n", error->message); g_clear_error (&error); } } @@ -217,7 +218,7 @@ int nm_device_dhcp_request (NMDevice *dev) if (dev->dhcp_iface) { - syslog (LOG_ERR, "nm_device_dhcp_request(): device DHCP info exists, but it should have been cleared already.\n"); + nm_warning ("nm_device_dhcp_request(): device DHCP info exists, but it should have been cleared already.\n"); dhcp_interface_free (dev->dhcp_iface); } @@ -289,7 +290,7 @@ gboolean nm_device_dhcp_setup_timeouts (NMDevice *dev) } if (!t1 || !t2) { - syslog (LOG_ERR, "DHCP renew/rebind values were 0! Won't renew lease."); + nm_warning ("DHCP renew/rebind values were 0! Won't renew lease."); return (FALSE); } diff --git a/src/NetworkManagerDbus.c b/src/NetworkManagerDbus.c index 1c028c35eb..15d374457f 100644 --- a/src/NetworkManagerDbus.c +++ b/src/NetworkManagerDbus.c @@ -165,13 +165,13 @@ static gboolean nm_dbus_send_network_not_found (gpointer user_data) NMI_DBUS_INTERFACE, "networkNotFound"); if (message == NULL) { - syslog (LOG_ERR, "nm_dbus_send_network_not_found(): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_send_network_not_found(): Couldn't allocate the dbus message"); goto out; } dbus_message_append_args (message, DBUS_TYPE_STRING, &cb_data->net, DBUS_TYPE_INVALID); if (!dbus_connection_send (cb_data->app_data->dbus_connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_send_network_not_found(): could not send dbus message"); + nm_warning ("nm_dbus_send_network_not_found(): could not send dbus message"); dbus_message_unref (message); @@ -294,13 +294,13 @@ void nm_dbus_signal_device_status_change (DBusConnection *connection, NMDevice * signal = "DeviceActivationFailed"; break; default: - syslog (LOG_ERR, "nm_dbus_signal_device_status_change(): got a bad signal name"); + nm_warning ("nm_dbus_signal_device_status_change(): got a bad signal name"); return; } if (!(message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, signal))) { - syslog (LOG_ERR, "nm_dbus_signal_device_status_change(): Not enough memory for new dbus message!"); + nm_warning ("nm_dbus_signal_device_status_change(): Not enough memory for new dbus message!"); g_free (dev_path); return; } @@ -322,7 +322,7 @@ void nm_dbus_signal_device_status_change (DBusConnection *connection, NMDevice * g_free (dev_path); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_signal_device_status_change(): Could not raise the signal!"); + nm_warning ("nm_dbus_signal_device_status_change(): Could not raise the signal!"); dbus_message_unref (message); } @@ -376,7 +376,7 @@ void nm_dbus_signal_network_status_change (DBusConnection *connection, NMData *d if (!(message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, "NetworkStatusChange"))) { - syslog (LOG_ERR, "nm_dbus_signal_device_status_change(): Not enough memory for new dbus message!"); + nm_warning ("nm_dbus_signal_device_status_change(): Not enough memory for new dbus message!"); return; } @@ -385,7 +385,7 @@ void nm_dbus_signal_network_status_change (DBusConnection *connection, NMData *d dbus_message_append_args (message, DBUS_TYPE_STRING, &status, DBUS_TYPE_INVALID); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_signal_device_status_change(): Could not raise the signal!"); + nm_warning ("nm_dbus_signal_device_status_change(): Could not raise the signal!"); g_free (status); } @@ -413,7 +413,7 @@ void nm_dbus_signal_device_ip4_address_change (DBusConnection *connection, NMDev message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, "DeviceIP4AddressChange"); if (!message) { - syslog (LOG_ERR, "nm_dbus_signal_device_ip4_address_change(): Not enough memory for new dbus message!"); + nm_warning ("nm_dbus_signal_device_ip4_address_change(): Not enough memory for new dbus message!"); g_free (dev_path); return; } @@ -422,7 +422,7 @@ void nm_dbus_signal_device_ip4_address_change (DBusConnection *connection, NMDev g_free (dev_path); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_signal_device_ip4_address_change(): Could not raise the IP4AddressChange signal!"); + nm_warning ("nm_dbus_signal_device_ip4_address_change(): Could not raise the IP4AddressChange signal!"); dbus_message_unref (message); } @@ -457,7 +457,7 @@ void nm_dbus_signal_wireless_network_change (DBusConnection *connection, NMDevic message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, "WirelessNetworkUpdate"); if (!message) { - syslog (LOG_ERR, "nm_dbus_signal_wireless_network_appeared(): Not enough memory for new dbus message!"); + nm_warning ("nm_dbus_signal_wireless_network_appeared(): Not enough memory for new dbus message!"); g_free (dev_path); g_free (ap_path); return; @@ -476,7 +476,7 @@ void nm_dbus_signal_wireless_network_change (DBusConnection *connection, NMDevic dbus_message_append_args (message, DBUS_TYPE_INT32, &strength, DBUS_TYPE_INVALID); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nnm_dbus_signal_wireless_network_appeared(): Could not raise the WirelessNetworkAppeared signal!"); + nm_warning ("nnm_dbus_signal_wireless_network_appeared(): Could not raise the WirelessNetworkAppeared signal!"); dbus_message_unref (message); } @@ -503,7 +503,7 @@ void nm_dbus_get_user_key_for_network (DBusConnection *connection, NMDevice *dev NMI_DBUS_INTERFACE, "getKeyForNetwork"); if (message == NULL) { - syslog (LOG_ERR, "nm_dbus_get_user_key_for_network(): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_get_user_key_for_network(): Couldn't allocate the dbus message"); return; } @@ -515,7 +515,7 @@ void nm_dbus_get_user_key_for_network (DBusConnection *connection, NMDevice *dev DBUS_TYPE_INVALID); if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_get_user_key_for_network(): could not send dbus message"); + nm_warning ("nm_dbus_get_user_key_for_network(): could not send dbus message"); dbus_message_unref (message); } @@ -537,12 +537,12 @@ void nm_dbus_cancel_get_user_key_for_network (DBusConnection *connection) NMI_DBUS_INTERFACE, "cancelGetKeyForNetwork"); if (message == NULL) { - syslog (LOG_ERR, "nm_dbus_cancel_get_user_key_for_network(): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_cancel_get_user_key_for_network(): Couldn't allocate the dbus message"); return; } if (!dbus_connection_send (connection, message, NULL)) - syslog (LOG_WARNING, "nm_dbus_cancel_get_user_key_for_network(): could not send dbus message"); + nm_warning ("nm_dbus_cancel_get_user_key_for_network(): could not send dbus message"); dbus_message_unref (message); } @@ -563,6 +563,7 @@ NMAccessPoint *nm_dbus_get_network_object (DBusConnection *connection, NMNetwork const char *essid = NULL; gint timestamp_secs = -1; + gint32 i; const char *key = NULL; NMEncKeyType key_type = -1; gboolean trusted = FALSE; @@ -576,7 +577,7 @@ NMAccessPoint *nm_dbus_get_network_object (DBusConnection *connection, NMNetwork if (!(message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "getNetworkProperties"))) { - syslog (LOG_ERR, "nm_dbus_get_network_object(): Couldn't allocate the dbus message"); + nm_warning ("Couldn't allocate the dbus message"); return (NULL); } @@ -592,13 +593,13 @@ NMAccessPoint *nm_dbus_get_network_object (DBusConnection *connection, NMNetwork if (dbus_error_is_set (&error)) { - syslog (LOG_ERR, "nm_dbus_get_network_object(): %s raised '%s'", error.name, error.message); + nm_warning ("%s raised '%s'", error.name, error.message); goto out; } if (!reply) { - syslog (LOG_NOTICE, "nm_dbus_get_network_object(): reply was NULL."); + nm_warning ("Reply was NULL."); goto out; } @@ -606,13 +607,73 @@ NMAccessPoint *nm_dbus_get_network_object (DBusConnection *connection, NMNetwork */ dbus_message_iter_init (reply, &iter); + + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_STRING, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } dbus_message_iter_get_basic (&iter, &essid); - dbus_message_iter_get_basic (&iter, ×tamp_secs); + + dbus_message_iter_next (&iter); + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INT32) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_INT32, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } + dbus_message_iter_get_basic (&iter, &i); + + timestamp_secs = (gint32) i; + + dbus_message_iter_next (&iter); + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_STRING, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } dbus_message_iter_get_basic (&iter, &key); - dbus_message_iter_get_basic (&iter, &key_type); - dbus_message_iter_get_basic (&iter, &auth_method); + + dbus_message_iter_next (&iter); + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INT32) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_INT32, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } + dbus_message_iter_get_basic (&iter, &i); + + key_type = (NMEncKeyType) i; + + dbus_message_iter_next (&iter); + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INT32) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_INT32, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } + dbus_message_iter_get_basic (&iter, &i); + + auth_method = (NMDeviceAuthMethod) i; + + dbus_message_iter_next (&iter); + if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_BOOLEAN) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)\n", DBUS_TYPE_BOOLEAN, + dbus_message_iter_get_arg_type (&iter)); + goto out; + } dbus_message_iter_get_basic (&iter, &trusted); + dbus_message_iter_next (&iter); if (timestamp_secs > 0) { GTimeVal *timestamp = g_new0 (GTimeVal, 1); @@ -636,22 +697,43 @@ NMAccessPoint *nm_dbus_get_network_object (DBusConnection *connection, NMNetwork /* Get user addresses, form into a GSList, and stuff into the AP */ if (dbus_message_iter_get_arg_type (&iter) == DBUS_TYPE_ARRAY) { - GSList *addr_list = NULL; + GSList *addr_list; DBusMessageIter array_iter; dbus_message_iter_recurse (&iter, &array_iter); + addr_list = NULL; while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRING) { - gchar *addr; + const gchar *addr; dbus_message_iter_get_basic (&array_iter, &addr); - if (addr && (strlen (addr) >= 11)) - addr_list = g_slist_append (addr_list, g_strdup (addr)); + + if ((addr != NULL) && (strlen (addr) >= 11)) + addr_list = g_slist_prepend (addr_list, g_strdup (addr)); + else + nm_warning ("Expected hardware address, got '%s'", + addr); + + dbus_message_iter_next (&array_iter); + } + + if (dbus_message_iter_get_arg_type (&array_iter) != DBUS_TYPE_INVALID) + { + nm_warning ("Reply had wrong arguments: " + "(expected %u, got %u)", DBUS_TYPE_INVALID, + dbus_message_iter_get_arg_type (&array_iter)); + + g_slist_foreach (addr_list, (GFunc) g_free, NULL); + g_slist_free (addr_list); + + goto out; } + addr_list = g_slist_reverse (addr_list); nm_ap_set_user_addresses (ap, addr_list); - g_slist_foreach (addr_list, (GFunc)g_free, NULL); + + g_slist_foreach (addr_list, (GFunc) g_free, NULL); g_slist_free (addr_list); } } @@ -685,7 +767,7 @@ gboolean nm_dbus_update_network_auth_method (DBusConnection *connection, const c message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "updateNetworkAuthMethod"); if (!message) { - syslog (LOG_ERR, "nm_dbus_update_network_auth_method (): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_update_network_auth_method (): Couldn't allocate the dbus message"); return (FALSE); } @@ -698,7 +780,7 @@ gboolean nm_dbus_update_network_auth_method (DBusConnection *connection, const c dbus_error_init (&error); if (!dbus_connection_send (connection, message, NULL)) { - syslog (LOG_ERR, "nm_dbus_update_network_auth_method (): failed to send dbus message."); + nm_warning ("nm_dbus_update_network_auth_method (): failed to send dbus message."); dbus_error_free (&error); } else @@ -735,7 +817,7 @@ gboolean nm_dbus_add_network_address (DBusConnection *connection, NMNetworkType NMI_DBUS_INTERFACE, "addNetworkAddress"); if (!message) { - syslog (LOG_ERR, "nm_dbus_add_network_ap_mac_address(): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_add_network_ap_mac_address(): Couldn't allocate the dbus message"); return (FALSE); } @@ -753,7 +835,7 @@ gboolean nm_dbus_add_network_address (DBusConnection *connection, NMNetworkType dbus_error_init (&error); if (!dbus_connection_send (connection, message, NULL)) { - syslog (LOG_ERR, "nm_dbus_add_network_ap_mac_address(): failed to send dbus message."); + nm_warning ("nm_dbus_add_network_ap_mac_address(): failed to send dbus message."); dbus_error_free (&error); } else @@ -769,7 +851,7 @@ gboolean nm_dbus_add_network_address (DBusConnection *connection, NMNetworkType * * Get all networks of a specific type from NetworkManagerInfo * - * NOTE: caller MUST free returned value using dbus_free_string_array() + * NOTE: caller MUST free returned value using g_strfreev() * */ char ** nm_dbus_get_networks (DBusConnection *connection, NMNetworkType type, int *num_networks) @@ -788,7 +870,7 @@ char ** nm_dbus_get_networks (DBusConnection *connection, NMNetworkType type, in NMI_DBUS_INTERFACE, "getNetworks"); if (!message) { - syslog (LOG_ERR, "nm_dbus_get_networks(): Couldn't allocate the dbus message"); + nm_warning ("nm_dbus_get_networks(): Couldn't allocate the dbus message"); return (NULL); } @@ -800,9 +882,9 @@ char ** nm_dbus_get_networks (DBusConnection *connection, NMNetworkType type, in reply = dbus_connection_send_with_reply_and_block (connection, message, -1, &error); dbus_message_unref (message); if (dbus_error_is_set (&error)) - syslog (LOG_ERR, "nm_dbus_get_networks(): %s raised %s", error.name, error.message); + nm_warning ("nm_dbus_get_networks(): %s raised %s", error.name, error.message); else if (!reply) - syslog (LOG_NOTICE, "nm_dbus_get_networks(): reply was NULL."); + nm_info ("nm_dbus_get_networks(): reply was NULL."); else { DBusMessageIter iter, array_iter; @@ -816,7 +898,8 @@ char ** nm_dbus_get_networks (DBusConnection *connection, NMNetworkType type, in if (buffer == NULL) return NULL; - while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRING) { + while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRING) + { const char *value; char *str; @@ -824,7 +907,10 @@ char ** nm_dbus_get_networks (DBusConnection *connection, NMNetworkType type, in str = g_strdup (value); if (str == NULL) + { + g_array_free (buffer, TRUE); return NULL; + } g_array_append_val (buffer, str); @@ -886,7 +972,7 @@ static DBusHandlerResult nm_dbus_nmi_filter (DBusConnection *connection, DBusMes if (!(object_path = dbus_message_get_path (message))) return (DBUS_HANDLER_RESULT_NOT_YET_HANDLED); - /* syslog (LOG_DEBUG, "nm_dbus_nmi_filter() got method %s for path %s", method, object_path); */ + /* nm_debug ("nm_dbus_nmi_filter() got method %s for path %s", method, object_path); */ dbus_error_init (&error); @@ -898,7 +984,7 @@ static DBusHandlerResult nm_dbus_nmi_filter (DBusConnection *connection, DBusMes if (dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &network, DBUS_TYPE_INVALID)) { /* Update a single wireless network's data */ - syslog (LOG_DEBUG, "NetworkManagerInfo triggered update of wireless network '%s'", network); + nm_debug ("NetworkManagerInfo triggered update of wireless network '%s'", network); nm_ap_list_update_network_from_nmi (data->allowed_ap_list, network, data); handled = TRUE; } @@ -1094,7 +1180,7 @@ DBusConnection *nm_dbus_init (NMData *data) connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); if ((connection == NULL) || dbus_error_is_set (&error)) { - syslog (LOG_ERR, "nm_dbus_init() could not get the system bus. Make sure the message bus daemon is running?"); + nm_warning ("nm_dbus_init() could not get the system bus. Make sure the message bus daemon is running?"); connection = NULL; goto out; } @@ -1111,14 +1197,14 @@ DBusConnection *nm_dbus_init (NMData *data) || !dbus_connection_register_fallback (connection, NM_DBUS_PATH_DEVICES, &devices_vtable, data) || !dbus_connection_register_object_path (connection, NM_DBUS_PATH_DHCP, &dhcp_vtable, data)) { - syslog (LOG_CRIT, "nm_dbus_init() could not register D-BUS handlers. Cannot continue."); + nm_error ("nm_dbus_init() could not register D-BUS handlers. Cannot continue."); connection = NULL; goto out; } if (!dbus_connection_add_filter (connection, nm_dbus_nmi_filter, data, NULL)) { - syslog (LOG_CRIT, "nm_dbus_init() could not attach a dbus message filter. The NetworkManager dbus security policy may not be loaded. Restart dbus?"); + nm_error ("nm_dbus_init() could not attach a dbus message filter. The NetworkManager dbus security policy may not be loaded. Restart dbus?"); connection = NULL; goto out; } @@ -1140,7 +1226,7 @@ DBusConnection *nm_dbus_init (NMData *data) dbus_bus_request_name (connection, NM_DBUS_SERVICE, 0, &error); if (dbus_error_is_set (&error)) { - syslog (LOG_ERR, "nm_dbus_init() could not acquire its service. dbus_bus_acquire_service() says: '%s'", error.message); + nm_warning ("nm_dbus_init() could not acquire its service. dbus_bus_acquire_service() says: '%s'", error.message); connection = NULL; goto out; } diff --git a/src/NetworkManagerDevice.c b/src/NetworkManagerDevice.c index ead8ac28cb..a3afb6ed4d 100644 --- a/src/NetworkManagerDevice.c +++ b/src/NetworkManagerDevice.c @@ -217,15 +217,15 @@ NMDevice *nm_device_new (const char *iface, const char *udi, gboolean test_dev, */ if (!app_data->enable_test_devices && test_dev) { - syslog (LOG_ERR, "nm_device_new(): attempt to create a test device, but test devices were not enabled" - " on the command line. Will not create the device.\n"); + nm_warning ("attempt to create a test device, but test devices were not enabled " + "on the command line. Will not create the device.\n"); return (NULL); } dev = g_malloc0 (sizeof (NMDevice)); if (!dev) { - syslog (LOG_ERR, "nm_device_new() could not allocate a new device... Not enough memory?"); + nm_warning ("could not allocate a new device... Not enough memory?"); return (NULL); } @@ -324,16 +324,16 @@ NMDevice *nm_device_new (const char *iface, const char *udi, gboolean test_dev, if (!g_thread_create (nm_device_worker, dev, FALSE, &error)) { - syslog (LOG_CRIT, "nm_device_new (): could not create device worker thread. (glib said: '%s')", error->message); + nm_error ("could not create device worker thread. (glib said: '%s')", error->message); g_error_free (error); goto err; } /* Block until our device thread has actually had a chance to start. */ - syslog (LOG_ERR, "nm_device_new(): waiting for device's worker thread to start.\n"); + nm_info ("waiting for device's worker thread to start.\n"); while (dev->worker_started == FALSE) g_usleep (G_USEC_PER_SEC / 2); - syslog (LOG_ERR, "nm_device_new(): device's worker thread started, continuing.\n"); + nm_info ("device's worker thread started, continuing.\n"); return (dev); @@ -420,7 +420,7 @@ static gpointer nm_device_worker (gpointer user_data) if (!dev) { - syslog (LOG_CRIT, "nm_device_worker(): received NULL device object, NetworkManager cannot continue.\n"); + nm_error ("received NULL device object, NetworkManager cannot continue.\n"); exit (1); } @@ -517,7 +517,7 @@ int nm_device_open_sock (void) if (fd >= 0) return (fd); - syslog (LOG_ERR, "nm_device_open_sock () could not get network control socket."); + nm_warning ("could not get network control socket."); return (-1); } @@ -799,19 +799,17 @@ static gboolean nm_device_probe_wired_link_state (NMDevice *dev) if (dev->removed) return FALSE; - carrier_path = g_strdup_printf ("/sys/sys/class/net/%s/carrier", dev->iface); + carrier_path = g_strdup_printf ("/sys/class/net/%s/carrier", dev->iface); if (g_file_get_contents (carrier_path, &contents, &length, NULL)) { link = (gboolean) atoi (contents); g_free (contents); - } else { - contents = NULL; - } + } /* We say that non-carrier-detect devices always have a link, because * they never get auto-selected by NM. User has to force them on us, * so we just hope the user knows whether or not the cable's plugged in. */ - if ((dev->options.wired.has_carrier_detect != TRUE) || (contents == NULL)) + if (dev->options.wired.has_carrier_detect != TRUE) link = TRUE; return (link); @@ -893,7 +891,7 @@ char * nm_device_get_essid (NMDevice *dev) dev->options.wireless.cur_essid = g_strdup (info.essid); } else - syslog (LOG_ERR, "nm_device_get_essid(): error getting ESSID for device %s. errno = %d", nm_device_get_iface (dev), errno); + nm_warning ("nm_device_get_essid(): error getting ESSID for device %s. errno = %d", nm_device_get_iface (dev), errno); close (sk); } @@ -944,7 +942,7 @@ void nm_device_set_essid (NMDevice *dev, const char *essid) err = iw_set_ext (sk, nm_device_get_iface (dev), SIOCSIWESSID, &wreq); if (err == -1) - syslog (LOG_ERR, "nm_device_set_essid(): error setting ESSID '%s' for device %s. errno = %d", safe_essid, nm_device_get_iface (dev), errno); + nm_warning ("nm_device_set_essid(): error setting ESSID '%s' for device %s. errno = %d", safe_essid, nm_device_get_iface (dev), errno); close (sk); } @@ -979,7 +977,7 @@ double nm_device_get_frequency (NMDevice *dev) if (err >= 0) freq = iw_freq2float (&wrq.u.freq); if (err == -1) - syslog (LOG_ERR, "nm_device_get_frequency(): error getting frequency for device %s. errno = %d", nm_device_get_iface (dev), errno); + nm_warning ("nm_device_get_frequency(): error getting frequency for device %s. errno = %d", nm_device_get_iface (dev), errno); close (sk); } @@ -1258,11 +1256,11 @@ void nm_device_set_enc_key (NMDevice *dev, const char *key, NMDeviceAuthMethod a { err = iw_set_ext (sk, nm_device_get_iface (dev), SIOCSIWENCODE, &wreq); if (err == -1) - syslog (LOG_ERR, "nm_device_set_enc_key(): error setting key for device %s. errno = %d", nm_device_get_iface (dev), errno); + nm_warning ("nm_device_set_enc_key(): error setting key for device %s. errno = %d", nm_device_get_iface (dev), errno); } close (sk); - } else syslog (LOG_ERR, "nm_device_set_enc_key(): could not get wireless control socket."); + } else nm_warning ("nm_device_set_enc_key(): could not get wireless control socket."); } @@ -1501,7 +1499,7 @@ static void nm_device_set_up_down (NMDevice *dev, gboolean up) ifr.ifr_flags &= ~IFF_UP; ifr.ifr_flags |= IFF_UP & flags; if ((err = ioctl (sk, SIOCSIFFLAGS, &ifr))) - syslog (LOG_ERR, "nm_device_set_up_down() could not bring device %s %s. errno = %d", nm_device_get_iface (dev), (up ? "up" : "down"), errno ); + nm_warning ("nm_device_set_up_down() could not bring device %s %s. errno = %d", nm_device_get_iface (dev), (up ? "up" : "down"), errno ); } /* Make sure we have a valid MAC address, some cards reload firmware when they * are brought up. @@ -1510,7 +1508,7 @@ static void nm_device_set_up_down (NMDevice *dev, gboolean up) nm_device_update_hw_address(dev); } else - syslog (LOG_ERR, "nm_device_set_up_down() could not get flags for device %s. errno = %d", nm_device_get_iface (dev), errno ); + nm_warning ("nm_device_set_up_down() could not get flags for device %s. errno = %d", nm_device_get_iface (dev), errno ); close (sk); } @@ -1556,7 +1554,7 @@ gboolean nm_device_is_up (NMDevice *dev) if (!err) return (!((ifr.ifr_flags^IFF_UP) & IFF_UP)); - syslog (LOG_ERR, "nm_device_is_up() could not get flags for device %s. errno = %d", nm_device_get_iface (dev), errno ); + nm_warning ("nm_device_is_up() could not get flags for device %s. errno = %d", nm_device_get_iface (dev), errno ); return (FALSE); } @@ -1598,7 +1596,7 @@ NMNetworkMode nm_device_get_mode (NMDevice *dev) } } else - syslog (LOG_ERR, "nm_device_get_mode (%s): error setting card to Infrastructure mode. errno = %d", nm_device_get_iface (dev), errno); + nm_warning ("nm_device_get_mode (%s): error setting card to Infrastructure mode. errno = %d", nm_device_get_iface (dev), errno); close (sk); } @@ -1652,7 +1650,7 @@ gboolean nm_device_set_mode (NMDevice *dev, const NMNetworkMode mode) if (err == 0) success = TRUE; else - syslog (LOG_ERR, "nm_device_set_mode (%s): error setting card to Infrastructure mode. errno = %d", nm_device_get_iface (dev), errno); + nm_warning ("nm_device_set_mode (%s): error setting card to Infrastructure mode. errno = %d", nm_device_get_iface (dev), errno); } close (sk); } @@ -1747,7 +1745,7 @@ static gboolean nm_device_activation_handle_cancel (NMDevice *dev) /* If we were told to quit activation, stop the thread and return */ if (dev->quit_activation) { - syslog (LOG_DEBUG, "nm_device_activation_worker(%s): activation canceled.", nm_device_get_iface (dev)); + nm_debug ("activation of device '%s' canceled.", nm_device_get_iface (dev)); if (nm_device_is_wireless (dev)) nm_device_set_now_scanning (dev, FALSE); return (TRUE); @@ -1867,7 +1865,7 @@ static gboolean nm_device_set_wireless_config (NMDevice *dev, NMAccessPoint *ap) if (auth == NM_DEVICE_AUTH_METHOD_NONE) { nm_ap_set_auth_method (ap, NM_DEVICE_AUTH_METHOD_OPEN_SYSTEM); - syslog (LOG_ERR, "Activation (%s/wireless): AP '%s' said it was encrypted, but had " + nm_warning ("Activation (%s/wireless): AP '%s' said it was encrypted, but had " "'none' for authentication method. Using Open System authentication method.", nm_device_get_iface (dev), nm_ap_get_essid (ap)); } @@ -1879,7 +1877,7 @@ static gboolean nm_device_set_wireless_config (NMDevice *dev, NMAccessPoint *ap) nm_device_set_essid (dev, essid); - syslog (LOG_INFO, "Activation (%s/wireless): using essid '%s', with %s authentication.", + nm_info ("Activation (%s/wireless): using essid '%s', with %s authentication.", nm_device_get_iface (dev), essid, (auth == NM_DEVICE_AUTH_METHOD_NONE) ? "no" : ((auth == NM_DEVICE_AUTH_METHOD_OPEN_SYSTEM) ? "Open System" : ((auth == NM_DEVICE_AUTH_METHOD_SHARED_KEY) ? "Shared Key" : "unknown"))); @@ -1983,7 +1981,7 @@ static gboolean nm_device_activate_wireless_adhoc (NMDevice *dev, NMAccessPoint { nm_ap_set_freq (ap, freq_to_use); - syslog (LOG_INFO, "Will create network '%s' with frequency %f.\n", nm_ap_get_essid (ap), nm_ap_get_freq (ap)); + nm_info ("Will create network '%s' with frequency %f.\n", nm_ap_get_essid (ap), nm_ap_get_freq (ap)); if ((success = nm_device_set_wireless_config (dev, ap))) success = nm_device_activation_configure_ip (dev, TRUE); } @@ -2003,20 +2001,24 @@ static gboolean AP_NEED_KEY (NMDevice *dev, NMAccessPoint *ap) if (!nm_ap_get_encrypted (ap)) { - syslog (LOG_NOTICE, "Activation (%s/wireless): access point '%s' is unencrypted, no key needed.", - nm_device_get_iface (dev), essid ? essid : "(null)"); + nm_info ("Activation (%s/wireless): access point '%s' is " + "unencrypted, no key needed.", + nm_device_get_iface (dev), essid ? essid : "(null)"); } else { if (nm_ap_is_enc_key_valid (ap)) { - syslog (LOG_NOTICE, "Activation (%s/wireless): access point '%s' is encrypted, and a key exists. No new key needed.", - nm_device_get_iface (dev), essid ? essid : "(null)"); + nm_info ("Activation (%s/wireless): access point '%s' " + "is encrypted, and a key exists. No new key needed.", + nm_device_get_iface (dev), essid ? essid : "(null)"); } else { - syslog (LOG_NOTICE, "Activation (%s/wireless): access point '%s' is encrypted, but NO valid key exists. New key needed.", - nm_device_get_iface (dev), essid ? essid : "(null)"); + nm_info ("Activation (%s/wireless): access point '%s' " + "is encrypted, but NO valid key exists. New key needed.", + nm_device_get_iface (dev), + essid ? essid : "(null)"); need_key = TRUE; } } @@ -2119,7 +2121,7 @@ get_ap: { nm_device_set_now_scanning (dev, TRUE); if (!found_ap) - syslog (LOG_ERR, "Activation (%s/wireless): waiting for an access point.", nm_device_get_iface (dev)); + nm_warning ("Activation (%s/wireless): waiting for an access point.", nm_device_get_iface (dev)); g_usleep (G_USEC_PER_SEC * 2); /* If we were told to quit activation, stop the thread and return */ @@ -2132,7 +2134,7 @@ get_ap: found_ap = TRUE; } if (found_ap) - syslog (LOG_ERR, "Activation (%s/wireless): found access point '%s' to use.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap)); + nm_warning ("Activation (%s/wireless): found access point '%s' to use.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap)); /* Set ESSID early so that when we send out the DeviceStatusChanged signal below, * we are able to respond correctly to queries for "getActiveNetwork" against @@ -2179,11 +2181,11 @@ need_key: need_key = FALSE; /* Wait for the key to come back */ - syslog (LOG_DEBUG, "Activation (%s/wireless): asking for user key.", nm_device_get_iface (dev)); + nm_debug ("Activation (%s/wireless): asking for user key.", nm_device_get_iface (dev)); while (!dev->options.wireless.user_key_received && !dev->quit_activation) g_usleep (G_USEC_PER_SEC / 2); - syslog (LOG_DEBUG, "Activation (%s/wireless): user key received.", nm_device_get_iface (dev)); + nm_debug ("Activation (%s/wireless): user key received.", nm_device_get_iface (dev)); /* Done waiting, grab lock again */ nm_lock_mutex (dev->options.wireless.scan_mutex, __FUNCTION__); @@ -2229,7 +2231,7 @@ try_connect: { if (nm_ap_get_auth_method (best_ap) == NM_DEVICE_AUTH_METHOD_OPEN_SYSTEM) { - syslog (LOG_DEBUG, "Activation (%s/wireless): no hardware link to '%s' in Open System mode, trying Shared Key.", + nm_debug ("Activation (%s/wireless): no hardware link to '%s' in Open System mode, trying Shared Key.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); /* Back down to Shared Key mode */ nm_ap_set_auth_method (best_ap, NM_DEVICE_AUTH_METHOD_SHARED_KEY); @@ -2239,12 +2241,12 @@ try_connect: { /* Must be in Open System mode and it still didn't work, so * we'll invalidate the current "best" ap and get another one */ - syslog (LOG_DEBUG, "Activation (%s/wireless): no hardware link to '%s' in Shared Key mode, trying another access point.", + nm_debug ("Activation (%s/wireless): no hardware link to '%s' in Shared Key mode, trying another access point.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); } else { - syslog (LOG_DEBUG, "Activation (%s/wireless): no hardware link to '%s' in non-encrypted mode.", + nm_debug ("Activation (%s/wireless): no hardware link to '%s' in non-encrypted mode.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); } @@ -2273,7 +2275,7 @@ try_connect: if ((nm_ap_get_auth_method (best_ap) == NM_DEVICE_AUTH_METHOD_OPEN_SYSTEM) && !adhoc) { /* Back down to Shared Key mode */ - syslog (LOG_DEBUG, "Activation (%s/wireless): could not get IP configuration info for '%s' in Open System mode, trying Shared Key.", + nm_debug ("Activation (%s/wireless): could not get IP configuration info for '%s' in Open System mode, trying Shared Key.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); nm_ap_set_auth_method (best_ap, NM_DEVICE_AUTH_METHOD_SHARED_KEY); continue; @@ -2281,7 +2283,7 @@ try_connect: else if ((nm_ap_get_auth_method (best_ap) == NM_DEVICE_AUTH_METHOD_SHARED_KEY) && !adhoc) { /* Shared Key mode failed, we must have bad WEP key */ - syslog (LOG_DEBUG, "Activation (%s/wireless): could not get IP configuration info for '%s' in Shared Key mode, asking for new key.", + nm_debug ("Activation (%s/wireless): could not get IP configuration info for '%s' in Shared Key mode, asking for new key.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); need_key = TRUE; goto need_key; @@ -2302,7 +2304,7 @@ connect_done: if (success) { - syslog (LOG_DEBUG, "Activation (%s/wireless): Success! Connected to access point '%s' and got an IP address.", + nm_debug ("Activation (%s/wireless): Success! Connected to access point '%s' and got an IP address.", nm_device_get_iface (dev), nm_ap_get_essid (best_ap) ? nm_ap_get_essid (best_ap) : "(none)"); nm_ap_unref (best_ap); } @@ -2386,7 +2388,7 @@ static gboolean nm_device_activate (gpointer user_data) g_return_val_if_fail (dev != NULL, FALSE); g_return_val_if_fail (dev->app_data != NULL, FALSE); - syslog (LOG_ERR, "Activation (%s) started...", nm_device_get_iface (dev)); + nm_warning ("Activation (%s) started...", nm_device_get_iface (dev)); /* Bring the device up */ if (!nm_device_is_up (dev)); @@ -2402,9 +2404,9 @@ static gboolean nm_device_activate (gpointer user_data) if (nm_ap_get_user_created (best_ap)) { create_network = TRUE; - syslog (LOG_INFO, "Creating wireless network '%s'.\n", nm_ap_get_essid (best_ap)); + nm_info ("Creating wireless network '%s'.\n", nm_ap_get_essid (best_ap)); success = nm_device_activate_wireless_adhoc (dev, best_ap); - syslog (LOG_INFO, "Wireless network creation for '%s' was %s.\n", nm_ap_get_essid (best_ap), success ? "successful" : "unsuccessful"); + nm_info ("Wireless network creation for '%s' was %s.\n", nm_ap_get_essid (best_ap), success ? "successful" : "unsuccessful"); } nm_ap_unref (best_ap); } @@ -2420,14 +2422,15 @@ static gboolean nm_device_activate (gpointer user_data) goto out; if (success) - syslog (LOG_DEBUG, "Activation (%s) IP configuration/DHCP successful!\n", nm_device_get_iface (dev)); + nm_info ("Activation (%s) IP configuration/DHCP successful!\n", nm_device_get_iface (dev)); else - syslog (LOG_DEBUG, "Activation (%s) IP configuration/DHCP unsuccessful! Ending activation...\n", nm_device_get_iface (dev)); + nm_info ("Activation (%s) IP configuration/DHCP unsuccessful! Ending activation...\n", + nm_device_get_iface (dev)); finished = TRUE; out: - syslog (LOG_DEBUG, "Activation (%s) ended.\n", nm_device_get_iface (dev)); + nm_debug ("Activation (%s) ended.\n", nm_device_get_iface (dev)); dev->activating = FALSE; dev->quit_activation = FALSE; if (finished) @@ -2477,7 +2480,7 @@ void nm_device_activation_cancel (NMDevice *dev) if (nm_device_is_activating (dev)) { - syslog (LOG_DEBUG, "nm_device_activation_cancel(%s): cancelling...", nm_device_get_iface (dev)); + nm_debug ("nm_device_activation_cancel(%s): cancelling...", nm_device_get_iface (dev)); dev->quit_activation = TRUE; /* Spin until cancelled. Possible race conditions or deadlocks here. @@ -2496,7 +2499,7 @@ void nm_device_activation_cancel (NMDevice *dev) g_usleep (G_USEC_PER_SEC / 2); } - syslog (LOG_DEBUG, "nm_device_activation_cancel(%s): cancelled.", nm_device_get_iface (dev)); + nm_debug ("nm_device_activation_cancel(%s): cancelled.", nm_device_get_iface (dev)); } } @@ -2966,7 +2969,7 @@ static gboolean nm_device_wireless_force_use (NMDevice *dev, const char *essid, if (!essid) return FALSE; - syslog (LOG_DEBUG, "Forcing AP '%s'", essid); + nm_debug ("Forcing AP '%s'", essid); if ( key && strlen (key) @@ -3142,7 +3145,7 @@ static void nm_device_do_pseudo_scan (NMDevice *dev) if (valid) { - syslog(LOG_INFO, "%s: setting AP '%s' best", nm_device_get_iface (dev), nm_ap_get_essid (ap)); + nm_info ("%s: setting AP '%s' best", nm_device_get_iface (dev), nm_ap_get_essid (ap)); nm_device_set_best_ap (dev, ap); nm_policy_schedule_state_update (dev->app_data); @@ -3502,7 +3505,8 @@ static gboolean nm_device_wireless_scan (gpointer user_data) scan_results->scan_head.result = NULL; } else if ((err == -1) && (errno == ETIME)) - syslog (LOG_ERR, "Warning: the wireless card (%s) requires too much time for scans. Its driver needs to be fixed.", nm_device_get_iface (dev)); + nm_warning ("The wireless card (%s) requires too much time for scans. " + "Its driver needs to be fixed.", nm_device_get_iface (dev)); nm_device_set_mode (dev, orig_mode); /* Only set frequency if ad-hoc mode */ @@ -3636,7 +3640,7 @@ static gboolean supports_ethtool_carrier_detect (NMDevice *dev) if ((sk = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { - syslog (LOG_ERR, "cannot open socket on interface %s for MII detect; errno=%d", nm_device_get_iface (dev), errno); + nm_warning ("cannot open socket on interface %s for MII detect; errno=%d", nm_device_get_iface (dev), errno); return (FALSE); } @@ -3687,7 +3691,7 @@ static gboolean supports_mii_carrier_detect (NMDevice *dev) if ((sk = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { - syslog (LOG_ERR, "cannot open socket on interface %s for MII detect; errno=%d", nm_device_get_iface (dev), errno); + nm_warning ("cannot open socket on interface %s for MII detect; errno=%d", nm_device_get_iface (dev), errno); return (FALSE); } diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c index 189c9194f4..ab4c3571fa 100644 --- a/src/NetworkManagerPolicy.c +++ b/src/NetworkManagerPolicy.c @@ -33,6 +33,7 @@ #include "NetworkManagerAP.h" #include "NetworkManagerAPList.h" #include "NetworkManagerDbus.h" +#include "nm-utils.h" /* @@ -128,7 +129,7 @@ static NMDevice * nm_policy_auto_get_best_device (NMData *data) } #if 0 - syslog (LOG_NOTICE, "AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (best_wired_dev) : "(null)", + nm_info ("AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (best_wired_dev) : "(null)", best_wireless_dev ? nm_device_get_iface (best_wireless_dev) : "(null)", best_wireless_dev ? nm_device_get_essid (best_wireless_dev) : "null" ); #endif @@ -208,7 +209,7 @@ static NMDevice * nm_policy_get_best_device (NMDevice *switch_to_dev, NMData *da /* Ensure we support this driver */ if (best_dev && (nm_device_get_driver_support_level (best_dev) == NM_DRIVER_UNSUPPORTED)) { - syslog (LOG_ERR, "nm_policy_get_best_device(): tried to switch to unsupported device '%s'!\n", nm_device_get_iface (best_dev)); + nm_warning ("nm_policy_get_best_device(): tried to switch to unsupported device '%s'!\n", nm_device_get_iface (best_dev)); best_dev = NULL; } @@ -261,7 +262,7 @@ gboolean nm_policy_activation_finish (gpointer user_data) nm_ap_unref (ap); } } - syslog (LOG_INFO, "Activation (%s) successful, device activated.", nm_device_get_iface (data->active_device)); + nm_info ("Activation (%s) successful, device activated.", nm_device_get_iface (data->active_device)); break; case DEVICE_ACTIVATION_FAILED: @@ -278,10 +279,10 @@ gboolean nm_policy_activation_finish (gpointer user_data) /* Unref because nm_device_get_best_ap() refs it before returning. */ nm_ap_unref (ap); } - syslog (LOG_INFO, "Activation (%s) failed for access point (%s)", nm_device_get_iface (dev), ap ? nm_ap_get_essid (ap) : "(none)"); + nm_info ("Activation (%s) failed for access point (%s)", nm_device_get_iface (dev), ap ? nm_ap_get_essid (ap) : "(none)"); } else - syslog (LOG_INFO, "Activation (%s) failed.", nm_device_get_iface (dev)); + nm_info ("Activation (%s) failed.", nm_device_get_iface (dev)); if (data->active_device == dev) data->active_device = NULL; nm_device_deactivate (dev, FALSE); @@ -352,21 +353,21 @@ static gboolean nm_policy_state_update (gpointer user_data) if (best_dev != app_data->active_device) { if (best_dev) - syslog (LOG_INFO, " SWITCH: best device changed"); + nm_info (" SWITCH: best device changed"); else - syslog (LOG_INFO, " SWITCH: old device no longer good, but no better device was available"); + nm_info (" SWITCH: old device no longer good, but no better device was available"); do_switch = TRUE; /* Device changed */ } else if (best_dev) { if (nm_device_is_wireless (best_dev) && !nm_device_is_activating (best_dev) && nm_device_need_ap_switch (best_dev)) { - syslog (LOG_INFO, " SWITCH: need to associate with new access point or create a wireless network."); + nm_info (" SWITCH: need to associate with new access point or create a wireless network."); do_switch = TRUE; } else if (!nm_device_is_activating (best_dev) && !nm_device_get_ip4_address (best_dev)) { - syslog (LOG_INFO, " SWITCH: need to get an IP address."); + nm_info (" SWITCH: need to get an IP address."); do_switch = TRUE; } } @@ -472,7 +473,7 @@ static gboolean nm_policy_allowed_ap_list_update (gpointer user_data) g_return_val_if_fail (data != NULL, FALSE); - syslog (LOG_INFO, "Updating allowed wireless network lists."); + nm_info ("Updating allowed wireless network lists."); /* Query info daemon for network lists if its now running */ if (data->allowed_ap_list) diff --git a/src/NetworkManagerSystem.c b/src/NetworkManagerSystem.c index cca0364e50..489cfe5401 100644 --- a/src/NetworkManagerSystem.c +++ b/src/NetworkManagerSystem.c @@ -41,6 +41,7 @@ #include #include "NetworkManagerSystem.h" #include "NetworkManagerDevice.h" +#include "nm-utils.h" static int nm_system_open_sock (void) { @@ -51,7 +52,7 @@ static int nm_system_open_sock (void) if (fd >= 0) return (fd); - syslog (LOG_ERR, "nm_system_open_sock() could not get network control socket."); + nm_warning ("nm_system_open_sock() could not get network control socket."); return (-1); } @@ -76,11 +77,11 @@ gboolean nm_system_device_set_ip4_address (NMDevice *dev, int ip4_address) p->sin_family = AF_INET; p->sin_addr.s_addr = ip4_address; if (ioctl (sk, SIOCSIFADDR, &ifr) == -1) - syslog (LOG_ERR,"nm_system_device_set_ip4_address (%s): failed to set IPv4 address!", iface); + nm_warning ("nm_system_device_set_ip4_address (%s): failed to set IPv4 address!", iface); else { success = TRUE; - syslog (LOG_INFO, "Your IP address = %u.%u.%u.%u\n", + nm_info ("Your IP address = %u.%u.%u.%u\n", ((unsigned char *)&ip4_address)[0], ((unsigned char *)&ip4_address)[1], ((unsigned char *)&ip4_address)[2], ((unsigned char *)&ip4_address)[3]); } @@ -110,7 +111,7 @@ gboolean nm_system_device_set_ip4_netmask (NMDevice *dev, int ip4_netmask) p->sin_family = AF_INET; p->sin_addr.s_addr = ip4_netmask; if (ioctl (sk, SIOCSIFNETMASK, &ifr) == -1) - syslog (LOG_ERR,"nm_system_device_set_ip4_netmask (%s): failed to set IPv4 netmask! errno = %s", iface, strerror (errno)); + nm_warning ("nm_system_device_set_ip4_netmask (%s): failed to set IPv4 netmask! errno = %s", iface, strerror (errno)); else success = TRUE; @@ -139,7 +140,7 @@ gboolean nm_system_device_set_ip4_broadcast (NMDevice *dev, int ip4_broadcast) p->sin_family = AF_INET; p->sin_addr.s_addr = ip4_broadcast; if (ioctl (sk, SIOCSIFBRDADDR, &ifr) == -1) - syslog (LOG_ERR,"nm_system_device_set_ip4_netmask (%s): failed to set IPv4 netmask!", iface); + nm_warning ("nm_system_device_set_ip4_netmask (%s): failed to set IPv4 netmask!", iface); else success = TRUE; @@ -202,11 +203,11 @@ gboolean nm_system_device_set_ip4_default_route (NMDevice *dev, int ip4_def_rout if ( ioctl (sk, SIOCADDRT, &rtent) == 0 ) success = TRUE; else - syslog (LOG_ERR,"nm_system_device_set_ip4_default_route (%s): failed to set IPv4 default route! errno = %d", iface, errno); + nm_warning ("nm_system_device_set_ip4_default_route (%s): failed to set IPv4 default route! errno = %d", iface, errno); } } else - syslog (LOG_ERR,"nm_system_device_set_ip4_default_route (%s): failed to set IPv4 default route! errno = %d", iface, errno); + nm_warning ("nm_system_device_set_ip4_default_route (%s): failed to set IPv4 default route! errno = %d", iface, errno); } else success = TRUE; diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index 59fc5caa35..91b4240632 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -28,6 +28,7 @@ #include "NetworkManager.h" #include "NetworkManagerUtils.h" +#include "nm-utils.h" typedef struct MutexDesc @@ -92,7 +93,7 @@ gboolean nm_try_acquire_mutex (GMutex *mutex, const char *func) if (func) { MutexDesc *desc = nm_find_mutex_desc (mutex); - syslog (LOG_DEBUG, "MUTEX: <%s %p> acquired by %s", desc ? desc->desc : "(none)", mutex, func); + nm_debug ("MUTEX: <%s %p> acquired by %s", desc ? desc->desc : "(none)", mutex, func); } #endif return (TRUE); @@ -102,7 +103,7 @@ gboolean nm_try_acquire_mutex (GMutex *mutex, const char *func) if (func) { MutexDesc *desc = nm_find_mutex_desc (mutex); - syslog (LOG_DEBUG, "MUTEX: <%s %p> FAILED to be acquired by %s", desc ? desc->desc : "(none)", mutex, func); + nm_debug ("MUTEX: <%s %p> FAILED to be acquired by %s", desc ? desc->desc : "(none)", mutex, func); } #endif return (FALSE); @@ -121,7 +122,7 @@ void nm_lock_mutex (GMutex *mutex, const char *func) if (func) { MutexDesc *desc = nm_find_mutex_desc (mutex); - syslog (LOG_DEBUG, "MUTEX: <%s %p> being acquired by %s", desc ? desc->desc : "(none)", mutex, func); + nm_debug ("MUTEX: <%s %p> being acquired by %s", desc ? desc->desc : "(none)", mutex, func); } #endif g_mutex_lock (mutex); @@ -142,7 +143,7 @@ void nm_unlock_mutex (GMutex *mutex, const char *func) if (func) { MutexDesc *desc = nm_find_mutex_desc (mutex); - syslog (LOG_DEBUG, "MUTEX: <%s %p> released by %s", desc ? desc->desc : "(none)", mutex, func); + nm_debug ("MUTEX: <%s %p> released by %s", desc ? desc->desc : "(none)", mutex, func); } #endif @@ -240,13 +241,13 @@ int nm_spawn_process (char *args) GError *error2 = NULL; if (!g_spawn_sync ("/", argv, NULL, 0, NULL, NULL, &so, &se, &exit_status, &error2)) - syslog (LOG_ERR, "nm_spawn_process('%s'): could not spawn process. (%s)\n", args, error2->message); + nm_warning ("nm_spawn_process('%s'): could not spawn process. (%s)\n", args, error2->message); if (so) g_free(so); if (se) g_free(se); if (argv) g_strfreev (argv); if (error2) g_error_free (error2); - } else syslog (LOG_ERR, "nm_spawn_process('%s'): could not parse arguments (%s)\n", args, error->message); + } else nm_warning ("nm_spawn_process('%s'): could not parse arguments (%s)\n", args, error->message); if (error) g_error_free (error); @@ -407,15 +408,15 @@ NMDriverSupportLevel nm_get_driver_support_level (LibHalContext *ctx, NMDevice * switch (level) { case NM_DRIVER_SEMI_SUPPORTED: - syslog (LOG_INFO, "%s: Driver support level for '%s' is semi-supported", + nm_info ("%s: Driver support level for '%s' is semi-supported", nm_device_get_iface (dev), driver); break; case NM_DRIVER_FULLY_SUPPORTED: - syslog (LOG_INFO, "%s: Driver support level for '%s' is fully-supported", + nm_info ("%s: Driver support level for '%s' is fully-supported", nm_device_get_iface (dev), driver); break; default: - syslog (LOG_INFO, "%s: Driver support level for '%s' is unsupported", + nm_info ("%s: Driver support level for '%s' is unsupported", nm_device_get_iface (dev), driver); break; } diff --git a/src/NetworkManagerWireless.c b/src/NetworkManagerWireless.c index 153c7fcc3a..d77e4f9a8a 100644 --- a/src/NetworkManagerWireless.c +++ b/src/NetworkManagerWireless.c @@ -140,7 +140,7 @@ int nm_wireless_qual_to_percent (const struct iw_quality *qual, const struct iw_ g_return_val_if_fail (avg_qual != NULL, -1); #if IW_QUAL_DEBUG -syslog (LOG_DEBUG, "QL: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X ** MAX: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X", +nm_debug ("QL: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X ** MAX: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X", (__s8)qual->qual, qual->qual, qual->qual, (__s8)qual->level, qual->level, qual->level, (__s8)qual->noise, qual->noise, qual->noise, (__s8)max_qual->qual, max_qual->qual, max_qual->qual, (__s8)max_qual->level, max_qual->level, max_qual->level, (__s8)max_qual->noise, max_qual->noise, max_qual->noise); #endif @@ -192,7 +192,7 @@ syslog (LOG_DEBUG, "QL: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X ** ((double)max_level - (double)level) / ((double)max_level - (double)noise))); #if IW_QUAL_DEBUG - syslog (LOG_DEBUG, "QL1: level_percent is %d. max_level %d, level %d, noise_floor %d.", level_percent, max_level, level, noise); + nm_debug ("QL1: level_percent is %d. max_level %d, level %d, noise_floor %d.", level_percent, max_level, level, noise); #endif } else if ((max_qual->level != 0) && !(max_qual->updated & IW_QUAL_LEVEL_INVALID) /* Valid max_qual->level as upper bound */ @@ -206,7 +206,7 @@ syslog (LOG_DEBUG, "QL: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X ** level = CLAMP (level, 0, max_qual->level); level_percent = (int)(100 * ((double)level / (double)max_qual->level)); #if IW_QUAL_DEBUG - syslog (LOG_DEBUG, "QL2: level_percent is %d. max_level %d, level %d.", level_percent, max_qual->level, level); + nm_debug ("QL2: level_percent is %d. max_level %d, level %d.", level_percent, max_qual->level, level); #endif } @@ -215,7 +215,7 @@ syslog (LOG_DEBUG, "QL: qual %d/%u/0x%X, level %d/%u/0x%X, noise %d/%u/0x%X ** percent = level_percent; #if IW_QUAL_DEBUG - syslog (LOG_DEBUG, "QL: Final quality %% is %d (%d).", percent, CLAMP (percent, 0, 100)); + nm_debug ("QL: Final quality %% is %d (%d).", percent, CLAMP (percent, 0, 100)); #endif return (CLAMP (percent, 0, 100)); } diff --git a/src/autoip.c b/src/autoip.c index 4fb8f90d92..746de4bf9a 100644 --- a/src/autoip.c +++ b/src/autoip.c @@ -33,6 +33,7 @@ #include "NetworkManager.h" #include "NetworkManagerDevice.h" #include "NetworkManagerMain.h" +#include "nm-utils.h" // Times here are in seconds #define LINKLOCAL_ADDR 0xa9fe0000 @@ -98,7 +99,7 @@ static gboolean arp(int fd, struct sockaddr *saddr, int op, /* send it */ if (sendto (fd, &p, sizeof (p), 0, saddr, sizeof (*saddr)) < 0) - syslog (LOG_ERR, "autoip ARP sendto() failed."); + nm_warning ("autoip ARP sendto() failed."); else success = TRUE; @@ -146,12 +147,12 @@ static int peekfd (NMDevice *dev, int sk, struct timeval *timeout) * to stop with iface->cease and check our timeout. */ gettimeofday (&now, NULL); -// syslog (LOG_INFO, "autoip waiting for data, overall timeout = {%ds, %dus}\n", (int)timeout->tv_sec, (int)timeout->tv_usec); +// nm_info ("autoip waiting for data, overall timeout = {%ds, %dus}\n", (int)timeout->tv_sec, (int)timeout->tv_usec); while (timeval_subtract (&diff, timeout, &now) == 0) { fd_set fs; struct timeval wait = {1, 0}; -// syslog (LOG_INFO, "autoip waiting for data, remaining timeout = {%ds, %dus}\n", (int)diff.tv_sec, (int)diff.tv_usec); +// nm_info ("autoip waiting for data, remaining timeout = {%ds, %dus}\n", (int)diff.tv_sec, (int)diff.tv_usec); FD_ZERO (&fs); FD_SET (sk, &fs); @@ -191,14 +192,14 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) /* open an ARP socket */ if ((fd = socket (PF_PACKET, SOCK_PACKET, htons (ETH_P_ARP))) < 0) { - syslog (LOG_ERR, "%s: Couldn't open network control socket.", nm_device_get_iface (dev)); + nm_warning ("%s: Couldn't open network control socket.", nm_device_get_iface (dev)); goto out; } /* bind to the ARP socket */ if (bind (fd, &saddr, sizeof (saddr)) < 0) { - syslog (LOG_ERR, "%s: Couldn't bind to the device.", nm_device_get_iface (dev)); + nm_warning ("%s: Couldn't bind to the device.", nm_device_get_iface (dev)); goto out; } @@ -225,7 +226,7 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) if (nprobes < PROBE_NUM) { - syslog (LOG_INFO, "autoip: Sending probe #%d for IP address %s.", nprobes, inet_ntoa (ip)); + nm_info ("autoip: Sending probe #%d for IP address %s.", nprobes, inet_ntoa (ip)); arp (fd, &saddr, ARPOP_REQUEST, &addr, null_ip, &null_addr, ip); nprobes++; gettimeofday (&timeout, NULL); @@ -245,7 +246,7 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) } else if (nannounce < ANNOUNCE_NUM) { - syslog (LOG_INFO, "autoip: Sending announce #%d for IP address %s.", nannounce, inet_ntoa (ip)); + nm_info ("autoip: Sending announce #%d for IP address %s.", nannounce, inet_ntoa (ip)); arp (fd, &saddr, ARPOP_REQUEST, &addr, ip, &addr, ip); nannounce++; gettimeofday (&timeout, NULL); @@ -260,7 +261,7 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) goto out; } - syslog (LOG_INFO, "autoip: Waiting for reply..."); + nm_info ("autoip: Waiting for reply..."); err = peekfd (dev, fd, &timeout); if ((err == RET_DHCP_ERROR) || (err == RET_DHCP_CEASED)) goto out; @@ -268,24 +269,24 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) /* There's some data waiting for us */ if (err == RET_DHCP_SUCCESS) { - syslog (LOG_INFO, "autoip: Got some data to check for reply packet."); + nm_info ("autoip: Got some data to check for reply packet."); /* read ARP packet */ if (recv (fd, &p, sizeof (p), 0) < 0) { - syslog (LOG_ERR, "autoip: packet receive failure, ignoring it."); + nm_warning ("autoip: packet receive failure, ignoring it."); continue; } #ifdef ARP_DEBUG - syslog (LOG_ERR, "autoip: (%s) recv arp type=%d, op=%d, ", nm_device_get_iface (dev), ntohs(p.ethhdr.ether_type), ntohs(p.operation)); + nm_warning ("autoip: (%s) recv arp type=%d, op=%d, ", nm_device_get_iface (dev), ntohs(p.ethhdr.ether_type), ntohs(p.operation)); { struct in_addr a; memcpy (&(a.s_addr), &(p.sInaddr), sizeof (a.s_addr)); - syslog (LOG_ERR, " source = %s %02X:%02X:%02X:%02X:%02X:%02X, ", inet_ntoa (a), + nm_warning (" source = %s %02X:%02X:%02X:%02X:%02X:%02X, ", inet_ntoa (a), p.sHaddr[0], p.sHaddr[1], p.sHaddr[2], p.sHaddr[3], p.sHaddr[4], p.sHaddr[5]); memcpy (&(a.s_addr), &(p.tInaddr), sizeof (a.s_addr)); - syslog (LOG_ERR, " target = %s %02X:%02X:%02X:%02X:%02X:%02X\n", inet_ntoa (a), + nm_warning (" target = %s %02X:%02X:%02X:%02X:%02X:%02X\n", inet_ntoa (a), p.tHaddr[0], p.tHaddr[1], p.tHaddr[2], p.tHaddr[3], p.tHaddr[4], p.tHaddr[5]); } #endif @@ -296,7 +297,7 @@ gboolean get_autoip (NMDevice *dev, struct in_addr *out_ip) && (memcmp (&addr, &p.tHaddr, ETH_ALEN) != 0)) { #ifdef ARP_DEBUG - syslog(LOG_ERR, "autoip: (%s) ARP conflict for IP address %s.\n", nm_device_get_iface (dev), inet_ntoa(ip)); + nm_warning ("autoip: (%s) ARP conflict for IP address %s.\n", nm_device_get_iface (dev), inet_ntoa(ip)); #endif /* Ok, start all over again */ diff --git a/src/backends/NetworkManagerDebian.c b/src/backends/NetworkManagerDebian.c index b42653669f..86d39f2050 100644 --- a/src/backends/NetworkManagerDebian.c +++ b/src/backends/NetworkManagerDebian.c @@ -168,7 +168,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) iface, inet_ntoa (temp_addr)); if ((err = nm_spawn_process (buf))) { - syslog (LOG_ERR, "Error: Duplicate address '%s' detected for " + nm_warning ("Error: Duplicate address '%s' detected for " "device '%s' \n", iface, inet_ntoa (temp_addr)); goto error; } @@ -185,7 +185,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) g_free (s_tmp2); if ((err = nm_spawn_process (buf))) { - syslog (LOG_ERR, "Error: could not set network configuration for " + nm_warning ("Error: could not set network configuration for " "device '%s' using command:\n '%s'", iface, buf); goto error; @@ -210,7 +210,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) inet_ntoa (temp_addr), iface); if ((err = nm_spawn_process (buf))) { - syslog (LOG_ERR, "Error: could not set default route using " + nm_warning ("Error: could not set default route using " "command:\n '%s'", buf); goto error; } @@ -426,7 +426,7 @@ void nm_system_device_update_config_info (NMDevice *dev) if (!use_dhcp && (!ip4_address || !ip4_gateway || !ip4_netmask)) { - syslog (LOG_ERR, "Error: network configuration for device '%s' was invalid (non-DHCP configuration," + nm_warning ("Error: network configuration for device '%s' was invalid (non-DHCP configuration," " but no address/gateway specificed). Will use DHCP instead.\n", nm_device_get_iface (dev)); use_dhcp = TRUE; } @@ -443,12 +443,12 @@ void nm_system_device_update_config_info (NMDevice *dev) nm_device_config_set_ip4_broadcast (dev, ip4_broadcast); #if 0 - syslog (LOG_DEBUG, "------ Config (%s)", nm_device_get_iface (dev)); - syslog (LOG_DEBUG, " DHCP=%d\n", use_dhcp); - syslog (LOG_DEBUG, " ADDR=%d\n", ip4_address); - syslog (LOG_DEBUG, " GW=%d\n", ip4_gateway); - syslog (LOG_DEBUG, " NM=%d\n", ip4_netmask); - syslog (LOG_DEBUG, "---------------------\n"); + nm_debug ("------ Config (%s)", nm_device_get_iface (dev)); + nm_debug (" DHCP=%d\n", use_dhcp); + nm_debug (" ADDR=%d\n", ip4_address); + nm_debug (" GW=%d\n", ip4_gateway); + nm_debug (" NM=%d\n", ip4_netmask); + nm_debug ("---------------------\n"); #endif out: diff --git a/src/backends/NetworkManagerGentoo.c b/src/backends/NetworkManagerGentoo.c index bbabb0383f..01b6e827aa 100644 --- a/src/backends/NetworkManagerGentoo.c +++ b/src/backends/NetworkManagerGentoo.c @@ -108,7 +108,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) char *buf; char *addr, *netmask, *broadcast, *gateway; - syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n"); + nm_warning ("nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n"); /* Extract the addresses back into strings */ @@ -129,16 +129,16 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) /* Set the IP/broadcast */ buf = g_strdup_printf("/sbin/ip addr add local %s dev %s broadcast %s %s", addr, iface, broadcast, iface); - syslog (LOG_WARNING, "Running: %s", buf); + nm_warning ("Running: %s", buf); /* Set the gateway */ buf = g_strdup_printf("/sbin/ip route replace default dev %s via %s", iface, gateway); - syslog (LOG_WARNING, "Running: %s", buf); + nm_warning ("Running: %s", buf); /* Inform other computers the we are on network */ buf = g_strdup_printf ("/sbin/arping -q -A -c 1 -I %s %s", iface, addr); - syslog (LOG_WARNING, "Running: %s", buf); + nm_warning ("Running: %s", buf); buf = g_strdup_printf ("/sbin/arping -q -U -c 1 -I %s %s", iface, addr); - syslog (LOG_WARNING, "Running: %s", buf); + nm_warning ("Running: %s", buf); return(TRUE); @@ -289,7 +289,7 @@ void nm_system_device_update_config_info (NMDevice *dev) if (strncmp (&buffer[strlen(confline) - strlen(nm_device_get_iface (dev))], nm_device_get_iface (dev), strlen(nm_device_get_iface (dev))) != 0) { - syslog (LOG_WARNING, "System config file '%s' does not define device '%s'\n", + nm_warning ("System config file '%s' does not define device '%s'\n", cfg_file_path, nm_device_get_iface (dev)); break; } diff --git a/src/backends/NetworkManagerRedHat.c b/src/backends/NetworkManagerRedHat.c index 21215c8684..dcd3a9f764 100644 --- a/src/backends/NetworkManagerRedHat.c +++ b/src/backends/NetworkManagerRedHat.c @@ -26,6 +26,7 @@ #include "NetworkManagerSystem.h" #include "NetworkManagerUtils.h" #include "NetworkManagerDevice.h" +#include "nm-utils.h" #include "shvar.h" /* @@ -183,7 +184,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) g_free (s_tmp2); if ((err = nm_spawn_process (buf))) { - syslog (LOG_ERR, "Error: could not set network configuration for device '%s' using command:\n '%s'", iface, buf); + nm_warning ("Error: could not set network configuration for device '%s' using command:\n '%s'", iface, buf); goto error; } g_free (buf); @@ -203,7 +204,7 @@ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) buf = g_strdup_printf ("/sbin/ip route replace default via %s dev %s", inet_ntoa (temp_addr), iface); if ((err = nm_spawn_process (buf))) { - syslog (LOG_ERR, "Error: could not set default route using command\n '%s'", buf); + nm_warning ("Error: could not set default route using command\n '%s'", buf); goto error; } g_free (buf); @@ -293,7 +294,7 @@ void nm_system_update_dns (void) if (nm_spawn_process ("/etc/init.d/nscd status") != 0) nm_spawn_process ("/etc/init.d/nscd restart"); - syslog (LOG_ERR, "Clearing nscd hosts cache."); + nm_warning ("Clearing nscd hosts cache."); nm_spawn_process ("/usr/sbin/nscd -i hosts"); #else nm_spawn_process ("/usr/bin/killall -q nscd"); @@ -332,7 +333,7 @@ void nm_system_restart_mdns_responder (void) fclose (fp); if (res == 1) { - syslog (LOG_INFO, "Restarting mDNSResponder.\n"); + nm_info ("Restarting mDNSResponder.\n"); kill (pid, SIGUSR1); } } @@ -469,7 +470,7 @@ void nm_system_device_update_config_info (NMDevice *dev) if (!use_dhcp && (!ip4_address || !ip4_gateway || !ip4_netmask)) { - syslog (LOG_ERR, "Error: network configuration for device '%s' was invalid (non-DCHP configuration," + nm_warning ("Error: network configuration for device '%s' was invalid (non-DCHP configuration," " but no address/gateway specificed). Will use DHCP instead.\n", nm_device_get_iface (dev)); use_dhcp = TRUE; } @@ -486,12 +487,12 @@ void nm_system_device_update_config_info (NMDevice *dev) nm_device_config_set_ip4_broadcast (dev, ip4_broadcast); #if 0 - syslog (LOG_DEBUG, "------ Config (%s)", nm_device_get_iface (dev)); - syslog (LOG_DEBUG, " DHCP=%d\n", use_dhcp); - syslog (LOG_DEBUG, " ADDR=%d\n", ip4_address); - syslog (LOG_DEBUG, " GW=%d\n", ip4_gateway); - syslog (LOG_DEBUG, " NM=%d\n", ip4_netmask); - syslog (LOG_DEBUG, "---------------------\n"); + nm_debug ("------ Config (%s)", nm_device_get_iface (dev)); + nm_debug (" DHCP=%d\n", use_dhcp); + nm_debug (" ADDR=%d\n", ip4_address); + nm_debug (" GW=%d\n", ip4_gateway); + nm_debug (" NM=%d\n", ip4_netmask); + nm_debug ("---------------------\n"); #endif out: diff --git a/src/backends/NetworkManagerSlackware.c b/src/backends/NetworkManagerSlackware.c index 86edd11e2d..1d143f4b99 100644 --- a/src/backends/NetworkManagerSlackware.c +++ b/src/backends/NetworkManagerSlackware.c @@ -96,7 +96,7 @@ void nm_system_device_flush_addresses (NMDevice *dev) */ gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev) { - syslog (LOG_WARNING, "nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n"); + nm_warning ("nm_system_device_setup_static_ip4_config() is not implemented yet for this distribution.\n"); } diff --git a/src/backends/interface_parser.c b/src/backends/interface_parser.c index f44068667b..4c13e19947 100644 --- a/src/backends/interface_parser.c +++ b/src/backends/interface_parser.c @@ -74,7 +74,7 @@ void ifparser_init() int ret = 0; if (inp == NULL) { - syslog (LOG_ERR, "Error: Can't open %s\n",INTERFACES); + nm_warning ("Error: Can't open %s\n",INTERFACES); return; } first = last = NULL; @@ -93,7 +93,7 @@ void ifparser_init() SPACE_OR_TAB(line,space) if (space == NULL) { - syslog (LOG_ERR, "Error: Can't parse interface line '%s'\n",line); + nm_warning ("Error: Can't parse interface line '%s'\n",line); continue; } space[0] = '\0'; @@ -104,7 +104,7 @@ void ifparser_init() char *space2 = strchr(space+1,' '); if (space2 == NULL) { - syslog (LOG_ERR, "Error: Can't parse iface line '%s'\n",space+1); + nm_warning ("Error: Can't parse iface line '%s'\n",space+1); continue; } space2[0]='\0'; @@ -115,7 +115,7 @@ void ifparser_init() space = strchr(space2+1,' '); if (space == NULL) { - syslog (LOG_ERR, "Error: Can't parse data '%s'\n",space2+1); + nm_warning ("Error: Can't parse data '%s'\n",space2+1); continue; } space[0] = '\0'; diff --git a/src/nm-dbus-nm.c b/src/nm-dbus-nm.c index 756a111039..fb8dd7f3f7 100644 --- a/src/nm-dbus-nm.c +++ b/src/nm-dbus-nm.c @@ -190,8 +190,8 @@ static DBusMessage *nm_dbus_nm_set_active_device (DBusConnection *connection, DB reply = nm_dbus_create_error_message (message, NM_DBUS_INTERFACE, "InvalidArguments", "NetworkManager::setActiveDevice called with invalid arguments."); goto out; - } else syslog (LOG_INFO, "FORCE: device '%s'", dev_path); - } else syslog (LOG_INFO, "FORCE: device '%s', network '%s'", dev_path, network); + } else nm_info ("FORCE: device '%s'", dev_path); + } else nm_info ("FORCE: device '%s', network '%s'", dev_path, network); dev_path = nm_dbus_unescape_object_path (dev_path); @@ -224,7 +224,6 @@ out: return (reply); } - /* * nm_dbus_nm_create_wireless_network * @@ -256,7 +255,7 @@ static DBusMessage *nm_dbus_nm_create_wireless_network (DBusConnection *connecti reply = nm_dbus_create_error_message (message, NM_DBUS_INTERFACE, "InvalidArguments", "NetworkManager::createWirelessNetwork called with invalid arguments."); return (reply); - } else syslog (LOG_INFO, "Creating network '%s' on device '%s'.", network, dev_path); + } else nm_info ("Creating network '%s' on device '%s'.", network, dev_path); dev_path = nm_dbus_unescape_object_path (dev_path); dev = nm_dbus_get_device_from_object_path (data->data, dev_path); diff --git a/src/nm-netlink-monitor.c b/src/nm-netlink-monitor.c index e7f8849ba4..e7d1d7819a 100644 --- a/src/nm-netlink-monitor.c +++ b/src/nm-netlink-monitor.c @@ -37,6 +37,7 @@ #include #include "nm-netlink-monitor.h" +#include "nm-utils.h" #define NM_NETLINK_MONITOR_EVENT_CONDITIONS \ ((GIOCondition) (G_IO_IN | G_IO_PRI)) @@ -225,7 +226,6 @@ nm_netlink_monitor_init (NmNetlinkMonitor *monitor) monitor->priv = G_TYPE_INSTANCE_GET_PRIVATE (monitor, NM_TYPE_NETLINK_MONITOR, NmNetlinkMonitorPrivate); - monitor->priv->context = NULL; monitor->priv->io_channel = NULL; monitor->priv->event_source = NULL; @@ -313,10 +313,113 @@ nm_netlink_monitor_detach (NmNetlinkMonitor *monitor) monitor->priv->context = NULL; } -void -nm_netlink_monitor_request_status (NmNetlinkMonitor *monitor) +gboolean +nm_netlink_monitor_request_status (NmNetlinkMonitor *monitor, + GError **error) { - + typedef struct + { + struct nlmsghdr header; + struct rtgenmsg request; + } NmNetlinkMonitorStatusPacket; + NmNetlinkMonitorStatusPacket packet = { { 0 } }; + struct sockaddr_nl recipient = { 0 }; + static guint32 sequence_number; + int fd, saved_errno; + ssize_t num_bytes_sent; + size_t num_bytes_to_send, total_bytes_sent; + gdouble max_wait_period, now; + const gchar *buffer; + GError *socket_error; + + fd = g_io_channel_unix_get_fd (monitor->priv->io_channel); + + recipient.nl_family = AF_NETLINK; + recipient.nl_pid = 0; /* going to kernel */ + recipient.nl_groups = RTMGRP_LINK; + + packet.header.nlmsg_len = NLMSG_LENGTH (sizeof (struct rtgenmsg)); + packet.header.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST; + packet.header.nlmsg_type = RTM_GETLINK; + packet.header.nlmsg_pid = getpid (); + /* Might be good to generate a unique sequence number and track + the response */ + packet.header.nlmsg_seq = sequence_number << 16; + sequence_number++; + + packet.request.rtgen_family = AF_UNSPEC; + + nm_get_timestamp (&now); + + /* only block for around 1.5 seconds + * FIXME: maybe too long? */ + max_wait_period = now + 1.5; + num_bytes_sent = 0; + buffer = (const gchar *) &packet; + num_bytes_to_send = sizeof (packet); + total_bytes_sent = 0; + socket_error = NULL; + do + { + num_bytes_sent = sendto (fd, + buffer + total_bytes_sent, + num_bytes_to_send, + MSG_DONTWAIT, + (struct sockaddr *) &recipient, + sizeof (recipient)); + if (num_bytes_sent < 0) + { + saved_errno = errno; + + if ((saved_errno == EAGAIN) || + (saved_errno == EWOULDBLOCK)) + { + nm_get_timestamp (&now); + if ((max_wait_period - now) > G_MINDOUBLE) + { + saved_errno = 0; + continue; + } + } + + socket_error = + g_error_new (NM_NETLINK_MONITOR_ERROR, + NM_NETLINK_MONITOR_ERROR_SENDING_TO_SOCKET, + "%s", g_strerror (saved_errno)); + break; + } + + total_bytes_sent += num_bytes_sent; + num_bytes_to_send -= num_bytes_sent; + + nm_get_timestamp (&now); + + if ((max_wait_period - now) < G_MINDOUBLE) + { + socket_error = + g_error_new (NM_NETLINK_MONITOR_ERROR, + NM_NETLINK_MONITOR_ERROR_SENDING_TO_SOCKET, + _("operation took too long")); + break; + } + } while (num_bytes_to_send > 0); + + if (socket_error != NULL) + { + if (error != NULL) + g_propagate_error (error, socket_error); + else + { + g_signal_emit (G_OBJECT (monitor), + nm_netlink_monitor_signals[ERROR], + 0, socket_error); + g_error_free (socket_error); + } + + return FALSE; + } + + return TRUE; } static gboolean @@ -427,7 +530,7 @@ receive_pending_bytes (GIOChannel *channel, if (saved_errno != 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, - NM_NETLINK_MONITOR_ERROR_READING_SOCKET, + NM_NETLINK_MONITOR_ERROR_READING_FROM_SOCKET, _("%s"), g_strerror (saved_errno)); succeeded = FALSE; goto out; diff --git a/src/nm-netlink-monitor.h b/src/nm-netlink-monitor.h index 9594fb37f9..129e123571 100644 --- a/src/nm-netlink-monitor.h +++ b/src/nm-netlink-monitor.h @@ -68,7 +68,8 @@ enum _NmNetlinkMonitorError NM_NETLINK_MONITOR_ERROR_BINDING_TO_SOCKET, NM_NETLINK_MONITOR_ERROR_BAD_SENDER, NM_NETLINK_MONITOR_ERROR_BAD_SOCKET_DATA, - NM_NETLINK_MONITOR_ERROR_READING_SOCKET + NM_NETLINK_MONITOR_ERROR_READING_FROM_SOCKET, + NM_NETLINK_MONITOR_ERROR_SENDING_TO_SOCKET }; GType nm_netlink_monitor_get_type (void) G_GNUC_CONST; @@ -84,6 +85,7 @@ void nm_netlink_monitor_attach (NmNetlinkMonitor *monitor, GMainContext *context); void nm_netlink_monitor_detach (NmNetlinkMonitor *monitor); -void nm_netlink_monitor_request_status (NmNetlinkMonitor *monitor); +gboolean nm_netlink_monitor_request_status (NmNetlinkMonitor *monitor, + GError **error); G_END_DECLS #endif /* NM_NETLINK_MONITOR_H */ diff --git a/test/nminfotest.c b/test/nminfotest.c index d58eafd4cd..e939cae3ac 100644 --- a/test/nminfotest.c +++ b/test/nminfotest.c @@ -66,7 +66,6 @@ char * get_network_string_property (DBusConnection *connection, char *network, c if (dbus_message_get_args (reply, &error, DBUS_TYPE_STRING, &string, DBUS_TYPE_INVALID) && string) { ret_string = g_strdup (string); - dbus_free (string); } dbus_message_unref (reply); @@ -193,7 +192,7 @@ void get_networks_of_type (DBusConnection *connection, NMNetworkType type) } } - dbus_free_string_array (networks); + g_strfreev (networks); } void get_user_key_for_network (DBusConnection *connection) @@ -223,10 +222,10 @@ void get_user_key_for_network (DBusConnection *connection) void set_user_key_for_network (DBusConnection *connection, DBusMessage *message, GMainLoop *loop) { DBusError error; - char *device; - char *network; - char *passphrase; - char *key_type_string; + const char *device; + const char *network; + const char *passphrase; + const char *key_type_string; g_return_if_fail (connection != NULL); g_return_if_fail (message != NULL); @@ -241,10 +240,6 @@ void set_user_key_for_network (DBusConnection *connection, DBusMessage *message, { fprintf( stderr, "Device was '%s'\nNetwork was '%s'\nPassphrase was '%s'\nKey type was '%s'\n", device, network, passphrase, key_type_string); - dbus_free (device); - dbus_free (network); - dbus_free (passphrase); - dbus_free (key_type_string); g_main_loop_quit (loop); } diff --git a/test/nmnetlinktest.c b/test/nmnetlinktest.c new file mode 100644 index 0000000000..582f1a68a2 --- /dev/null +++ b/test/nmnetlinktest.c @@ -0,0 +1,76 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static void +device_added (NmNetlinkMonitor *monitor, + const gchar *device_name) +{ + g_print ("interface '%s' connected\n", device_name); +} + + +static void +device_removed (NmNetlinkMonitor *monitor, + const gchar *device_name) +{ + g_print ("interface '%s' disconnected\n", device_name); +} + +int +main (void) +{ + NmNetlinkMonitor *monitor; + GMainLoop *loop; + GError *error; + + g_type_init (); + + monitor = nm_netlink_monitor_new (); + + error = NULL; + nm_netlink_monitor_open_connection (monitor, &error); + + if (error != NULL) + { + g_printerr ("could not open connection: %s\n", + error->message); + g_error_free (error); + return 1; + } + + loop = g_main_loop_new (NULL, FALSE); + + g_signal_connect (G_OBJECT (monitor), + "interface-connected", + G_CALLBACK (device_added), NULL); + + g_signal_connect (G_OBJECT (monitor), + "interface-disconnected", + G_CALLBACK (device_removed), NULL); + + nm_netlink_monitor_attach (monitor, NULL); + + nm_netlink_monitor_request_status (monitor, &error); + + if (error != NULL) + { + g_printerr ("could not request status of interfaces: %s\n", + error->message); + g_error_free (error); + return 2; + } + + g_main_loop_run (loop); + + return 0; +} diff --git a/test/nmtest.c b/test/nmtest.c index 248bc053c6..2d469c372d 100644 --- a/test/nmtest.c +++ b/test/nmtest.c @@ -296,10 +296,10 @@ void print_device_networks (DBusConnection *connection, const char *path) fprintf( stderr, " %s (%s) Strength: %d%%\n", networks[i], name, get_object_signal_strength (connection, networks[i]) ); - dbus_free (name); + g_free (name); } - dbus_free_string_array (networks); + g_strfreev (networks); } @@ -327,7 +327,7 @@ void print_devices (DBusConnection *connection) fprintf (stderr, " Device type: wireless\n"); fprintf (stderr, " Strength: %d%%\n", get_object_signal_strength (connection, devices[i])); fprintf (stderr, " Active Network: '%s'\n", active_network); - dbus_free (active_network); + g_free (active_network); print_device_networks (connection, devices[i]); fprintf (stderr, "\n"); @@ -338,7 +338,7 @@ void print_devices (DBusConnection *connection) fprintf (stderr, " Device type: unknown\n"); fprintf (stderr, "\n"); } - dbus_free_string_array (devices); + g_strfreev (devices); } @@ -400,7 +400,7 @@ int main( int argc, char *argv[] ) return (1); } fprintf (stderr, "NM Status: '%s'\n", status); - dbus_free (status); + g_free (status); path = get_active_device (connection); fprintf (stderr, "Active device: '%s'\n", path ? path : "(none)"); @@ -408,7 +408,7 @@ int main( int argc, char *argv[] ) { char *name = get_object_name (connection, path); fprintf (stderr, "Active device name: '%s'\n", name ? name : "(none)"); - dbus_free (name); + g_free (name); } print_devices (connection); @@ -419,7 +419,7 @@ int main( int argc, char *argv[] ) set_device_network (connection, path, argv[1]); } - dbus_free (path); + g_free (path); return 0; } diff --git a/utils/nm-utils.h b/utils/nm-utils.h index 0b76704c6d..a3cefc76d1 100644 --- a/utils/nm-utils.h +++ b/utils/nm-utils.h @@ -22,7 +22,78 @@ #ifndef NM_UTILS_H #define NM_UTILS_H +#include +#include + +#define nm_print_backtrace() \ +G_STMT_START \ +{ \ + void *_call_stack[512]; \ + int _call_stack_size; \ + char **_symbols; \ + _call_stack_size = backtrace (_call_stack, \ + G_N_ELEMENTS (_call_stack)); \ + _symbols = backtrace_symbols (_call_stack, _call_stack_size); \ + if (_symbols != NULL) \ + { \ + int _i; \ + _i = 0; \ + g_critical ("traceback:\n"); \ + while (_i < _call_stack_size) \ + { \ + g_critical ("\t%s\n", _symbols[_i]); \ + _i++; \ + } \ + free (_symbols); \ + } \ +} \ +G_STMT_END + +#define nm_get_timestamp(timestamp) \ +G_STMT_START \ +{ \ + GTimeVal _tv; \ + g_get_current_time (&_tv); \ + *timestamp = (_tv.tv_sec * (1.0 * G_USEC_PER_SEC) + \ + _tv.tv_usec) / G_USEC_PER_SEC; \ +} \ +G_STMT_END + +#define nm_info(fmt, args...) \ +G_STMT_START \ +{ \ + g_message ("\t" fmt "\n", ##args); \ +} G_STMT_END + +#define nm_debug(fmt, args...) \ +G_STMT_START \ +{ \ + gdouble _timestamp; \ + nm_get_timestamp (&_timestamp); \ + g_debug ("\t[%f] %s (): " fmt "\n", _timestamp, \ + G_GNUC_PRETTY_FUNCTION, ##args); \ +} G_STMT_END + +#define nm_warning(fmt, args...) \ +G_STMT_START \ +{ \ + g_warning ("\t %s (): " fmt "\n", \ + G_GNUC_PRETTY_FUNCTION, ##args); \ +} G_STMT_END + +#define nm_error(fmt, args...) \ +G_STMT_START \ +{ \ + gdouble _timestamp; \ + nm_get_timestamp (&_timestamp); \ + g_critical ("\t[%f] %s (): " fmt "\n", _timestamp, \ + G_GNUC_PRETTY_FUNCTION, ##args); \ + nm_print_backtrace (); \ + G_BREAKPOINT (); \ +} G_STMT_END + + gchar *nm_dbus_escape_object_path (const gchar *utf8_string); gchar *nm_dbus_unescape_object_path (const gchar *object_path); -#endif +#endif /* NM_UTILS_H */