2004-08-25 21:07:19 +00:00
|
|
|
/* NetworkManager -- Network link manager
|
|
|
|
|
*
|
|
|
|
|
* Matthew Garrett <mjg59@srcf.ucam.org>
|
|
|
|
|
*
|
|
|
|
|
* Heavily based on NetworkManagerRedhat.c by Dan Williams <dcbw@redhat.com>
|
|
|
|
|
*
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
|
* (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
*
|
2004-11-11 02:24:04 +00:00
|
|
|
* (C) Copyright 2004 Tom Parker
|
2004-08-25 21:07:19 +00:00
|
|
|
* (C) Copyright 2004 Matthew Garrett
|
|
|
|
|
* (C) Copyright 2004 Red Hat, Inc.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
#include <signal.h>
|
2004-10-19 02:27:04 +00:00
|
|
|
#include <arpa/inet.h>
|
2004-08-25 21:07:19 +00:00
|
|
|
#include "NetworkManagerSystem.h"
|
|
|
|
|
#include "NetworkManagerUtils.h"
|
|
|
|
|
#include "NetworkManagerDevice.h"
|
2004-11-11 02:24:04 +00:00
|
|
|
#include "interface_parser.h"
|
2005-04-04 16:24:36 +00:00
|
|
|
#include "nm-utils.h"
|
2004-08-25 21:07:19 +00:00
|
|
|
|
2004-11-11 02:24:04 +00:00
|
|
|
#define ARPING "/usr/sbin/arping"
|
|
|
|
|
|
2004-09-07 17:22:04 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_init
|
|
|
|
|
*
|
|
|
|
|
* Initializes the distribution-specific system backend
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_init (void)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-08-25 21:07:19 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_device_flush_routes
|
|
|
|
|
*
|
|
|
|
|
* Flush all routes associated with a network device
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_device_flush_routes (NMDevice *dev)
|
|
|
|
|
{
|
2004-10-19 02:27:04 +00:00
|
|
|
char *buf;
|
2004-08-25 21:07:19 +00:00
|
|
|
|
|
|
|
|
g_return_if_fail (dev != NULL);
|
|
|
|
|
|
2004-08-31 Dan Williams <dcbw@redhat.com>
* Remove 'debug' extern global from all files since we now
use syslog()
* src/NetworkManager.[ch]
- Break out routine that get the net.interface property from HAL,
removing that logic from nm_create_device_and_add_to_list()
- (nm_create_device_and_add_to_list): make this a bit more general so
it doesn't do the talking to HAL. Also add arguments to facilitate
the create of test devices.
- (nm_data_mark_state_changed): rename from nm_data_set_state_modified()
- (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices"
which makes NetworkManager listen for dbus commands to create test
devices, which have no backing hardware. Use when you're on a plane
for example, and/or forgot your wireless card at home. Test devices
_cannot_ be created unless NM is started with --enable-test-devices.
* src/NetworkManagerDbus.[ch]
- New "getLinkActive" method for devices
- New "setLinkActive" method for devices (only works on test devices)
- New "createTestDevice" method on NetworkManager object to create a test
device of a specified type (ie wired, wireless). UDI is created from
scratch, as is the interface name. Only works when NM is started with
--enable-test-devices switch.
- New "removeTestDevice" method on NetworkManager object which removes a
test device. Only works when NM is started with --enable-test-devices
* src/NetworkManagerDevice.[ch]
- Logic to facilitate test devices. Add variables to NMDevice struct to indicate
whether a device is a test device or not, and what its link status is.
- Deal with test devices in most functions. For those that work directly on hardware
special-case test devices.
- (nm_device_new): don't create a test device if test devices weren't enabled on the
command-line.
- (nm_device_update_link_active): split out logic for wired and wireless device link
checking to separate functions to facilitate test device link checking.
- (nm_device_set_enc_key): Since some drivers for wireless cards are daft and
don't make a distinction between System Authentication and Encryption
(namely Cisco aironet), we use Open System auth when setting a WEP key
on the card. We don't deal with Shared Key auth yet.
- (nm_device_activation_worker): split the activation cancel check logic out into
a separate routine nm_device_activation_cancel_if_needed()
- (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel()
- (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create
a list of fake access points that they can "see"
- (nm_device_is_test_device): return whether or not a device is a test device
* src/NetworkManagerPolicy.c
- (nm_policy_get_best_device): attempt to deal with wireless network selection,
previously if you "locked"/forced NM to use a wireless device but then
selected a wireless network for NM to use, it would switch to a wired device.
So, if the active device is wireless and it has a "forced" best AP, use it
if the "forced" best AP is still valid
- (nm_state_modification_monitor): deal with NULL best devices, for example
there were no usable network devices, or the last one was removed
* src/backends/NetworkManager*.c
- Deal with test devices, mostly just return success for operations like getting
a DHCP address
* test/nmtestdevices.c
- Test tool to create/remove/link-switch test devices
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
|
|
|
/* Not really applicable for test devices */
|
|
|
|
|
if (nm_device_is_test_device (dev))
|
|
|
|
|
return;
|
|
|
|
|
|
2004-08-25 21:07:19 +00:00
|
|
|
/* Remove routing table entries */
|
2004-12-22 18:42:37 +00:00
|
|
|
buf = g_strdup_printf ("/sbin/ip route flush dev %s", nm_device_get_iface (dev));
|
2004-08-25 21:07:19 +00:00
|
|
|
nm_spawn_process (buf);
|
2004-12-22 18:42:37 +00:00
|
|
|
g_free (buf);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_device_add_default_route_via_device
|
|
|
|
|
*
|
|
|
|
|
* Add default route to the given device
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_device_add_default_route_via_device (NMDevice *dev)
|
|
|
|
|
{
|
|
|
|
|
char *buf;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (dev != NULL);
|
|
|
|
|
|
|
|
|
|
/* Not really applicable for test devices */
|
|
|
|
|
if (nm_device_is_test_device (dev))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
/* Add default gateway */
|
|
|
|
|
buf = g_strdup_printf ("/sbin/ip route add default dev %s", nm_device_get_iface (dev));
|
|
|
|
|
nm_spawn_process (buf);
|
|
|
|
|
g_free (buf);
|
2004-08-25 21:07:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_device_flush_addresses
|
|
|
|
|
*
|
|
|
|
|
* Flush all network addresses associated with a network device
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_device_flush_addresses (NMDevice *dev)
|
|
|
|
|
{
|
2004-10-19 02:27:04 +00:00
|
|
|
char *buf;
|
2004-08-25 21:07:19 +00:00
|
|
|
|
|
|
|
|
g_return_if_fail (dev != NULL);
|
|
|
|
|
|
2004-08-31 Dan Williams <dcbw@redhat.com>
* Remove 'debug' extern global from all files since we now
use syslog()
* src/NetworkManager.[ch]
- Break out routine that get the net.interface property from HAL,
removing that logic from nm_create_device_and_add_to_list()
- (nm_create_device_and_add_to_list): make this a bit more general so
it doesn't do the talking to HAL. Also add arguments to facilitate
the create of test devices.
- (nm_data_mark_state_changed): rename from nm_data_set_state_modified()
- (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices"
which makes NetworkManager listen for dbus commands to create test
devices, which have no backing hardware. Use when you're on a plane
for example, and/or forgot your wireless card at home. Test devices
_cannot_ be created unless NM is started with --enable-test-devices.
* src/NetworkManagerDbus.[ch]
- New "getLinkActive" method for devices
- New "setLinkActive" method for devices (only works on test devices)
- New "createTestDevice" method on NetworkManager object to create a test
device of a specified type (ie wired, wireless). UDI is created from
scratch, as is the interface name. Only works when NM is started with
--enable-test-devices switch.
- New "removeTestDevice" method on NetworkManager object which removes a
test device. Only works when NM is started with --enable-test-devices
* src/NetworkManagerDevice.[ch]
- Logic to facilitate test devices. Add variables to NMDevice struct to indicate
whether a device is a test device or not, and what its link status is.
- Deal with test devices in most functions. For those that work directly on hardware
special-case test devices.
- (nm_device_new): don't create a test device if test devices weren't enabled on the
command-line.
- (nm_device_update_link_active): split out logic for wired and wireless device link
checking to separate functions to facilitate test device link checking.
- (nm_device_set_enc_key): Since some drivers for wireless cards are daft and
don't make a distinction between System Authentication and Encryption
(namely Cisco aironet), we use Open System auth when setting a WEP key
on the card. We don't deal with Shared Key auth yet.
- (nm_device_activation_worker): split the activation cancel check logic out into
a separate routine nm_device_activation_cancel_if_needed()
- (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel()
- (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create
a list of fake access points that they can "see"
- (nm_device_is_test_device): return whether or not a device is a test device
* src/NetworkManagerPolicy.c
- (nm_policy_get_best_device): attempt to deal with wireless network selection,
previously if you "locked"/forced NM to use a wireless device but then
selected a wireless network for NM to use, it would switch to a wired device.
So, if the active device is wireless and it has a "forced" best AP, use it
if the "forced" best AP is still valid
- (nm_state_modification_monitor): deal with NULL best devices, for example
there were no usable network devices, or the last one was removed
* src/backends/NetworkManager*.c
- Deal with test devices, mostly just return success for operations like getting
a DHCP address
* test/nmtestdevices.c
- Test tool to create/remove/link-switch test devices
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
|
|
|
/* Not really applicable for test devices */
|
|
|
|
|
if (nm_device_is_test_device (dev))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
/* Remove all IP addresses for a device */
|
2004-10-19 02:27:04 +00:00
|
|
|
buf = g_strdup_printf ("/sbin/ip address flush dev %s",
|
|
|
|
|
nm_device_get_iface (dev));
|
2004-08-25 21:07:19 +00:00
|
|
|
nm_spawn_process (buf);
|
2004-10-19 02:27:04 +00:00
|
|
|
g_free (buf);
|
2004-08-25 21:07:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-10-12 11:15:47 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_device_setup_static_ip4_config
|
|
|
|
|
*
|
|
|
|
|
* Set up the device with a particular IPv4 address/netmask/gateway.
|
|
|
|
|
*
|
|
|
|
|
* Returns: TRUE on success
|
|
|
|
|
* FALSE on error
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
gboolean nm_system_device_setup_static_ip4_config (NMDevice *dev)
|
|
|
|
|
{
|
2004-10-19 02:27:04 +00:00
|
|
|
#define IPBITS (sizeof (guint32) * 8)
|
|
|
|
|
struct in_addr temp_addr;
|
|
|
|
|
struct in_addr temp_addr2;
|
|
|
|
|
char *s_tmp;
|
|
|
|
|
char *s_tmp2;
|
|
|
|
|
int i;
|
|
|
|
|
guint32 addr;
|
|
|
|
|
guint32 netmask;
|
|
|
|
|
guint32 prefix = IPBITS; /* initialize with # bits in ipv4 address */
|
|
|
|
|
guint32 broadcast;
|
|
|
|
|
char *buf;
|
|
|
|
|
int err;
|
2004-11-11 02:24:04 +00:00
|
|
|
const char *iface;
|
2004-10-19 02:27:04 +00:00
|
|
|
|
|
|
|
|
g_return_val_if_fail (dev != NULL, FALSE);
|
|
|
|
|
g_return_val_if_fail (!nm_device_config_get_use_dhcp (dev), FALSE);
|
|
|
|
|
|
|
|
|
|
addr = nm_device_config_get_ip4_address (dev);
|
|
|
|
|
netmask = nm_device_config_get_ip4_netmask (dev);
|
|
|
|
|
iface = nm_device_get_iface (dev);
|
|
|
|
|
broadcast = nm_device_config_get_ip4_broadcast (dev);
|
|
|
|
|
|
|
|
|
|
/* get the prefix from the netmask */
|
|
|
|
|
for (i = 0; i < IPBITS; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!(ntohl (netmask) & ((2 << i) - 1)))
|
|
|
|
|
prefix--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Calculate the broadcast address if the user didn't specify one */
|
|
|
|
|
if (!broadcast)
|
|
|
|
|
broadcast = ((addr & (int)netmask) | ~(int)netmask);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Try and work out if someone else has our IP
|
|
|
|
|
* using RFC 2131 Duplicate Address Detection
|
|
|
|
|
*/
|
|
|
|
|
temp_addr.s_addr = addr;
|
2004-11-11 02:24:04 +00:00
|
|
|
buf = g_strdup_printf ("%s -q -D -c 1 -I %s %s",ARPING,
|
2004-10-19 02:27:04 +00:00
|
|
|
iface, inet_ntoa (temp_addr));
|
|
|
|
|
if ((err = nm_spawn_process (buf)))
|
|
|
|
|
{
|
2005-03-14 Ray Strode <rstrode@redhat.com>
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.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
|
|
|
nm_warning ("Error: Duplicate address '%s' detected for "
|
2004-10-19 02:27:04 +00:00
|
|
|
"device '%s' \n", iface, inet_ntoa (temp_addr));
|
|
|
|
|
goto error;
|
|
|
|
|
}
|
|
|
|
|
g_free (buf);
|
|
|
|
|
|
|
|
|
|
/* set our IP address */
|
|
|
|
|
temp_addr.s_addr = addr;
|
|
|
|
|
temp_addr2.s_addr = broadcast;
|
|
|
|
|
s_tmp = g_strdup (inet_ntoa (temp_addr));
|
|
|
|
|
s_tmp2 = g_strdup (inet_ntoa (temp_addr2));
|
|
|
|
|
buf = g_strdup_printf ("/sbin/ip addr add %s/%d brd %s dev %s label %s",
|
|
|
|
|
s_tmp, prefix, s_tmp2, iface, iface);
|
|
|
|
|
g_free (s_tmp);
|
|
|
|
|
g_free (s_tmp2);
|
|
|
|
|
if ((err = nm_spawn_process (buf)))
|
|
|
|
|
{
|
2005-03-14 Ray Strode <rstrode@redhat.com>
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.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
|
|
|
nm_warning ("Error: could not set network configuration for "
|
2004-10-19 02:27:04 +00:00
|
|
|
"device '%s' using command:\n '%s'",
|
|
|
|
|
iface, buf);
|
|
|
|
|
goto error;
|
|
|
|
|
}
|
|
|
|
|
g_free (buf);
|
|
|
|
|
|
|
|
|
|
/* Alert other computers of our new address */
|
|
|
|
|
temp_addr.s_addr = addr;
|
2004-11-11 02:24:04 +00:00
|
|
|
buf = g_strdup_printf ("%s -q -A -c 1 -I %s %s", ARPING,iface,
|
2004-10-19 02:27:04 +00:00
|
|
|
inet_ntoa (temp_addr));
|
|
|
|
|
nm_spawn_process (buf);
|
|
|
|
|
g_free (buf);
|
|
|
|
|
g_usleep (G_USEC_PER_SEC * 2);
|
2004-11-11 02:24:04 +00:00
|
|
|
buf = g_strdup_printf ("%s -q -U -c 1 -I %s %s", ARPING, iface,
|
2004-10-19 02:27:04 +00:00
|
|
|
inet_ntoa (temp_addr));
|
|
|
|
|
nm_spawn_process (buf);
|
|
|
|
|
g_free (buf);
|
|
|
|
|
|
|
|
|
|
/* set the default route to be this device's gateway */
|
|
|
|
|
temp_addr.s_addr = nm_device_config_get_ip4_gateway (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)))
|
|
|
|
|
{
|
2005-03-14 Ray Strode <rstrode@redhat.com>
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.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
|
|
|
nm_warning ("Error: could not set default route using "
|
2004-10-19 02:27:04 +00:00
|
|
|
"command:\n '%s'", buf);
|
|
|
|
|
goto error;
|
|
|
|
|
}
|
|
|
|
|
g_free (buf);
|
|
|
|
|
return (TRUE);
|
|
|
|
|
|
|
|
|
|
error:
|
|
|
|
|
g_free (buf);
|
|
|
|
|
nm_system_device_flush_addresses (dev);
|
|
|
|
|
nm_system_device_flush_routes (dev);
|
|
|
|
|
return (FALSE);
|
2004-10-12 11:15:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-12-22 18:42:37 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_enable_loopback
|
|
|
|
|
*
|
|
|
|
|
* Bring up the loopback interface
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_enable_loopback (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/sbin/ifup lo");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_flush_loopback_routes
|
|
|
|
|
*
|
|
|
|
|
* Flush all routes associated with the loopback device, because it
|
|
|
|
|
* sometimes gets the first route for ZeroConf/Link-Local traffic.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_flush_loopback_routes (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/sbin/ip route flush dev lo");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_delete_default_route
|
|
|
|
|
*
|
|
|
|
|
* Remove the old default route in preparation for a new one
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_delete_default_route (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/sbin/ip route del default");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_flush_arp_cache
|
|
|
|
|
*
|
|
|
|
|
* Flush all entries in the arp cache.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_flush_arp_cache (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/sbin/ip neigh flush all");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_kill_all_dhcp_daemons
|
|
|
|
|
*
|
|
|
|
|
* Kill all DHCP daemons currently running, done at startup.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_kill_all_dhcp_daemons (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/usr/bin/killall -q dhclient");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_update_dns
|
|
|
|
|
*
|
|
|
|
|
* Make glibc/nscd aware of any changes to the resolv.conf file by
|
|
|
|
|
* restarting nscd.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_update_dns (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/usr/sbin/invoke-rc.d nscd restart");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_load_device_modules
|
|
|
|
|
*
|
|
|
|
|
* This is a null op - all our drivers should already be loaded.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_load_device_modules (void)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* nm_system_restart_mdns_responder
|
|
|
|
|
*
|
|
|
|
|
* Restart the multicast DNS responder so that it knows about new
|
|
|
|
|
* network interfaces and IP addresses.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_restart_mdns_responder (void)
|
|
|
|
|
{
|
|
|
|
|
nm_spawn_process ("/usr/bin/killall -q -USR1 mDNSResponder");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2005-02-10 21:16:03 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_device_add_ip6_link_address
|
|
|
|
|
*
|
|
|
|
|
* Add a default link-local IPv6 address to a device.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_device_add_ip6_link_address (NMDevice *dev)
|
|
|
|
|
{
|
2005-02-11 21:44:35 +00:00
|
|
|
char *buf;
|
2005-03-31 Dan Williams <dcbw@redhat.com>
Tighten up handling of wireless devices that don't support wireless
scanning (ie, Orinoco). Due to restructuring of code, these devices
hadn't been doing pseudo-scanning for a while either and would just
spin waiting for an access point. They are now manual devices where
the user must choose the access point from the menu every time. All
"allowed" access points are listed in the applet's menu regardless
of whether or not they can be seen by the card, since it can't scan
anyway.
* src/NetworkManager.c
- (nm_wireless_link_state_handle): new function, but only update
the "best" ap for non-scanning devices when its not activating,
and when no device is being forced on the card
- (nm_link_state_monitor): split wireless link state handling out
into separate function
* src/NetworkManagerDevice.c
- (nm_device_copy_allowed_to_dev_list): new function
- (nm_device_new): populate non-scanning cards' AP lists with
access points from the "allowed" list
- (nm_device_new): don't start a scanning timeout for devices that
can't scan
- (nm_device_activation_schedule_finish): new parameter, should be
the AP that failed to be connected to, pass it on to the
activation finish function in NetworkManagerPolicy.c
- (nm_device_activate_wireless): don't ever try to get a new AP
for non-scanning devices, just fail. The user must choose
a new access point manually.
- (nm_device_activate): grab the AP that failed connection and
pass it on
- (nm_device_update_best_ap): Clear the best AP if we don't have
a link to it, user must manually choose a new one
- (nm_device_do_pseudo_scan): remove function
- (nm_device_wireless_process_scan_results): remove bits for non-
scanning cards since they never get here
- (nm_device_wireless_scan): remove bits for non-scanning devices,
and fake the scan list for test devices a bit earlier
* src/NetworkManagerPolicy.c
- (nm_policy_activation_finish): use the failed_ap that we get
passed rather than getting the best_ap from the card, which
may have changed since we were scheduled
- (nm_policy_allowed_ap_list_update): for non-scanning devices,
update their scan list directly from the allowed list when
we get updates to the allowed list from NetworkManagerInfo
* src/NetworkManagerPolicy.h
- New member for failed access point in NMActivationResult
-------------------------------------
Driver Notification patch: notifies the user when their driver
sucks. Gives them the option to ignore further insertions
of the card that has the sucky driver.
* NetworkManager.h
- Remove the SEMI_SUPPORTED member from the NMDriverSupportLevel
enum and replace it with NO_CARRIER_DETECT and
NO_WIRELESS_SCAN
* panel-applet/NMWirelessApplet.[ch]
- Merge essid.glade -> wireless-applet.glade
- Implement the "Your driver sucks" notification dialog
* panel-applet/NMWirelessAppletDbus.c
- Change stuff from getSupportsCarrierDetect->getDriverSupportLevel
- Grab hardware address for each device from NM too
- Check whether the driver for each device sucks or not whenever
a new device is noticed
* panel-applet/NMWirelessAppletOtherNetworkDialog.c
- Deal with stuff being in wireless-applet.glade now rather than essid.glade
* src/NetworkManager.c
- Fix a double-unref on device removal
* src/NetworkManagerUtils.c
- Set appropriate driver support level on a device that doesn't
support scanning or carrier detection
* src/nm-dbus-device.c
- New "getHWAddress" dbus method on devices
- getSupportsCarrierDetect -> getDriverSupportLevel
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@534 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-31 21:02:21 +00:00
|
|
|
char *addr;
|
2005-02-11 21:44:35 +00:00
|
|
|
unsigned char eui[8];
|
|
|
|
|
|
2005-03-31 Dan Williams <dcbw@redhat.com>
Tighten up handling of wireless devices that don't support wireless
scanning (ie, Orinoco). Due to restructuring of code, these devices
hadn't been doing pseudo-scanning for a while either and would just
spin waiting for an access point. They are now manual devices where
the user must choose the access point from the menu every time. All
"allowed" access points are listed in the applet's menu regardless
of whether or not they can be seen by the card, since it can't scan
anyway.
* src/NetworkManager.c
- (nm_wireless_link_state_handle): new function, but only update
the "best" ap for non-scanning devices when its not activating,
and when no device is being forced on the card
- (nm_link_state_monitor): split wireless link state handling out
into separate function
* src/NetworkManagerDevice.c
- (nm_device_copy_allowed_to_dev_list): new function
- (nm_device_new): populate non-scanning cards' AP lists with
access points from the "allowed" list
- (nm_device_new): don't start a scanning timeout for devices that
can't scan
- (nm_device_activation_schedule_finish): new parameter, should be
the AP that failed to be connected to, pass it on to the
activation finish function in NetworkManagerPolicy.c
- (nm_device_activate_wireless): don't ever try to get a new AP
for non-scanning devices, just fail. The user must choose
a new access point manually.
- (nm_device_activate): grab the AP that failed connection and
pass it on
- (nm_device_update_best_ap): Clear the best AP if we don't have
a link to it, user must manually choose a new one
- (nm_device_do_pseudo_scan): remove function
- (nm_device_wireless_process_scan_results): remove bits for non-
scanning cards since they never get here
- (nm_device_wireless_scan): remove bits for non-scanning devices,
and fake the scan list for test devices a bit earlier
* src/NetworkManagerPolicy.c
- (nm_policy_activation_finish): use the failed_ap that we get
passed rather than getting the best_ap from the card, which
may have changed since we were scheduled
- (nm_policy_allowed_ap_list_update): for non-scanning devices,
update their scan list directly from the allowed list when
we get updates to the allowed list from NetworkManagerInfo
* src/NetworkManagerPolicy.h
- New member for failed access point in NMActivationResult
-------------------------------------
Driver Notification patch: notifies the user when their driver
sucks. Gives them the option to ignore further insertions
of the card that has the sucky driver.
* NetworkManager.h
- Remove the SEMI_SUPPORTED member from the NMDriverSupportLevel
enum and replace it with NO_CARRIER_DETECT and
NO_WIRELESS_SCAN
* panel-applet/NMWirelessApplet.[ch]
- Merge essid.glade -> wireless-applet.glade
- Implement the "Your driver sucks" notification dialog
* panel-applet/NMWirelessAppletDbus.c
- Change stuff from getSupportsCarrierDetect->getDriverSupportLevel
- Grab hardware address for each device from NM too
- Check whether the driver for each device sucks or not whenever
a new device is noticed
* panel-applet/NMWirelessAppletOtherNetworkDialog.c
- Deal with stuff being in wireless-applet.glade now rather than essid.glade
* src/NetworkManager.c
- Fix a double-unref on device removal
* src/NetworkManagerUtils.c
- Set appropriate driver support level on a device that doesn't
support scanning or carrier detection
* src/nm-dbus-device.c
- New "getHWAddress" dbus method on devices
- getSupportsCarrierDetect -> getDriverSupportLevel
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@534 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-31 21:02:21 +00:00
|
|
|
nm_device_get_hw_address(dev, &eui[0]);
|
2005-02-11 21:44:35 +00:00
|
|
|
|
|
|
|
|
memmove(eui+5, eui+3, 3);
|
|
|
|
|
eui[3] = 0xff;
|
|
|
|
|
eui[4] = 0xfe;
|
|
|
|
|
eui[0] ^= 2;
|
|
|
|
|
|
|
|
|
|
/* Add the default link-local IPv6 address to a device */
|
|
|
|
|
buf = g_strdup_printf ("/sbin/ip -6 address add fe80::%x%02x:%x%02x:%x%02x:%x%02x/64 dev %s",
|
|
|
|
|
eui[0], eui[1], eui[2], eui[3],
|
|
|
|
|
eui[4], eui[5],
|
|
|
|
|
eui[6], eui[7], nm_device_get_iface (dev));
|
|
|
|
|
nm_spawn_process (buf);
|
|
|
|
|
g_free (buf);
|
2005-02-10 21:16:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-10-12 11:15:47 +00:00
|
|
|
/*
|
|
|
|
|
* nm_system_device_update_config_info
|
|
|
|
|
*
|
|
|
|
|
* Retrieve any relevant configuration info for a particular device
|
|
|
|
|
* from the system network configuration information. Clear out existing
|
|
|
|
|
* info before setting stuff too.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void nm_system_device_update_config_info (NMDevice *dev)
|
|
|
|
|
{
|
2004-11-11 02:24:04 +00:00
|
|
|
gboolean use_dhcp = TRUE;
|
|
|
|
|
guint32 ip4_address = 0;
|
|
|
|
|
guint32 ip4_netmask = 0;
|
|
|
|
|
guint32 ip4_gateway = 0;
|
|
|
|
|
guint32 ip4_broadcast = 0;
|
|
|
|
|
if_block *curr_device;
|
|
|
|
|
const char *buf;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (dev != NULL);
|
|
|
|
|
|
|
|
|
|
/* We use DHCP on an interface unless told not to */
|
|
|
|
|
nm_device_config_set_use_dhcp (dev, TRUE);
|
|
|
|
|
nm_device_config_set_ip4_address (dev, 0);
|
|
|
|
|
nm_device_config_set_ip4_gateway (dev, 0);
|
|
|
|
|
nm_device_config_set_ip4_netmask (dev, 0);
|
|
|
|
|
nm_device_config_set_ip4_broadcast (dev, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ifparser_init();
|
|
|
|
|
|
|
|
|
|
/* Make sure this config file is for this device */
|
|
|
|
|
curr_device = ifparser_getif(nm_device_get_iface (dev));
|
|
|
|
|
if (curr_device == NULL)
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
buf = ifparser_getkey(curr_device, "inet");
|
|
|
|
|
if (buf)
|
|
|
|
|
{
|
|
|
|
|
if (strcmp (buf, "dhcp")!=0)
|
|
|
|
|
use_dhcp = FALSE;
|
|
|
|
|
}
|
2004-10-12 11:15:47 +00:00
|
|
|
|
2004-11-11 02:24:04 +00:00
|
|
|
buf = ifparser_getkey (curr_device, "address");
|
|
|
|
|
if (buf)
|
|
|
|
|
ip4_address = inet_addr (buf);
|
|
|
|
|
|
|
|
|
|
buf = ifparser_getkey (curr_device, "gateway");
|
|
|
|
|
if (buf)
|
|
|
|
|
ip4_gateway = inet_addr (buf);
|
|
|
|
|
|
|
|
|
|
buf = ifparser_getkey (curr_device, "netmask");
|
|
|
|
|
if (buf)
|
|
|
|
|
ip4_netmask = inet_addr (buf);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/* Make a default netmask if we have an IP address */
|
|
|
|
|
if (ip4_address)
|
|
|
|
|
{
|
|
|
|
|
if (((ntohl (ip4_address) & 0xFF000000) >> 24) <= 127)
|
|
|
|
|
ip4_netmask = htonl (0xFF000000);
|
|
|
|
|
else if (((ntohl (ip4_address) & 0xFF000000) >> 24) <= 191)
|
|
|
|
|
ip4_netmask = htonl (0xFFFF0000);
|
|
|
|
|
else
|
|
|
|
|
ip4_netmask = htonl (0xFFFFFF00);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buf = ifparser_getkey (curr_device, "broadcast");
|
|
|
|
|
if (buf)
|
|
|
|
|
ip4_broadcast = inet_addr (buf);
|
|
|
|
|
|
|
|
|
|
if (!use_dhcp && (!ip4_address || !ip4_gateway || !ip4_netmask))
|
|
|
|
|
{
|
2005-03-14 Ray Strode <rstrode@redhat.com>
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.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
|
|
|
nm_warning ("Error: network configuration for device '%s' was invalid (non-DHCP configuration,"
|
2004-11-11 02:24:04 +00:00
|
|
|
" but no address/gateway specificed). Will use DHCP instead.\n", nm_device_get_iface (dev));
|
|
|
|
|
use_dhcp = TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* If successful, set values on the device */
|
|
|
|
|
nm_device_config_set_use_dhcp (dev, use_dhcp);
|
|
|
|
|
if (ip4_address)
|
|
|
|
|
nm_device_config_set_ip4_address (dev, ip4_address);
|
|
|
|
|
if (ip4_gateway)
|
|
|
|
|
nm_device_config_set_ip4_gateway (dev, ip4_gateway);
|
|
|
|
|
if (ip4_netmask)
|
|
|
|
|
nm_device_config_set_ip4_netmask (dev, ip4_netmask);
|
|
|
|
|
if (ip4_broadcast)
|
|
|
|
|
nm_device_config_set_ip4_broadcast (dev, ip4_broadcast);
|
|
|
|
|
|
|
|
|
|
#if 0
|
2005-03-14 Ray Strode <rstrode@redhat.com>
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.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
|
|
|
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");
|
2004-11-11 02:24:04 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
ifparser_destroy();
|
|
|
|
|
}
|