* src/nm-device.c
- (nm_device_set_ip4_config): don't send property notifications when
the ip4 config is set to NULL; it causes a PropertyChanged signal
which dbus-glib can't parse because the value is NULL, which isn't
a legal object path. Setting the IP4 config to NULL is only
valid when deactivating a device anyway, so the device state change
will alert listeners that the ip4 config is invalid.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3431 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Move the 'carrier' property from NMDevice to NMDevice8023Ethernet;
convert the libnm-glib NMDevice8023Ethernet to cached properties
* introspection/nm-device-802-3-ethernet.xml
- New 'Carrier' property
- New 'PropertiesChanged' signal
* introspection/nm-device.xml
- Remove 'Carrier' property
- Remove 'CarrierChanged' signal
* src/nm-device-interface.c
src/nm-device-interface.h
- (nm_device_interface_init): remove 'carrier' property and
'carrier-changed' signal
* src/nm-device.c
src/nm-device.h
- (nm_device_get_carrier, nm_device_set_carrier): remove
- (nm_device_activate_stage5_ip_config_commit): don't bother updating
the link here; wired device will handle that
- (handle_dhcp_lease_change): don't bother updating link here
- (get_property, nm_device_class_init): remove carrier property
* src/nm-device-802-11-wireless.c
- (real_update_link, nm_device_802_11_wireless_class_init): remove
real_update_link(); wireless devices don't use carrier at all
- (link_timeout_cb, supplicant_iface_state_cb_handler,
supplicant_iface_connection_state_cb_handler,
supplicant_mgr_state_cb_handler): remove anything to do with carrier
* src/nm-device-802-3-ethernet.c
src/nm-device-802-3-ethernet.h
- (nm_device_802_3_ethernet_carrier_on,
nm_device_802_3_ethernet_carrier_off, constructor): use set_carrier()
instead of nm_device_set_carrier()
- (device_state_changed): update link from sysfs on activation;
replaces real_update_link()
- (real_update_link): remove, replaced by device_state_changed()
- (nm_device_802_3_ethernet_get_carrier, set_carrier): new functions
- (nm_device_802_3_ethernet_get_speed): move up with other getters/setters
- (real_get_generic_capabilities, real_can_interrupt_activation): use
new get_carrier function
- (get_property): add 'carrier' property
- (nm_device_802_3_ethernet_class_init): add 'carrier' property and
hook into property-changed signal helper
* src/NetworkManagerPolicy.c
- (device_carrier_changed): will only ever be called with a wired device
- (device_added): only hook up to carrier-changed for wired devices
* libnm-glib/nm-device.c
libnm-glib/nm-device.h
- (constructor, nm_device_class_init): remove carrier-changed signal
- (device_carrier_changed_proxy): remove; unused
- (nm_device_get_carrier): remove; carrier a property of wired devices
* libnm-glib/nm-device-802-3-ethernet.c
libnm-glib/nm-device-802-3-ethernet.h
- Convert to cached properties like AP and Wireless objects
- (nm_device_802_3_ethernet_get_hw_address): now returns a 'const char *'
instead of a 'char *', return value should not be freed
- (nm_device_802_3_ethernet_get_carrier): return current carrier status
- (constructor): hook into properties-changed helper
- (set_property, get_property): new functions
- (nm_device_802_3_ethernet_class_init): export GObject properties
* test/nm-tool.c
- (detail_device): strdup the wired hardware address too since it's
cached now
* libnm-glib/libnm-glib-test.c
- (dump_wired): strdup the wired hardware address too since it's
cached now
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3428 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
- (nm_device_deactivate): don't need to munge DNS here; that gets done
already in nm_device_set_ip4_config()
- (handle_dhcp_lease_change): fail the device if setting the IP4Config
due to a DHCP rebind fails
- (nm_device_set_ip4_config): send property notifications when the
ip4 config changes
- (get_property): only report IP4Config property during valid states
* src/NetworkManagerPolicy.c
- (update_routing_and_dns): ignore devices that don't have an ip4
config; add parameter 'force_update' to allow callers to specify
that changes should be made even if the default device doesn't change
- (device_ip4_config_changed): update DNS and routing when the device's
IP4Config changes, like for DHCP updates
- (device_added): listen for ip4-config property changes
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3425 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
- (handle_dhcp_lease_change): apply an IP4 config to a device in
response to a DHCP lease change
- (dhcp_state_changed): handle DHCP lease changes while activated
- (nm_device_set_ip4_config): remove a previously set named config
when setting an ip4 config
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3417 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
- (nm_device_bring_down): deactivate the device if it's activating too,
not just if it's already activated. This makes sure that everything
from an association attempt is cleaned up (like DHCP for example)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3411 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
First pass of multiple active device support. Expect bugs.
* src/nm-ip4-config.c
src/nm-ip4-config.h
- (nm_ip4_config_get_secondary, nm_ip4_config_set_secondary): remove;
there are better ways to do this in the named manager
* src/nm-device.c
src/nm-device.h
- (nm_device_can_activate): return whether the device can activate a
connection right now; taking into account things like carrier state
and rfkill state
- (nm_device_get_best_auto_connection): renamed from
nm_device_get_best_connection
- (real_act_stage4_get_ip4_config): MTU stuff is now handled in the
device subclasses themselves, so that each device can override the
MTU from it's NMSetting subclass if needed
- (nm_device_set_ip4_config): set MTU when setting up routes and stuff
in NetworkManagerSystem.c, not here
* src/named-manager/nm-named-manager.c
src/named-manager/nm-named-manager.h
- (nm_named_manager_name_owner_changed,
nm_named_manager_dbus_connection_changed): fix for changes to
rewrite_resolv_conf()
- (compute_nameservers): don't need the NMNamedManager at all, remove
from parameter list
- (merge_one_ip4_config): new function; merge ip4 configs together
- (rewrite_resolv_conf): write out resolv.conf from all the stored
ip4 configs; the VPN config takes precedence, then the best
device config, then the rest of the configs
- (get_domain_for_config): take the NMNamedManager as an argument
to check whether the config is the VPN config
- (add_ip4_config_to_named): fixups for removal of the 'secondary'
attribute from ip4 configs
- (add_all_ip4_configs_to_named): add all the configs in priority order
- (remove_ip4_config_from_named): fix for changes to
get_domain_for_config()
- (nm_named_manager_add_ip4_config): assign the config to the right slot
based on its type; callers must pass in the type now
- (get_last_default_domain): remove, unused
- (nm_named_manager_remove_ip4_config): handle config slots correctly
* src/nm-device-802-11-wireless.c
- (real_can_activate): new function
- (real_get_best_auto_connection): renamed from real_get_best_connection
- (real_act_stage4_get_ip4_config): handle MTU override
* src/nm-device-802-3-ethernet.c
- (real_can_activate): new function
- (real_get_best_auto_connection): renamed from real_get_best_connection
- (real_act_stage4_get_ip4_config): new function; handle MTU override
* src/vpn-manager/nm-vpn-connection.c
- (nm_vpn_connection_ip4_config_get): don't need to set the 'secondary'
attribute on the ip4 config
* src/NetworkManagerPolicy.c
- (nm_policy_auto_get_best_device): remove
- (nm_policy_device_change_check): remove
- (update_default_route): new function; set the default route via
the specified device
- (get_device_priority): new function; return the priority number of
a device type WRT which one should have the default route. Order is
(highest to lowest) wired, wireless, GSM, CDMA.
- (update_routing_and_dns): new function; determine which device should
have the default route, then update the routing table and DNS
- (maybe_auto_activate_device): new function; if a device is now
available for activation, find out what connection it would like to
activate and do it
- (schedule_activate_check): new function; if a device can be activated
now, schedule the activation. Each device may have only one
pending activation at a given time.
- (device_state_changed): if activation was canceled, try again,
possibly with another connection; if the device was activated,
update routing and DNS; if the device was deactivated, try again
with another connection
- (device_carrier_changed): if there is no carrier, deactivate the
device; otherwise schedule an activation check for the device
- (wireless_networks_changed): schedule an activation check for the
device
- (device_added): keep track of the signal handler IDs so they can
be removed when the device goes away
- (device_removed): remove any signal handlers that might be attached
to the device; update routing and DNS
- (schedule_activate_all): new function
- (connections_added, connection_added, connection_updated): when
connections change, schedule all devices for an activation check
- (connection_removed): when a device is deactivated because its
connection was removed, schedule another activation check for it
- (nm_policy_destroy): destroy pending activations and disconnect
all device signal handlers
* src/nm-manager.c
- (nm_manager_activate_device): if the device was already actived,
deactivate it
- (deactivate_old_device): remove
- (connection_added_default_handler, impl_manager_activate_device):
don't deactivate other devices when activating this one
* src/backends/NetworkManagerGentoo.c
src/backends/NetworkManagerFrugalware.c
src/backends/NetworkManagerPaldo.c
src/backends/NetworkManagerRedHat.c
src/backends/NetworkManagerSlackware.c
src/backends/NetworkManagerArch.c
src/backends/NetworkManagerSuSE.c
src/backends/NetworkManagerDebian.c
- (nm_system_get_mtu): remove; MTU should be provided through the
distro's system settings service plugin instead
- (nm_system_device_add_default_route_via_device): remove
- (nm_system_device_add_default_route_via_device_with_iface): remove
- (nm_system_device_replace_default_route): new function; call
generic implementation
* src/backends/NetworkManagerGeneric.c
src/backends/NetworkManagerGeneric.h
- (nm_generic_device_add_default_route_via_device,
nm_generic_device_add_default_route_via_device_with_iface): remove
- (nm_generic_device_replace_default_route): replace the default route
with the given route via some gateway
* src/NetworkManagerSystem.c
src/NetworkManagerSystem.h
- (nm_system_device_set_from_ip4_config): let the policy handle updates
to routing and DNS; but set the MTU here
- (nm_system_vpn_device_set_from_ip4_config): set the route with the
ip_iface of the active device; use the standard MTU setting function
- (nm_system_set_mtu): remove
- (nm_system_device_set_mtu): consolidate MTU setting code in one place
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3391 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-util/nm-connection.c
libnm-util/nm-connection.h
- (nm_connection_compare): accept compare flags and pass them to the
setting compare function
* libnm-util/nm-setting.c
libnm-util/nm-setting.h
- (nm_setting_compare): accept compare flags; ignore properties that are
marked fuzzy
* libnm-util/nm-setting-connection.c
libnm-util/nm-setting-wireless.c
libnm-util/nm-setting-ppp.c
libnm-util/nm-setting-wired.c
- Mark some setting properties as ignorable when doing a fuzzy compare
* src/nm-device.c
- (device_activation_precheck): use exact compare
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3336 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-interface.c
- (nm_device_interface_check_connection_conflicts): need to actually
get the interface, not cast to the object
* src/nm-device.c
- (nm_device_check_connection_conflicts): need to get the device class,
not cast the device to the device class
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3244 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
src/nm-device.h
- (device_activation_precheck, check_connection_complete): remove this
virtual function; incomplete connections should be invalid by
definition, complete-ness should be checked in the setting's
verify function
* src/nm-serial-device.c
src/nm-gsm-device.c
- (real_check_connection_complete): remove
* libnm-util/nm-setting-serial.c
- (verify): new function; ensure there is a PPP setting too
* libnm-util/nm-setting-gsm.c
- (verify): ensure there is a serial setting too
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3225 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-util/nm-setting-serial.c (nm_setting_serial_class_init):
* Mark the properties
with G_PARAM_CONSTRUCT so that they get the default values.
* src/nm-gsm-device.c: Add preliminary support for monitoring
* device. It only monitors
the monitoring device and prints out the output for now. Or more
precicely, doesn't
do absolutely anything right now since the montoring device
argument is never set.
* src/nm-serial-device.c (serial_debug): Implement. It's very
* verbose and thus
requires it's own knob to turn it on.
(config_fd): Add NMSettingSerial to the arguments list.
(nm_serial_device_open): Ditto.
(get_reply_got_data): Ignore the terminators at the beginning of
the output.
(nm_serial_device_get_io_channel): Implement.
* src/nm-manager.c: Add NMDBusManager to the private data of the
* NMManager. Asking
a new reference every time (and forgetting to release it
sometimes) is a pain and
it's not like NMManager could work without dbus.
(nm_manager_add_device): Register the added device on dbus here.
* src/nm-hal-manager.c (modem_device_creator): Pass NULL for now
* for the monitoring
device.
* src/nm-device.c (constructor): Don't export the device here,
* instead export
it when it's added to the NMManager's device list.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3203 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-interface.c
src/nm-device-interface.h
- (nm_device_interface_error_quark, nm_device_interface_error_get_type):
normalize and expand errors
- (nm_device_interface_init): register errors so they can be marshalled
through dbus-glib
- (nm_device_interface_activate): ensure that failure of activation
returns an error
* src/nm-device.c
src/nm-device.h
- (device_activation_precheck): implementations of check_connection()
now take a GError and must fill it in if the check fails. Return
more descriptive error if the requested connection is already
activating
- (nm_device_activate): actually try to return descriptive errors on
failures
* src/nm-device-802-11-wireless.c
src/nm-device-802-3-ethernet.c
src/nm-serial-device.c
src/nm-gsm-device.c
- (real_check_connection): return more descriptive errors on failure
* src/NetworkManagerPolicy.c
- (nm_policy_device_change_check): print activation errors in the logs
* src/nm-manager.c
- (nm_manager_error_quark, nm_manager_error_get_type,
nm_manager_class_init): new errors
- (nm_manager_activate_device): handle errors
- (nm_manager_error_new): removed
- (wait_for_connection_expired, connection_added_default_handler,
impl_manager_activate_device): better error handling
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3197 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/NetworkManagerSystem.c
* (nm_system_device_set_from_ip4_config): Change the
arguments: This whole file shouldn't really know anything about
NMDevices, it
should deal only with device interfaces. Devices might have
different ifaces for
different stuff and this place shouldn't know anything about it.
* src/NetworkManagerPolicy.c: Get rid of leftover global
* variable global_policy.
(global_state_changed): Implement. In the current NM it's not
really important,
but will be required in the case of multiple active devices. (Or
even better,
if stuff like that gets moved out from NM).
* src/vpn-manager/nm-vpn-connection.c
* (connection_state_changed): Don't call
nm_system_device_set_from_ip4_config() directly, use
nm_device_set_ip4_config()
instead.
* src/nm-device.c: Add a ip_face protected member. It's used for
* 'multi-interface'
devices like serial devices (ttyS0 and ppp0 for example).
(nm_device_get_ip_iface): Implement. Default to the device iface
if ip_iface is not
set.
(nm_device_set_ip_iface): Implement.
(nm_device_activate_stage5_ip_config_commit): Move all the extra
actions that happen
after setting ip4_config from here ...
(nm_device_set_ip4_config): ... to here. The reason behind it is
that no other code
than this function should call
nm_system_device_set_from_ip4_config() because no
other code has enough information on which arguments to use. So
instead, other code
could just set the new ip4 config using this function and
everyone is happy.
* src/nm-umts-device.c: Store the pending ids so that we can
* remove pending actions
if we happen to get deactivated while something is pending.
(automatic_registration): Handle the response that indicates
pending network
registration and wait until the pending registration is done.
(real_deactivate_quickly): If there's a pending operation,
cancel it.
* src/nm-serial-device.c (ppp_ip4_config): Set the ip_iface when
* the iface is up ...
(real_deactivate_quickly): ... and remove it when it's down.
(nm_serial_device_get_reply): Return the timeout id so that the
callers can remove
it if needed.
(nm_serial_device_wait_for_reply): Ditto.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3141 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Merge the beginnings of the new GSM card support.
* src/ppp-manager/nm-ppp-manager.c (nm_ppp_manager_stop): Remove
* the
ppp watch source before killing pppd - If this happens from
g_object_unref()
then the ppp manager is already destroyed by the time the watch
callback runs.
* src/nm-hal-manager.c: Add a device_type_name string to the
* device
creators, so that we can print a nice human readable string when
a
device is added.
* src/nm-umts-device.c (automatic_registration_get_network):
* Query
for the activated network, not much is done with the result
thought.
* src/nm-serial-device.c (nm_serial_device_get_reply):
* Implement.
(ppp_ip4_config): Change the device state to activated here for
now.
(real_check_connection): Make sure the connection includes ppp
setting.
* libnm-glib/nm-client.c (get_device): Handle umts devices.
* libnm-glib/Makefile.am: Add the new files to build.
* libnm-glib/nm-umts-device.c:
* libnm-glib/nm-umts-device.h: Implement.
2007-11-26 Tambet Ingo <tambet@gmail.com>
* src/nm-umts-device.c (automatic_registration_get_network): For
* now, dial
immediately, nm_serial_device_get_reply() isn't implemented
correctly yet.
* src/nm-serial-device.c (wait_for_reply_info_destroy): Don't
* try to remove
the timeout source - this function is only called when the
timeout source has
been removed.
(nm_serial_device_wait_for_reply): Allocate the duplicate
responses array
to be big enough to contain the terminating zero element as
well.
The timeout argument is meant to be in seconds now.
(real_deactivate_quickly): Implement.
* src/NetworkManager.conf: Allow root to own
"org.freedesktop.NetworkManager.PPP", deny it for everybody
else.
* libnm-util/nm-setting-umts.c: Network type and band properties
* are ints,
(not unsigned ints).
* libnm-util/nm-setting-serial.c (nm_setting_serial_class_init):
* Fix a
small issue with parity bounds - capital letters have lower
ascii codes
than lower case letters.
* libnm-util/nm-connection.c (register_default_settings):
* Register serial
and umts settings.
2007-11-22 Tambet Ingo <tambet@gmail.com>
Remove the "index" property from devices as not all device types
have this.
* include/NetworkManager.h (NM_DBUS_PATH_DEVICE): Remove.
* src/nm-hal-manager.c (nm_get_device_index_from_hal): Remove.
(wired_device_creator): Get the device interface from hal to
create the device.
(wireless_device_creator): Ditto.
* src/nm-device.c (nm_device_init): Remove the index member.
(constructor): Remove the checks for index property, make
interface property
a require constructor property.
Use the HAL udi for DBus path for devices.
(nm_device_get_index): Remove.
(set_property): Remove index handling.
(get_property): Ditto.
(nm_device_get_dbus_path): Remove.
* src/nm-device-interface.c (nm_device_interface_init): Remove
* the index
property.
* src/nm-device-802-3-ethernet.c
* (nm_device_802_3_ethernet_link_activated):
Access the device index through it's interface.
(nm_device_802_3_ethernet_link_deactivated): Ditto.
(nm_device_802_3_ethernet_new): Remove the useless argument
test_dev. Remove
index argument. Add interface argument.
* src/nm-device-802-11-wireless.c
* (nm_device_802_11_wireless_new): Remove
the useless test_dev argument. Remove index argument. Add
interface arugment.
* src/NetworkManagerSystem.c
* (nm_system_device_set_from_ip4_config): Get the
device index through interface.
(nm_system_set_mtu): Ditto.
* introspection/nm-device.xml: Remove the "Index" property.
2007-11-21 Tambet Ingo <tambet@gmail.com>
* src/nm-serial-device.c:
* src/nm-serial-device.c:
* src/nm-umts-device.c:
* src/nm-umts-device.h: Implement.
* src/nm-hal-manager.c (nm_get_device_driver_name):
* libhal_free_string the string
allocated by libhal.
(modem_device_creator): Implement.
(register_built_in_creators): Register the modem creator.
* src/nm-device-802-11-wireless.c
* (nm_device_802_11_wireless_new):
Remove the unused test_dev argument.
* src/nm-device-802-3-ethernet.c (nm_device_802_3_ethernet_new):
* Ditto.
* src/Makefile.am: Add new files to build.
Link in ppp-manager.
* libnm-util/nm-setting-umts.c:
* libnm-util/nm-setting-umts.h:
* libnm-util/nm-setting-serial.c:
* libnm-util/nm-setting-serial.h: Implement.
* libnm-util/Makefile.am: Add new files to build.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3116 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Rework NMSetting structures: Move each setting to it's own file.
Convert to GObject. Remove home grown setting types and use
GTypes.
Use GObject property introspection for hash conversion,
enumerating
properties, etc.
* libnm-util/nm-setting-connection.[ch]
* libnm-util/nm-setting-ip4-config.[ch]
* libnm-util/nm-setting-ppp.[ch]
* libnm-util/nm-setting-vpn.[ch]
* libnm-util/nm-setting-vpn-properties.[ch]
* libnm-util/nm-setting-wired.[ch]
* libnm-util/nm-setting-wireless.[ch]
* libnm-util/nm-setting-wireless-security.[ch]
New files, each containing a setting.
* libnm-util/nm-setting-template.[ch]: A template for creating
* new
settings. To use it, just replace 'template' with the new
setting
name, and you're half-way done.
* libnm-util/nm-setting.c: Convert to GObject and use GObject
introspection instead of internal types and tables.
* libnm-util/nm-connection.c: Adapt the new NMSetting work.
* libnm-util/nm-param-spec-specialized.[ch]: Implement. Handles
GValue types defined by dbus-glib for composed types like
collections,
structures and maps.
* src/*: The API of NMSetting and NMConnection changed a bit:
* Getting
a setting from connection takes the setting type now. Also,
since
the settings are in multiple files, include relevant settings.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3068 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Implement support for static IP addresses, additional/overridden
DNS and
DNS domain search lists.
* libnm-util/nm-setting.c (uint_array_to_gvalue): Implement.
(ip4_addresses_to_gvalue): Implement.
(convert_array_to_byte_array): Implement.
(nm_setting_populate_from_hash_default): Handle
NM_S_TYPE_UINT_ARRAY and
NM_S_TYPE_IP4_ADDRESSES.
(nm_setting_hash): Ditto.
(default_setting_clear_secrets): Add a default case for the
switch: IP address
shouldn't be secret, ever.
(setting_ip4_config_verify): Update, requires addresses in case
of manual
configurations.
(setting_ip4_config_destroy): Free stuff.
* src/nm-device.c (merge_ip4_config): Implement.
(real_act_stage4_get_ip4_config): Merge IP4 configuration from
NMConnection.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2996 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Implement a generic NMSetting creator from setting name.
While at it, get rid of all nm_setting_foo_new_from_hash()
functions and
add a virtual function 'populate_fn'.
* libnm-util/nm-connection.c (nm_connection_create_setting):
* Implement.
(register_default_creators): Register setting creators instead
of functions
that create and then populate.
(parse_one_setting): Use the common setting creator and then
setting specific
poplulation function.
* libnm-util/nm-setting.c: Get rid of
* nm_setting_foo_new_from_hash() functions,
they all looked exactly the same.
Add a 'populate_fn' virtual function to NMSetting.
Use default virtual functions in case they are not overriden.
(nm_setting_populate_from_hash): Implement.
* src/nm-device.c (real_act_stage3_ip_config_start): Don't hard
* code the setting
name, use a defined string.
(real_act_stage4_get_ip4_config): Ditto.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2978 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Reimplement the invalid connection list. Don't try to re-activate a
connection that just failed or was canceled.
* src/nm-device.c
- (connection_secrets_failed_cb): fail device activation, don't just
deactivate the device. Listeners have to know about the failure.
* src/NetworkManagerPolicy.c
- (nm_policy_auto_get_best_device): exclude invalid connections from
the connection list given to a device's get_best_connection()
method
- (device_state_changed): tag failed connections as invalid; clear the
tag from successful connections
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2957 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-manager.c:
* src/nm-manager.h:
Implement device activation through NMManager.
Implement "pending device activation" here - If the connection
isn't found,
we try to wait for up to 5 seconds for the connection to be
provided.
Add NMConnectionType argument to "connection-added" and
"connection-removed"
signals.
(nm_manager_get): Remove. Finally.
* src/nm-activation-request.c:
* src/nm-activation-request.h:
Remove all the deferred activation code.
* src/nm-device.c: Remove all the deferred activation code. Once
* the device
activation is started, it's started. Update the activation
virtual function
signature.
* src/nm-device-interface.c:
* src/nm-device-interface.h:
Device activation now takes only NMActRequest argument.
Don't expose device activation directly on dbus, it's supposed
to go through
NMManager now.
* src/NetworkManagerPolicy.c (nm_policy_device_change_check):
* Make the code
a bit more compact.
Use the new device activation methods through NMManager.
* introspection/nm-manager-client.xml:
* introspection/nm-manager.xml:
* libnm-glib/nm-client.c:
* libnm-glib/nm-client.h:
Add device activation method.
* libnm-glib/nm-device.c:
* libnm-glib/nm-device.h:
* introspection/nm-device.xml:
Remove device activation method. It's done through NMManager
now.
* src/vpn-manager/nm-vpn-manager.c (impl_vpn_manager_connect):
* Use the shiny
new (nm_manager_get_device_by_path) function, get rid of our own
)find_device).
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2915 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-manager.c
src/nm-manager.h
src/nm-activation-request.c
src/nm-activation-request.h
- Move the GetSecrets stuff out of the NMManager instance because it
doesn't really need to be there and complicates things
* src/nm-device.c
- (connection_secrets_failed_cb, device_activation_go): connect to the
connection-secrets-failed signal and deactivate the device if
the GetSecrets call fails
* src/nm-device-802-11-wireless.c
- (link_timeout_cb, supplicant_connection_timeout_cb,
real_act_stage2_config, real_act_stage4_ip_config_timeout): request
secrets and give correct hints about whether new secrets should be
asked for by the client or not
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2899 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-manager.c (manager_device_state_changed): Listen to
* device' NEED_AUTH
state and try to get the secrets.
* src/NetworkManagerPolicy.c (nm_policy_auto_get_best_device):
* Get the list of
connections from NMManager and let the device to choose the best
from the list.
Since the connection list is sorted by system ones first and
user ones later,
the devices still prefer system connections like they did
before.
(deactivate_old_device): Implement. When a device starts
activation, we have a
policy (for now at least) to deactivate any other device that
might be either
active or still activating.
* src/vpn-manager/nm-vpn-manager.c: Add NMManager back to the
* private structure.
It's set on construction, there will be no other way to access
it.
* src/nm-device-802-11-wireless.c: Don't touch NMManager,
* NMManager can listen to
device events and drive the device, not the other way around.
* src/nm-device-802-3-ethernet.c: Ditto.
* src/nm-device.c (nm_device_get_best_connection): The
* connections list is now
sent along, pass it on to virtual functions.
* src/nm-device-interface.c (nm_device_interface_get_iface):
* Implement. It's static
for now, but should really be public instead of
nm_device_get_iface() since iface
is a property of the DeviceInterface, not Device.
(impl_device_activate): Don't touch NMManager!
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2889 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
- (device_activation_go): small hack to work around race when
activating deferred connections; should solve this in a better way
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2886 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
- (nm_device_is_activating): work around a race between auto-activation
and the user activating the same device that is being auto-activated
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2842 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-manager.h
src/nm-device.c
- (nm_device_activate): actually check if a given connection
exists before assuming it doesn't
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2828 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Implement deferred activation support in the device class.
* src/nm-device-interface.c
src/nm-device-interface.h
- (nm_device_interface_activate): take more arguments to support
deferred activation; callers must pass one of (connection) OR
(service_name, connection_path)
- (impl_device_activate): connection validation is punted to the device
to be able to handle deferred activation. Yes, this means errors
don't get returned from the Activate() dbus call, and yes, that
should be fixed somehow later.
* src/nm-device.c
src/nm-device.h
- (clear_act_request): clear additional deferred activation stuff too
- (deferred_activation_timeout_cb): new function; clean up when
deferred activation times out.
- (deferred_activation_start_cb): new function; when the connection
finally becomes available, start device activation
- (nm_device_activate): attach to the right signals of the activation
request if we need to defer activation until the connection is valid
* src/NetworkManagerPolicy.c
- (nm_policy_device_change_check): update for additional arguments
required for nm_device_interface_activate(). Pass NULL for these
though because this function already knows exactly which
NMConnection to use
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2812 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-util/nm-setting.c
libnm-util/nm-setting.h
- (nm_setting_update_secrets): new function; add a virtual function that
subclasses can implement to update their secrets
- (setting_wireless_security_update_secrets): implement that function
for the 802-11-wireless-security subclass
* libnm-util/nm-connection.c
libnm-util/nm-connection.h
- (nm_connection_update_secrets): update secrets for a Setting and
emit a signal on success
* src/nm-manager.c
src/nm-manager.h
src/nm-marshal.list
- (connection_get_settings_cb): enable system settings bits
- (nm_manager_get_connection_secrets, get_secrets_cb): add function
to request secrets from the settings dbus service and to
push those secrets to the NMConnection itself
* src/nm-activation-request.c
src/nm-activation-request.h
- Attach to the 'secrets-updated' signal of the NMConnection that's
currently being activated, and proxy that signal to other listeners.
Goes through the activation request because the activation request
is the thing that manages the lifetime of the NMConnection that's
being activated.
* src/nm-device-802-11-wireless.c
- (real_connection_secrets_updated): implement the connection secrets
updated notification and restart activation when secrets are
received
- (real_act_stage2_config): request secrets from the settings dbus
service if secrets are needed
* src/nm-device.c
src/nm-device.h
- (clear_act_request, nm_device_activation_cancel,
nm_device_deactivate_quickly, nm_device_dispose): consolidate places
where the activation request is cleared
- (nm_device_activate, connection_secrets_updated_cb): attach to the
updated secrets signal of activation request and add a function
that subclasses can override to handle it easily
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2782 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* include/NetworkManager.h
- Kill NMNetworkType; AP types don't matter any more
* src/NetworkManagerAPList.c
src/NetworkManagerAPList.h
src/Makefile.am
- Kill; NMAccessPointList has outlived it's usefulness
* src/NetworkManagerAP.c
src/NetworkManagerAP.h
- (match_cipher, security_compatible, nm_ap_check_compatible): new
functions; check if an NMConnection object is compatible with the
settings of this AP
- (freq_to_channel, channel_to_freq): utility functions for
channel <-> frequency conversion
* src/nm-device.c
src/nm-device.h
- (nm_device_get_best_connection): pass the specific object around
(which might be the object path of a specific AP to connect to).
The get_best_connection() call should populate this on return
if needed (wireless does).
* src/nm-device-802-3-ethernet.c
- (real_get_best_connection): handle specific_object argument
* src/NetworkManager.c
src/NetworkManagerMain.h
- Remove unused includes
* src/nm-device-802-11-wireless.c
src/nm-device-802-11-wireless.h
- Convert the ap_list into a GSList from an NMAccessPointList
- No need for caching the 'activation_ap' since this is now determined
from the specific_object of the activation request, which is
populated from the get_best_connection() call or from a user request
- (nm_device_802_11_wireless_update_bssid): fix warning
- (get_wireless_capabilities): fix error message format arguments
- (nm_device_802_11_wireless_copy_allowed_to_dev_list): remove, unused
- (find_best_connection, real_get_best_connection): implement
- (ap_list_get_ap_by_ssid, nm_device_802_11_wireless_ap_list_print):
move here from NetworkManagerAPList
- (ap_need_secrets): remove; moved to nm-connection.c where it belongs
- (real_act_stage1_prepare): just ensure an AP exists, connection is
already verified earlier
- (real_act_stage2_config): use nm_connection_need_secrets()
* src/NetworkManagerPolicy.c
- (nm_policy_auto_get_best_device): handle specific objects
- (create_connection): remove; automatic connection creation functionality
is handled by the Connection objects
- (nm_policy_device_change_check): handle specific_object
* libnm-util/nm-connection.c
- (wireless_sec_need_secrets, nm_connection_need_secrets): implement
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2778 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.h
src/nm-device.c
- (nm_device_get_best_connection): new function; get best connection
for the device at that time
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2774 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/Makefile.am
src/NetworkManagerDbus.c
src/NetworkManagerDbus.h
src/vpn-manager/nm-dbus-vpn.c
- Remove, no longer necessary. Move last bits to the only place its
used, in nm-dbus-vpn.c
* src/NetworkManagerAPList.c
src/nm-device.c
src/NetworkManager.c
src/nm-device-802-11-wireless.c
src/vpn-manager/nm-vpn-manager.c
src/vpn-manager/nm-vpn-service.c
src/NetworkManagerPolicy.c
src/nm-manager.c
- Remove usage of NetworkManagerDbus.h, and kill the obfuscation
that was message_is_error()
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2757 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
src/named-manager/nm-named-manager.c
src/named-manager/nm-named-manager.h
src/NetworkManager.c
src/vpn-manager/nm-vpn-manager.c
src/NetworkManagerMain.h
src/NetworkManagerSystem.c
- Remove the named-manager object from NMData structure in preparation
for NMData's timely death. Make the NMNamedManager the singleton that
it really is
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2739 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Remove NMAPSecurity objects, they are replaced with flags on the APs for
each AP's capabilities, and by NMConnection/NMSettings objects for user
defined connections.
* include/NetworkManager.h
- Redefine 802.11 security properties. There are now device capabilities
and AP flags and AP security flags. It was way to unclear before.
* src/Makefile.am
src/nm-ap-security-leap.h
src/nm-ap-security-leap.c
src/nm-ap-security-wpa-eap.c
src/nm-ap-security-wpa-eap.h
src/nm-ap-security-private.h
src/nm-ap-security-wpa-psk.c
src/nm-ap-security-wpa-psk.h
src/nm-ap-security-wep.c
src/nm-ap-security-wep.h
src/nm-ap-security.c
src/nm-ap-security.h
- Removed, to be replaced with NMConnection/NMSettings objects
* src/nm-dbus-nmi.c
src/nm-dbus-nmi.h
- Removed, to be replaced by code that talks to the new info daemon
interface and gets NMConnection/NMSettings objects
* src/backends/NetworkManagerSuSE.c
- Remove usage of NMAPSecurity; should be replaced by a system-level
info-daemon that does the same thing but talks the new info-daemon
D-Bus interface
* src/NetworkManagerAP.h
src/NetworkManagerAP.c
src/NetworkManagerAPList.c
libnm-glib/libnm-glib-test.c
- Remove usage of NMAPSecurity objects and adjust to new flags for
WPA/RSN
* libnm-glib/nm-access-point.c
libnm-glib/nm-access-point.h
introspection/nm-access-point.xml
test/nm-tool.c
- Adjust to new flags for AP security
* utils/nm-utils.c
utils/nm-utils.h
src/vpn-manager/nm-dbus-vpn.c
- Remove D-Bus pending call stuff from nm-utils and put it in the VPN
stuff which is the only place it's used
* src/nm-device-interface.c
src/nm-device-interface.h
introspection/nm-device.xml
src/nm-activation-request.c
src/nm-activation-request.h
src/nm-device.c
- Add a new 'specific_object' argument that hints to NM what actual
AP or other device-specific thing the connection should apply to.
NMConnection objects can apply to more than one actual device/AP.
* libnm-util/nm-connection.c
* libnm-util/nm-connection.h
- Add 'have_secrets" call stubs
* libnm-util/cipher.h
- Move NM_AUTH_TYPE_* defines here for now
* src/nm-device-802-11-wireless.c
- Remove usage of NMAPSecurity, to be replaced with NMConnection/
NMSettings objects
* src/NetworkManagerDbus.c
* src/NetworkManagerPolicy.c
- Remove usage of update_allowed_networks, should be pushing data in
a different manner
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2738 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Convert to using interface indexes as the primary method of identifying
devices inside NetworkManager. Indexes are (?) stable, but devices can
be renamed at any time. Device object paths now refer to the device
index rather than the name, and you can map those two manually if you like
by looking in the /sys/class/net/<name>/ifindex file. Also moves most
netlink-related code to nm-netlink.c, and cleans up nm-netlink-monitor.c
to use interface indexes rather than names.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2731 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Kill dhcdbd until it's dead, dead, dead. Based on a patch from
Robert Frank <rfrank@redhat.com>
* src/dhcp-manager/nm-dhcp-manager.c
src/dhcp-manager/nm-dhcp-manager.c
src/nm-device.c
- Spawn and communicate with dhclient directly, through means of a
custom dhclient callout script. Process callout D-Bus signals
with dbus-glib instead of hand-rolled dbus. DHCP timeouts are now
sent via gobject signals rather than being driven by the dhcp manager
directly.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2666 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-glib/Makefile.am: Add NMObject to build, remove nm-utils.[ch].
* nm-utils.[ch]: Remove.
* libnm-glib/nm-object.c: Implement a base class for all libnm-glib dbus-aware
objects for easy property access and dbus connection handling.
* libnm-glib/nm-client.c: Derive from NMObject.
* libnm-glib/nm-device.c: Ditto.
* libnm-glib/nm-device-802-3-ethernet.c: Changes for being based on NMObject.
* libnm-glib/nm-device-802-11-wireless.c: Ditto.
* libnm-glib/nm-ip4-config.c: Ditto.
* libnm-glib/nm-access-point.c: Ditto.
* libnm-util/nm-connection.c (nm_connection_compare): Add a stub for connection
comparision. Currently used by the device activation code to determine if the new
activation is the same as the old one.
* src/nm-dbus-nmi.c (nm_dbus_get_user_key_for_network): Don't use the obsolete and
wrong way of getting the dbus path for AP. Fixes the issue where the applet isn't
able to ask password for the AP.
* src/nm-device.c (nm_device_activate): Change the logic here - instead of giving
up if the device is already connected, tear down it's connection (if it isn't the
same as new one) and start the activation.
* src/nm-manager.c: Add the beginnings of NMConnection storage and signals.
* src/NetworkManagerAP.c (nm_ap_init): Set the default values to AP memebers, fixes
the issue where all APs are always listed as encrypted.
* src/NetworkManagerDbus.c (nm_dbus_get_object_path_for_network): Remove. APs have
their own registered paths.
* test/nm-tool.c (detail_device): Don't try to get active network from wireless
device if it's not connected - dbus-glib will happily crash trying to marshal NULL.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2615 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c (nm_device_state_changed): Emit the signal before handling it
because the handling code will cause the next state change and signal listeners
get the signals in wrong order.
* src/NetworkManagerPolicy.c (nm_policy_device_change_check): Get the "old_dev"
correctly in case of pending activation.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2593 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c: Make the activation stage virtual functions take NMDevice
argument. The activation request is easy to retrieve.
* src/nm-activation-request.c: Convert to GObject. Do not include half of NM headers
just to be a convenient location for devices to store random stuff.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2587 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-util/nm-setting.c: Get rid of dump virtual functions, that can happen
automagically.
Implement NMSettingIP4Config.
Finish NMSettingWired by adding all known members.
(setting_wired_verify): Implement.
Finish NMSettingWireless by adding all known members.
(setting_wireless_verify): Implement.
* libnm-util/nm-connection.c: Register "ipv4" setting.
(nm_connection_dump): Implement. Instead of requiring every NMSetting to implement
dump function, we can introspect the GHashTable which is used for sending connections
over dbus.
* src/nm-device-802-11-wireless.c (nm_device_802_11_wireless_set_activation_ap):
Take GByteArray for essid, it's really not a string.
* src/nm-device.c (real_act_stage3_ip_config_start): Get information from NMSettings.
Start DHCP request if setting is not passed or if it states that DHCP should be used.
(real_act_stage4_get_ip4_config): If settings are provided, use them, even if it
means overriding the values we got from DHCP.
(real_activation_cancel_handler): Cancel DHCP transaction only if it has started, doh.
(nm_device_deactivate_quickly): Ditto.
* src/nm-device-interface.c (impl_device_activate): Dump the connection structure
for debugging.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2577 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* libnm-glib/Makefile.am: Link with libnm-util to gain access to
NMConnection.
* libnm-glib/nm-device-802-11-wireless.c:
(nm_device_802_3_ethernet_activate): Remove.
* libnm-glib/nm-device-802-3-ethernet.c
(nm_device_802_3_ethernet_activate): Remove.
* libnm-glib/nm-device.c (nm_device_activate): Implement.
* src/nm-device-802-3-ethernet.c: Implement the new activation using
NMConnection.
* src/nm-device-802-11-wireless.c: Store an activation AP once the
activation has started.
Implement the new activation using NMConnection.
* src/nm-activation-request.c: Store a generic connection object instead
of a wireless-specific AP.
* src/NetworkManagerPolicy.c (create_connection): Implement. Depending
on device type, create a device specific connection object suitable for
device activation.
* src/nm-device.c (nm_device_activate): Re-implement. Call the device
specific check to validate the connection and on success start the
activation.
* src/nm-device-interface.h: Add a activate virtual function to the
interface definition.
* src/nm-device-interface.c (nm_device_interface_activate): Implement.
(impl_device_activate): Implement.
* introspection/nm-device.xml: Add a generic device activation interface
that accepts an abstract NMConnection structure that has device-specific
information in it.
* introspection/nm-device-802-3-ethernet.xml: Remove the wired-specific
activation interface.
* introspection/nm-device-802-11-wireless.xml: Remove the wireless-specific
activation interface.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2569 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Get rid of 2 second poll of sysfs 'carrier' file for wired devices. Useless
for non-carrier-detect capable devices, and useless for carrier-detect
devices since we get notifications from netlink about carrier status anyway.
* src/nm-device-802-3-ethernet.c
- remove 'link_source_id' member from private data
- (probe_link): remove and collapse into real_update_link()
- (nm_device_802_3_periodic_update): remove
- (real_is_up): check for sup_iface rather than link_source_id
- (real_bring_up): return gboolean for success/fail; require that
sup_iface be valid for device bringup to succeed
- (real_bring_down): zero out link signal ids
* src/nm-device.c
- (nm_device_activate_stage2_device_config): fail activation if device
bringup fails
- (real_act_stage4_get_ip4_config): fail activation if device bringup
fails
- (nm_device_bring_up): return success/fail
* src/nm-device.h
- bring_up now returns success/fail
* src/nm-device-802-11-wireless.c
- (real_bring_up): return success from bringup
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2464 4912f4e0-d625-0410-9fb7-b9a5a253dbdc