On Wed, 2010-01-13 at 18:32 -0800, Scott Parker wrote: > I'm creating a console application which needs to be able to identify > and to connect to wireless access points. > > So far I have been able to scan and parse the access point I wish to > connect to but I'm having trouble understanding how to actually connect > to it now. From reading the source for the applet I have been able to > come up with this.
A few useful links: http://live.gnome.org/NetworkManagerConfiguration http://projects.gnome.org/NetworkManager/developers/settings-spec-07.html The important thing to remember here is that all the connection data is provided by either the system settings service or the user settings service. You cannot make NM connect to anything that is not provided by one of those two services. So to start with, you need to ensure that your connection data is provided by one of those two. That could mean writing out distro-specific configuration (which would be picked up and provided by the system settings service) or writing to GConf (for GNOME) or whatever the KDE NM applet backend store is. Once the settings service provides the connection, you can find it by UUID, and tell NetworkManager to start that specific connection. Connections are exported over D-Bus by their settings service and referred to by an "object path" in D-Bus nomenclature. To activate a connection, you tell NetworkManager which settings service the connection is provided by, and what that connection's object path is (as exported by the settings service). Then NM can connect. Dan > s_wireless = (NMSettingWireless *)nm_setting_wireless_new (); > ap_ssid = nm_access_point_get_ssid(ap); > > g_object_set(s_wireless, NM_SETTING_WIRELESS_SSID, ap_ssid, NULL); > g_object_set(s_wireless, NM_SETTING_WIRELESS_MODE, "infrastructure", NULL); > > connection = nm_connection_new(); > nm_connection_add_setting(connection, NM_SETTING(s_wireless)); > > s_con = NM_SETTING_CONNECTION(nm_setting_connection_new()); > g_object_set(s_con, NM_SETTING_CONNECTION_TYPE, > nm_setting_get_name(NM_SETTING(s_wireless)), NULL); > > nm_connection_add_setting(connection, NM_SETTING(s_con)); > specific_object = nm_object_get_path (NM_OBJECT(ap)); > > g_assert(connection); > con_path = nm_connection_get_path(connection); > g_assert(con_path); /* FAILS HERE */ > > nm_client_activate_connection(app->priv->client, > NM_DBUS_SERVICE_USER_SETTINGS, > con_path, device, > specific_object, activate_connection_cb, app); > > After I filter and select the access point (unencrypted) that i want to > connect to I'm unable to get the path of the NMConnection I have > created. The nm-applet is not running. > > Thanks > > _______________________________________________ > NetworkManager-list mailing list > [email protected] > http://mail.gnome.org/mailman/listinfo/networkmanager-list _______________________________________________ NetworkManager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
