* 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
Base the NMNetlinkMonitor class on libnl instead of hand-rolled netlink.
* src/nm-netlink-monitor.c
src/nm-netlink-monitor.h
- Remove handrolled netlink, use libnl instead
* src/nm-device-802-3-ethernet.c
- (constructor, nm_device_802_3_ethernet_carrier_off,
nm_device_802_3_ethernet_carrier_on): use new names
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3181 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
Patch from Helmut Schaa <hschaa@suse.de> (and more bits from me)
* src/NetworkManagerAP.c
src/NetworkManagerAP.h
libnm-glib/nm-access-point.c
libnm-glib/nm-access-point.h
- Make 'rate' property a guint32 to better match with WEXT and
wpa_supplicant and to allow representation of higher bitrates
* src/nm-device-802-11-wireless.c
introspection/nm-device-802-11-wireless.xml
libnm-glib/nm-device-802-11-wireless.c
libnm-glib/nm-device-802-11-wireless.h
- Make 'bitrate' property a guint32 to match AP 'rate' property type
* src/nm-device-802-3-ethernet.c
src/nm-device-802-3-ethernet.h
introspection/nm-device-802-3-ethernet.xml
libnm-glib/nm-device-802-3-ethernet.c
libnm-glib/nm-device-802-3-ethernet.h
- Make 'speed' property a guint32 to match other speed/rate types
- Make nm_device_802_3_ethernet_get_speed() static
* test/nm-tool.c
- Update for the changes above
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3030 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-3-ethernet.c
- (real_get_best_connection): don't create automatic connections
internally; clients should provide a setting that applies to
the device with 'autoconnect: True'. Problem was that these
internally auto-created connections don't have a proxy or service
name becuase they weren't created by a settings daemon, and therefore
clients have no idea what to do with them.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2929 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-802-3-ethernet.c (real_get_best_connection):
* Don't leak NMManager.
The problem with leaking NMManager is that on shutdown, it
doesn't get destroyed,
which means none of the devices get brought down properly, which
in turn leaves
DHCP client running.
* src/nm-device-802-11-wireless.c (real_get_best_connection):
* Ditto.
(supplicant_connection_timeout_cb): Ditto.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2887 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-3-ethernet.c
- (real_bring_down, nm_device_802_3_ethernet_dispose): disconnect from
netlink monitor carrier signals on dispose, not bring down. The
carrier signals should be handled over the entire lifetime of the
device anyway, not created/destroyed on up or down.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2802 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
* introspection/nm-device.xml
- The 'Activate' method now takes 3 arguments, a service name for the
settings service (user or system), the object path of the connection
to activate, and the specific object to activate, if any
* src/nm-device-interface.c
- (nm_device_interface_error_quark, nm_device_interface_error_get_type):
Add error bits
- (impl_device_activate): adapt to new Activate arguments; validate
the service name and get the Connection object from the NMManager
before starting to activate the device with the specified connection
* src/nm-device-802-3-ethernet.c
- (real_get_best_connection): find the best connection, or create a
default one if no existing connections can be used
* src/NetworkManagerPolicy.c
- (nm_policy_auto_get_best_device): Get the device's best connection
and only pick the device if it has one
- (nm_policy_device_change_check): disable wireless bits for now until
wireless get_best_connection() can be implemented (replacing "best_ap");
don't create a default connection here as the device subclass will do
that if needed
* src/nm-manager.h
src/nm-manager.c
- (nm_manager_get): make NMManager a singleton and expose the getter
internally
- Rework internal NMManager connection handling to use the same
routines for both the system and user settings services. Most calls
take a new NMConnectionType argument specifying either system or user
connections
- (nm_manager_get_connection_by_object_path): new function; get a
connection keyed on its object path
* src/NetworkManager.c
- (main): use nm_manager_get()
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2776 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-3-ethernet.c
- (constructor): move connection of interface-connected/disconnected
signals here from real_bring_up(). Should be listening to netlink
for carrier events no matter what the initial state of the device
is.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2733 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
* src/nm-device-802-11-wireless.c
src/nm-device-802-3-ethernet.c
- (real_is_up): move device-specific tests before generic IFF_UP test,
because when the card is pulled or the module removed, the device
is already !IFF_UP and then device-specific cleanup (removing
the supplicant interface, periodic checks, etc) never gets done
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2721 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
* src/nm-device-802-11-wireless.c (constructor): Initialize the iw_ext structures
with zeroes before passing them to functions - the functions never do that and
reading the values back may produce wrong values.
(real_bring_up): Store the signal handler id ...
(real_bring_down): ... So that it can be removed here.
Disconnect the supplicant interface here as well.
(nm_device_802_11_wireless_ap_list_get_ap_by_obj_path): Use the dbus object path
from the access point instead of old $device/Networks/$essid.
* src/nm-manager.c (nm_manager_get_state): Return NM_STATE_CONNECTED when the
device state is connected (instead of just having link/carrier).
* src/nm-activation-request.c: Don't store NMData in activation request, it's
already easily accessible through the device.
* src/NetworkManagerAP.c (nm_ap_init): Construct the dbus object path here and
store it within the object.
(nm_ap_get_dbus_path): Export it to public as well.
* src/dhcp-manager/nm-dhcp-manager.c (nm_dhcp_manager_get): Keep the ownership
of the singleton.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2478 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
* libnm-glib/nm-device-802-11-wireless.c: Cache networks (bssids) list.
We get signalled when it changes.
* libnm-glib/nm-client.c: Cache NMState and device list, we get signalled
when it changes.
* libnm-glib/nm-device.c: Cache the device state property.
* libnm-glib/nm-access-point.c: Cache the strength property.
* src/nm-device-802-11-wireless.c: Fix wireless device scanning scheduler.
The new algorithm is to start from SCAN_INTERVAL_MIN (currently defined as 0)
and add a SCAN_INTERVAL_STEP (currently 20 seconds) with each successful scan
until SCAN_INTERVAL_MAX (currently 120 seconds) is reached. Do not scan while
the device is down, activating, or activated (in case of A/B/G cards).
Remove some old dead ifdef'ed out code that used to configure wireless devices,
it's all done through supplicant now.
* src/supplicant-manager/nm-supplicant-interface.c: Fix the reference
counting issues with pending calls which caused leaks and crashes when
interface was removed (now that the interface actually gets removed).
* src/nm-call-store.c: Make a copy of data before running a foreach
with user callback on it - The most common usage pattern is to cancel
(and thus remove) all pending calls with foreach which would modify
the hash table we're iterating over.
* src/nm-manager.c: When a device is added, make sure it is "up". When
it's removed or disabled due to disabling wireless or networking, bring
it down.
* include/NetworkManager.h: Add new device state NM_DEVICE_STATE_DOWN.
* src/nm-device-802-11-wireless.c:
* src/nm-device-802-3-ethernet.c:
* src/nm-device.c:
- Remove "init" virtual function, all gobjects have a place for that
already (constructor).
- Replace "start" virtual function with "bring_up", devices can be
brought up and down more than just on startup now.
- Add "is_up" virtual function.
- Implement one way to bring a device down instead of previous 4 different
ways, each of witch did something different.
* src/NetworkManagerUtils.c (nm_dev_sock_open): This doesn't need an NMDevice,
all it needs is the device interface.
Get rid of NMData.dev_list (3 members to go).
Get rif of NMData in a lot of places.
* gnome/libnm_glib/libnm_glib.c: Make it compile again.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2395 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/vpn-manager/nm-vpn-manager.c: Handle the DBUS state changes itself.
Handle device state changes and disconnect VPN if it's device deactivates.
* src/nm-dbus-nm.c:
* src/nm-dbus-nm.h:
* src/nm-dbus-device.c:
* src/nm-dbus-device.c:
* src/nm-dbus-net.c:
* src/nm-dbus-net.h: Remove. All of it is implemented byt the new dbus API.
* src/NetworkManagerMain.h: Get rid of all but 3 properties of NMData.
* src/nm-device.c (nm_device_get_by_udi):
(nm_device_get_by_iface): Remove. This doesn't belong here and is already
implemented in the correct location (NMManager).
Rip out all the test_device stuff.
* src/NetworkManagerPolicy.c: Remove the leftover activation success and
failure handlers, it's all done by NMDevice already.
* src/NetworkManager.c: Move the signal handling here from nm-logging.c
Remove the iochannel hack to route the unix signals to the main thread since
we're not threaded anymore.
* src/NetworkManagerAP.c: Implement HWAddress property.
* src/NetworkManagerDbus.c: Remove the dbus signal sending code, it happens
automatically with dbus-glib.
* src/nm-netlink-monitor.c:
* src/nm-netlink-monitor.h:
- Move it low in the class hierarchy, don't reference any NM types.
- Remove private data from the header.
- Use type safe checks in public API methods.
- Make it a singleton so we don't have to pass the single reference around.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2339 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* introspection/nm-ip4-config.xml: Implement.
* libnm-glib/libnm-glib-test.c: Use new DBUS API in tests.
* libnm-glib/nm-ip4-config.c:
* libnm-glib/nm-ip4-config.c: Implement.
* src/nm-ap-security[-*]: Remove circular dependencies between APs and AP
securities. APs reference security.
* src/nm-device-802-11-wireless.c: Implement missing properties that need to
be exported over DBUS.
* src/nm-device-802-3-ethernet.c: Ditto.
* src/NetworkManagerAP.c:
* src/NetworkManagerAP.h:
- Convert to GObject, export over DBUS.
* src/nm-ip4-config.h:
* src/nm-ip4-config.h:
- Convert to GObject, export over DBUS.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2322 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Totally break NetworkManager. Please use 0.6 branch until futher notice.
* src/:
- Remove old low-level dbus interface implementations and replace them
with dbus-glib one.
* configure.in:
- Require dbus-glib >= 0.72.
- Plug in new sources to build.
* libnm-glib/:
- Implement GObject wrappers on top of DBUS glib auto-generated bindings
to make it more convenient to use from GObject based programs.
* introspection/:
- Implement DBUS XML introspection files, used by both NM and libnm-glib.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2309 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-11-wireless.c:
- Add "network-added" and "network-removed" signals.
- Use gobject boilerplate macros to define the GObject.
- Implement wireless device activation.
- Remove activation_failure_handler and activation_success_handler
and instead listen on state-changed signals and run the same code
from there.
* src/nm-device.c:
- Implment NMDeviceInterface::deactivate.
- Remove activation_failure_handler and activation_success_handler
virtual methods. Each device which is interested in these events
can just listen on it's state changed signals.
* src/NetworkManagerPolicy.c:
- Move a bit more NMData usage to NMManager.
- Remove activation scheduling bits.
- Add listeners for wireless device's "network-added" and
"network-removed" signals.
- Listen device changed signals and deactivate currently activated
device when another device start activating (for now).
- Remove (nm_policy_schedule_device_change_check): There's never a need
for calling this, the policy code knows exactly when this should happen,
by listening on events from NMManager and NMDevices.
* src/nm-device-802-3-ethernet.c (nm_device_802_3_ethernet_activate):
Implement.
* src/nm-dbus-nm.c (nm_dbus_nm_set_active_device): Call the activation
method on the specific device instead of going to through policy code
and determining the device type by passed in AP's existance.
* src/nm-device-interface.c (nm_device_interface_deactivate): Implement the
abstract NMDevice deactivation.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2298 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/NetworkManager.c:
- Set up all the shiny new managers.
* src/NetworkManagerPolicy.c:
- Add the beginnings of new NMPolicy code. Instead of requireing all
classes to call into policy code, make the policy code kind of like
a supervisor that monitors what's going on and drives the whole NM.
* src/nm-hal-manager.c:
* src/nm-hal-manager.h:
- Collect all libhal code scattered around NM to this one class.
- Listen libhal and NMManager events and add/remove devices to
NMManager.
* src/nm-manager.c:
* src/nm-manager.h:
- Implment a replacement for NMData. NMData is now officially
deprecated.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2291 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Make NMDevice abstract class, remove almost all references to it's
subclasses (the last place gets removed with new policy manager). Add
NMDeviceInterface (which NMDevice implements) so that when we have
NMDevice exported over DBUS, there's a common NMDevice interface which
all instances have, plus there's a device specific interface for each
specific type.
Remove functions (nm_device_is_802_3_ethernet) and
(nm_device_is_802_11_wireless). There are already standard GObject macros
for type safe checks.
Use the updated supplican manager API.
* src/nm-device-interface.h:
* src/nm-device-interface.c:
* src/nm-call-store.h:
* src/nm-call-store.c: Implement.
* src/supplicant-manager/nm-supplicant-interface.c:
* src/supplicant-manager/nm-supplicant-interface.h:
* src/supplicant-manager/nm-supplicant-manager.c:
* src/supplicant-manager/nm-supplicant-manager.h:
- Remove all private data type references from public header files.
- Remove all references to other NM classes, this class is just a
proxy between wpa_supplicant and NM so it doesn't have to know
any internals.
- Convert to dbus-glib bindings.
- Type safe checks for public methods' arguments.
- Store pending DBUS call ids to NMCallStore.
* src/supplicant-manager/nm-supplicant-config.c:
- Store config values in a GHashTable instead of GSList.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2285 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Threading removal related cleanups:
- Use the glib default main context. Remove the device main context
member from NMDevice, and the main_context member from NMData. Change
all the idle and timeout scheduler functions to use plain
g_idle_add() and g_timeout_add().
- As a side-effect of the first change, nm_dbus_manager_get() no longer
takes an argument; fix that up too.
- Remove all locking, which is useless since we no longer use threads. For
example, nm_get_device_by_iface_locked() has been removed. The global
device list lock, the AP List lock, and all static locks in
NetworkManagerPolicy.c have been removed. The locking utility functions
in NetworkManagerUtils.c have also been removed.
- Other cleanups in spacing and code style
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2205 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Use a single thread for everything. With the move to wpa_supplicant
and communication over D-Bus, there's no reason for multiple threads.
Almost all of the blocking code has been removed, with one exception in
the DHCP manager and a few in the VPN manager. This commit removes the
per-device worker thread and fixes activation cancellation in the absence
of threads. Further removal of thread-related code would be removing
any locking code (like the device list lock) and simplification of logic
around areas of code or data structures that are currently locked.
* autoip.c
dhcp-manager/nm-dhcp-manager.c
nm-device-802-11-wireless.c
nm-device-802-3-ethernet.c
nm-device.c
nm-device.h
- Remove usage of multiple threads
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2197 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/supplicant-manager/nm-supplicant-types.h
- new file; move all supplicant manager object typedefs here for
#include sanity
* src/supplicant-manager/nm-supplicant-interface.c
src/supplicant-manager/nm-supplicant-interface.h
- new file; an object that interfaces an NMDevice object to the
supplicant and handles signals from the supplicant. This object
does all necessary DBus communication with wpa_supplicant.
* src/supplicant-manager/nm-supplicant-manager.c
src/supplicant-manager/nm-supplicant-manager.h
- Actually do something. Track the state of the wpa_supplicant service
and deal with its comings & goings. Handle life events of
supplicant interfaces too.
- Move NMSupplicantManager typedef to nm-supplicant-types.h
* src/supplicant-manager/nm-supplicant-connection.h
- Move NMSupplicantConnection typedef to nm-supplicant-types.h
* src/supplicant-manager/Makefile.am
- Add new files to build, and add libnm-util to includes
* src/nm-marshal.list
- New marshaler type: VOID:UINT,UINT
* src/nm-device-802-3-ethernet.c
- (real_init): grab a supplicant interface
- (nm_device_802_3_ethernet_dispose): release the supplicant interface
- (supplicant_iface_state_cb): new function, stub for handling
supplicant interface state changes
* src/nm-device-802-11-wireless.c
- (real_init): grab a supplicant interface
- (nm_device_802_11_wireless_dispose): release the supplicant interface
- (supplicant_iface_state_cb): new function, stub for handling
supplicant interface state changes
* src/NetworkManager.c
- (main): create and keep the supplicant manager around for the lifetime
of NetworkManager
* src/Makefile.am
- Link to the supplicant manager sub-library and use the supplicant
manager includes
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2125 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.h: Introduce nm_ioctl_info(), which defines to
nm_info() if IOCTL_DEBUG is set and a no-op if not. We can use this
instead of dumping ifdef's throughout the code.
* src/NetworkManagerSystem.c, src/nm-device-802-11-wireless.c,
src/nm-device-802-3-ethernet.c, src/nm-device.c: Remove ifdef's and
use nm_ioctl_info() in lieu.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1768 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Process netlink messages in device subclasses rather than in
NetworkManager.c. Also add support for recognizing Wireless Events.
* configure.in
- Find GLIB_GENMARSHAL
* src/Makefile.am
- Since we're marshalling custom types for wireless event signals,
we get to create our own marshallers using GLIB_GENMARSHAL
* src/NetworkManager.c
- (nm_monitor_wired_link_state): renamed to nm_monitor_setup
- (nm_monitor_setup): renamed from nm_monitor_wired_link_state, and
cut down somewhat. We no longer process signals here.
- (nm_data_new): create the netlink monitor here, and remove a
useless call to nm_policy_schedule_device_change_check()
- (nm_data_free): get rid of the netlink monitor here
- (nm_device_link_activated, nm_device_link_deactivated): removed
- (main): don't create the netlink monitor here, let nm_data_new
do that. Call nm_policy_schedule_device_change_check() right
before we jump to the mainloop to figure out which device
to use first
* src/NetworkManagerSystem.[ch]
- (nm_system_get_rtnl_index_from_iface, nm_system_get_iface_from_rtnl_index):
convert back and forth from interface names to interface
indexes
* src/nm-device-802-11-wireless.c
- (real_init): connect to wireless-event signals from the netlink
monitor object
- (nm_device_802_11_wireless_event): new function, schedule handler
for wireless event signals from the netlink monitor object. We
want the handler to run in the device's context
- (wireless_event_helper): handle wireless-event signals from netlink
- (nm_device_802_11_wireless_dispose): disconnect wireless-event
signal handler
* src/nm-device-802-11-wireless.h
- remove unused prototype for nm_device_802_11_wireless_new
* src/nm-device-802-3-ethernet.c
- (real_init): new function; set up signal handlers for link events
- (nm_device_802_3_ethernet_link_activated): new function, schedule
handler for netlink link activated events on device's main loop
- (link_activated_helper): when we get a link activated event, set
the device's link to be active
- (nm_device_802_3_ethernet_link_deactivated): new function; schedule
handler for netlink link deactivated events on device's main loop
- (link_deactivated_helper): when we get a link deactivated event, set
the device's link to be inactive
- (nm_device_802_3_ethernet_dispose): disconnect signal handler on
dispose
* src/nm-device-802-3-ethernet.h
- remove unused prototype for nm_device_802_3_ethernet_new
* src/nm-device.[ch]
- (nm_get_device_by_iface_locked): variant of nm_get_device_by_iface
but locks the device list
- (nm_device_set_active_link): a little bit of cleanup and de-indenting
* src/nm-netlink-monitor.[ch]
- (nm_netlink_monitor_class_install_signals): New signal
"wireless-event"
- (nm_netlink_monitor_new): keep reference to NMData so we can get
at the device list
- (nm_netlink_monitor_event_handler): expand for wireless events too
* src/nm-marshal-main.c
- Include generated nm-marshal.c and nm-marshal.h
* src/nm-marshal.list
- List of custom marshal functions
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1555 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Clean up activation cancellation. Should be a lot faster now. Observed
an issue with wireless devices between stage 2 and 3 of activation, where
activation would be cancelled, but the device thread wouldn't notice until
the supplicant association timed out. Reorganize activation such that
a cancellation handler gets immediately scheduled in the device's thread,
and devices have a chance to perform any custom cleanup too.
* src/nm-device.[ch]
- (activation_cancel_handler): new device-type-specific function
for cleaning up device-type-specific stuff on cancellation
- (cancel_activation): removed
- (nm_device_activation_cancel): subsume functionality of
real_cancel_activation, but instead of doing anything, punt
operation to a handler that's run in device-thread context
- (nm_device_schedule_activation_handle_cancel): fix spelling of
a warning message
- (activation_handle_cancel_helper): cancellation handler run in
device-thread context, calls device-type-specific cancelation,
then tears down the activation request
- (real_activation_cancel_handler): generic cancellation handler,
deals with cancelling any in-process DHCP request
- (nm_device_activate_stage1_device_prepare,
nm_device_activate_stage2_device_config,
nm_device_activate_stage3_ip_config_start,
nm_device_activate_stage4_ip_config_get,
nm_device_activate_stage4_ip_config_timeout,
nm_device_activate_stage5_ip_commit): don't call
nm_device_schedule_activation_handle_cancel() any more, since
cancellation will have been already scheduled for us by
nm_device_activation_cancel(). Just exit the function and
assume that the cancel handler will be called next.
* src/nm-device-802-3-ethernet.c
- (real_act_stage2_config): remove; didn't do anything anyway
* src/nm-device-802-11-wireless.c
- (supplicant_status_cb): ensure we don't do anything if the activation
got cancelled
- (real_activation_cancel_handler): implement; cancel user key request
on activation cancellation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1549 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Add support for retrieving both the per-device speed and the
per-network maximum supported rate. Then change the getProperties
DBUS API for both networks and devices to report this informaiton.
Finally, display the information via both nm-applet and nm-tool:
* gnome/applet/applet-dbus-devices.c: Grab the speed from getProperties
and set it.
* gnome/applet/applet.c: Display the device's speed in the 'Connection
Information' dialog.
* gnome/applet/applet.glade: Update the UI to show per-device speed.
* gnome/applet/nm-device.c, gnome/applet/nm-device.h: Add interfaces
network_device_get_speed() and network_device_set_speed() for
retrieving and setting, respectively, a network device's current
speed.
* src/nm-dbus-device.c: Send the device's speed on getProperties.
* src/nm-device-802-11-wireless.c: Return the rate in Mb/s, not Kb/s,
in the function nm_device_802_11_wireless_get_bitrate() -- it does
not matter (yet) what the units are, because we only feed it its own
output. Implement SIOCGIRATE and set the per-network maximum
supported rate during scanning.
* src/nm-device-802-11-wireless.h: Export the function
nm_device_802_11_wireless_get_bitrate().
* src/nm-device-802-3-ethernet.c, src/nm-device-802-3-ethernet.h: Add
function nm_device_802_3_ethernet_get_speed() for returning an
802.3's current speed, in Mb/s.
* test/nm-tool.c: Display the per-device current speed, if available,
and the per-network maximum rate.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1540 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/Makefile.am, src/kernel-types.h: Now that two different source
files are feeling the crack-addled leakage of kernel types such as
u32 and s8 -- superior to __u64 and __u8, to be sure, but not valid
types in user-space -- define a header and include it as needed.
* src/nm-device-802-3-ethernet.c: Include kernel-types.h
* src/nm-device-802-3-ethernet.h: Remove defines.
* src/wpa.c: Remove defines and include kernel-types.h.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1393 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-3-ethernet.c: In case local copies of glibc do not
define if_mii(), open code the same results, and do so without any
type punning.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1320 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-3-ethernet.c: Use the if_mii() inline function that
is defined in <linux/mii.h> to return the mii_ioctl_data structure
from the ifreq structure in lieu of an open coded solution. Removes
a life-threatening type-punning.
* configure.in: Remove '-Wno-strict-aliasing' as we no longer pun any
types, ever, whatsoever, baby.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1316 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-11-wireless.c, src/nm-device-802-11-wireless.h,
src/nm-device-802-3-ethernet.c, src/nm-device-802-3-ethernet.h,
src/nm-device.c: Fix a FIXME! Reimplement the function
nm_device_update_hw_address() in device subclass variants,
nm_device_802_3_ethernet_set_address() and
nm_device_802_11_wireless_set_address(), hook them up, and use them.
This fixes the existing bug where MAC addresses are all zeros.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1309 4912f4e0-d625-0410-9fb7-b9a5a253dbdc