NetworkManager/NetworkManager.h

225 lines
5.5 KiB
C
Raw Normal View History

/* NetworkManager -- Network link manager
*
* 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.
*
* (C) Copyright 2004 Red Hat, Inc.
*/
#ifndef NETWORK_MANAGER_H
#define NETWORK_MANAGER_H
/*
* dbus services details
*/
#define NM_DBUS_SERVICE "org.freedesktop.NetworkManager"
#define NM_DBUS_PATH "/org/freedesktop/NetworkManager"
#define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager"
#define NM_DBUS_PATH_DEVICES "/org/freedesktop/NetworkManager/Devices"
#define NM_DBUS_INTERFACE_DEVICES "org.freedesktop.NetworkManager.Devices"
#define NM_DBUS_PATH_DHCP "/org/freedesktop/NetworkManager/DhcpOptions"
#define NM_DBUS_INTERFACE_DHCP "org.freedesktop.NetworkManager.DhcpOptions"
#define NM_DBUS_PATH_VPN "/org/freedesktop/NetworkManager/VPNConnections"
#define NM_DBUS_INTERFACE_VPN "org.freedesktop.NetworkManager.VPNConnections"
#define NMI_DBUS_SERVICE "org.freedesktop.NetworkManagerInfo"
#define NMI_DBUS_PATH "/org/freedesktop/NetworkManagerInfo"
#define NMI_DBUS_INTERFACE "org.freedesktop.NetworkManagerInfo"
/*
* Some common errors
*/
#define NM_DBUS_NO_DEVICES_ERROR "org.freedesktop.NetworkManager.NoDevices"
#define NM_DBUS_NO_NETWORKS_ERROR "org.freedesktop.NetworkManager.NoNetworks"
#define NM_DBUS_NO_ACTIVE_DEVICE_ERROR "org.freedesktop.NetworkManager.NoActiveDevice"
#define NM_DBUS_NO_ACTIVE_NET_ERROR "org.freedesktop.NetworkManager.NoActiveNetwork"
#define NM_DBUS_NO_ACTIVE_VPN_CONNECTION "org.freedesktop.NetworkManager.VPNConnections.NoActiveVPNConnection"
#define NM_DBUS_NO_VPN_CONNECTIONS "org.freedesktop.NetworkManager.VPNConnections.NoVPNConnections"
#define NM_DBUS_INVALID_VPN_CONNECTION "org.freedesktop.NetworkManager.VPNConnections.InvalidVPNConnection"
#define NM_DBUS_VPN_STARTING_IN_PROGRESS "StartingInProgress"
#define NM_DBUS_VPN_ALREADY_STARTED "AlreadyStarted"
#define NM_DBUS_VPN_STOPPING_IN_PROGRESS "StoppingInProgress"
#define NM_DBUS_VPN_ALREADY_STOPPED "AlreadyStopped"
#define NM_DBUS_VPN_WRONG_STATE "WrongState"
#define NM_DBUS_VPN_BAD_ARGUMENTS "BadArguments"
/*
* VPN daemon signals
*/
2005-05-14 Dan Williams <dcbw@redhat.com> * NetworkManager.h - Add signals for VPN Launch and Connect failures * gnome/applet/applet-dbus.c - (nmwa_dbus_filter): Trap new VPN launch & connect failure signals * gnome/applet/applet.c - (nmwa_show_vpn_failure_dialog): generalize old nmwa_show_vpn_login_failure_dialog() function to handle all VPN failure messages - (nmwa_schedule_vpn_failure_dialog): generalize old nmwa_schedule_vpn_login_failure_dialog() function to hanlde all VPN failure messages - (show_warning_dialog): work around focus-stealing prevention * gnome/applet/other-network-dialog.c gnome/applet/passphrase-dialog.c - (update_button_cb): Make sure the OK button is enabled when it should be, fixes problem where it never enabled for ASCII Key and Hex Key types * gnome/applet/wireless-applet.glade - Add window title to Other Wireless Network Dialog * src/vpn-manager/nm-dbus-vpn.c - (nm_dbus_vpn_signal_vpn_failed): generalize old nm_dbus_vpn_signal_vpn_login_failed() function to handle all VPN failure messages * src/vpn-manager/nm-vpn-manager.c - (nm_vpn_manager_process_signal): trap and proxy VPN launch & connect failure signals too * vpn-daemons/vpnc/nm-vpnc-service.c - (nm_vpnc_dbus_signal_launch_failed): new function - (nm_vpnc_dbus_signal_connect_failed): new function - (nm_vpnc_helper_timer_cb): signal connect failure on timeout - (vpnc_watch_cb): signal connection failure when vpnc exits with connection failure - (nm_vpnc_start_vpnc_binary): search a number of locations for vpnc - (nm_vpnc_dbus_handle_start): send launch failure signal when we fail to launch vpnc git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@627 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-05-14 21:54:30 +00:00
#define NM_DBUS_VPN_SIGNAL_LOGIN_BANNER "LoginBanner"
#define NM_DBUS_VPN_SIGNAL_LOGIN_FAILED "LoginFailed"
2005-05-14 Dan Williams <dcbw@redhat.com> * NetworkManager.h - Add signals for VPN Launch and Connect failures * gnome/applet/applet-dbus.c - (nmwa_dbus_filter): Trap new VPN launch & connect failure signals * gnome/applet/applet.c - (nmwa_show_vpn_failure_dialog): generalize old nmwa_show_vpn_login_failure_dialog() function to handle all VPN failure messages - (nmwa_schedule_vpn_failure_dialog): generalize old nmwa_schedule_vpn_login_failure_dialog() function to hanlde all VPN failure messages - (show_warning_dialog): work around focus-stealing prevention * gnome/applet/other-network-dialog.c gnome/applet/passphrase-dialog.c - (update_button_cb): Make sure the OK button is enabled when it should be, fixes problem where it never enabled for ASCII Key and Hex Key types * gnome/applet/wireless-applet.glade - Add window title to Other Wireless Network Dialog * src/vpn-manager/nm-dbus-vpn.c - (nm_dbus_vpn_signal_vpn_failed): generalize old nm_dbus_vpn_signal_vpn_login_failed() function to handle all VPN failure messages * src/vpn-manager/nm-vpn-manager.c - (nm_vpn_manager_process_signal): trap and proxy VPN launch & connect failure signals too * vpn-daemons/vpnc/nm-vpnc-service.c - (nm_vpnc_dbus_signal_launch_failed): new function - (nm_vpnc_dbus_signal_connect_failed): new function - (nm_vpnc_helper_timer_cb): signal connect failure on timeout - (vpnc_watch_cb): signal connection failure when vpnc exits with connection failure - (nm_vpnc_start_vpnc_binary): search a number of locations for vpnc - (nm_vpnc_dbus_handle_start): send launch failure signal when we fail to launch vpnc git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@627 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-05-14 21:54:30 +00:00
#define NM_DBUS_VPN_SIGNAL_LAUNCH_FAILED "LaunchFailed"
#define NM_DBUS_VPN_SIGNAL_CONNECT_FAILED "ConnectFailed"
2005-05-20 Dan Williams <dcbw@redhat.com> * NetworkManager.h - Differentiate VPN config signals between bad VPN config options and bad IP config * gnome/applet/applet-dbus-info.h - Add prototypes for wireless network and vpn connection update functions * gnome/applet/applet-dbus.c - (nmwa_dbus_filter): trap new VPN config error signals from NetworkManager * gnome/applet/applet.c - (nmwa_schedule_vpn_failure_dialog): new dialog text for new VPN config error signals - (nmwa_gconf_networks_notify_cb): re-enable wireless network change notify propogation to NetworkManager - (nmwa_gconf_vpn_connections_notify_cb): re-enable vpn connection change notify propogation to NetworkManager * src/NetworkManagerDbus.c - (nm_dbus_update_one_allowed_network): make sure to specify which AP list we are updating so a network can be removed from it if necessary * src/vpn-manager/nm-vpn-manager.c - (nm_vpn_manager_process_signal): trap new vpn config error signals * vpn-daemons/vpnc/nm-vpnc-service.c - (nm_vpnc_dbus_signal_failure): generalize function for all VPN error signals - (nm_vpnc_dbus_signal_launch_failed): remove - (nm_vpnc_dbus_signal_connect_failed): remove - (nm_vpnc_helper_timer_cb): update for new generalized error signal function - (nm_vpnc_schedule_helper_timer): increase timeout to 10s - (vpnc_watch_cb): don't whine about exit code if vpnc exited cleanly, update for new generalized error signal function, remove config file stuff - (nm_vpnc_start_vpnc_binary): grab a stdin pipe to vpnc after spawning it so we can write configuration options to it - (nm_vpnc_config_file_generate): removed - (nm_vpnc_config_write): write configuration options to the vpnc stdin pipe - (nm_vpnc_config_options_validate): validate the config options we receive from NetworkManager to block potential exploits - (nm_vpnc_dbus_handle_start_vpn): call option validation function before starting vpnc - (nm_vpnc_dbus_process_helper_config_error): actually propogate config error to NetworkManager git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@646 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-05-21 04:33:19 +00:00
#define NM_DBUS_VPN_SIGNAL_VPN_CONFIG_BAD "VPNConfigBad"
#define NM_DBUS_VPN_SIGNAL_IP_CONFIG_BAD "IPConfigBad"
#define NM_DBUS_VPN_SIGNAL_STATE_CHANGE "StateChange"
#define NM_DBUS_VPN_SIGNAL_IP4_CONFIG "IP4Config"
/*
* NetworkManager signals
*/
#define NM_DBUS_SIGNAL_STATE_CHANGE "StateChange"
/*
* Types of NetworkManager devices
*/
typedef enum NMState
{
NM_STATE_UNKNOWN = 0,
NM_STATE_ASLEEP,
NM_STATE_CONNECTING,
NM_STATE_CONNECTED,
NM_STATE_DISCONNECTED
} NMState;
/*
* Types of NetworkManager devices
*/
typedef enum NMDeviceType
{
DEVICE_TYPE_DONT_KNOW = 0,
DEVICE_TYPE_WIRED_ETHERNET,
DEVICE_TYPE_WIRELESS_ETHERNET
} NMDeviceType;
/*
* Encryption key types
*/
typedef enum NMEncKeyType
{
NM_ENC_TYPE_UNKNOWN = 0,
NM_ENC_TYPE_NONE,
NM_ENC_TYPE_HEX_KEY,
NM_ENC_TYPE_ASCII_KEY,
NM_ENC_TYPE_128_BIT_PASSPHRASE
/* FIXME: WPA and 802.1x support */
} NMEncKeyType;
/*
* Driver support levels
*/
typedef enum NMDriverSupportLevel
{
NM_DRIVER_UNSUPPORTED = 0,
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_DRIVER_NO_CARRIER_DETECT,
NM_DRIVER_NO_WIRELESS_SCAN,
NM_DRIVER_FULLY_SUPPORTED
} NMDriverSupportLevel;
/*
* Wireless network modes
*/
typedef enum NMNetworkMode
{
NETWORK_MODE_UNKNOWN = 0,
NETWORK_MODE_INFRA,
NETWORK_MODE_ADHOC
} NMNetworkMode;
/*
* Wireless network update types
*/
typedef enum
{
NETWORK_STATUS_DISAPPEARED = 0,
NETWORK_STATUS_APPEARED,
NETWORK_STATUS_STRENGTH_CHANGED
} NMNetworkStatus;
/*
* Wireless network types
*/
typedef enum NMNetworkType
{
NETWORK_TYPE_UNKNOWN = 0,
NETWORK_TYPE_ALLOWED,
NETWORK_TYPE_INVALID,
NETWORK_TYPE_DEVICE
} NMNetworkType;
/*
* Authentication modes
*/
typedef enum NMDeviceAuthMethod
{
NM_DEVICE_AUTH_METHOD_UNKNOWN = 0,
NM_DEVICE_AUTH_METHOD_NONE,
NM_DEVICE_AUTH_METHOD_OPEN_SYSTEM,
NM_DEVICE_AUTH_METHOD_SHARED_KEY
} NMDeviceAuthMethod;
/*
* VPN daemon states
*/
typedef enum NMVPNState
{
NM_VPN_STATE_UNKNOWN = 0,
NM_VPN_STATE_INIT,
NM_VPN_STATE_SHUTDOWN,
NM_VPN_STATE_STARTING,
NM_VPN_STATE_STARTED,
NM_VPN_STATE_STOPPING,
NM_VPN_STATE_STOPPED
} NMVPNState;
/*
* Device activation stages
*/
typedef enum NMActStage
{
NM_ACT_STAGE_UNKNOWN = 0,
NM_ACT_STAGE_DEVICE_PREPARE,
NM_ACT_STAGE_DEVICE_CONFIG,
NM_ACT_STAGE_NEED_USER_KEY,
NM_ACT_STAGE_IP_CONFIG_START,
NM_ACT_STAGE_IP_CONFIG_GET,
NM_ACT_STAGE_IP_CONFIG_COMMIT,
NM_ACT_STAGE_ACTIVATED,
NM_ACT_STAGE_FAILED,
NM_ACT_STAGE_CANCELLED
} NMActStage;
2005-06-09 Dan Williams <dcbw@redhat.com> * NetworkManager.h - Add NMWirelessScanMethod enum for scan methods * gnome/applet/applet-dbus-devices.c - (nmwa_dbus_update_scanning_enabled_cb): remove - (nmwa_dbus_update_scanning_enabled): remove - (nmwa_dbus_update_devices): don't call nmwa_dbus_update_scanning_enabled() anymore since it got removed - (nmwa_dbus_enable_scanning): remove * gnome/applet/applet-dbus-info.c - (nmi_dbus_signal_update_scan_method): new function, signal NetworkManager to update the wireless scanning method from NMI - (nmi_dbus_get_wireless_scan_method): new function, return wireless scanning method value to NetworkManager - (nmi_dbus_info_message_handler): respond to the "getWirelessScanMethod" method call * gnome/applet/applet-dbus-info.h - Add prototype for nmi_dbus_signal_update_scan_method * gnome/applet/applet.c - (scanning_menu_update): new function, update one GtkCheckMenuItem from the Wireless Scanning menu based on current wireless scan method - (nmwa_menu_scanning_item_activate): new function, callback for GTK "activate" signal for Wireless Scanning menu items, tell NetworkManager the new method and update our menu items to make sure the right one is checked - (nmwa_set_scanning_enabled_cb): remove - (nmwa_context_menu_update): remove references to pause_scanning_item - (nmwa_context_menu_create): remove pause_scanning_item, and add new Wireless Scanning menu item - (nmwa_gconf_get_wireless_scan_method): new method, pull wireless scanning method from GConf - nmwa_gconf_networks_notify_callback -> nmwa_gconf_info_notify_callback: generalize so we get notified of preference values too - (nmwa_get_instance): monitor GCONF_PATH_WIRELESS rather than GCONF_PATH_WIRELESS_NETWORKS * gnome/applet/applet.h - GCONF_PATH_WIRELESS added, one level below GCONF_PATH_WIRELESS_NETWORKS - Add wireless scan method member to applet data - Remove pause_scanning_item, add Wireless Scanning submenu * src/NetworkManager.c - (nm_data_new): default to NM_SCAN_METHOD_ON - (main): grab scanning method from NMI if we can * src/NetworkManagerDbus.c - (nm_dbus_update_wireless_scan_method_cb): new function, callback from nm_dbus_update_wireless_scan_method() - (nm_dbus_update_wireless_scan_method): new function to grab scanning method from NMI - (nm_dbus_nmi_is_running): redundant function, removed - (nm_dbus_signal_filter): trap "WirelessScanMethodUpdate" signal, grab scanning method when NMI comes back * src/NetworkManagerDevice.c - (nm_device_is_activated): return TRUE if the device is activated - (nm_device_wireless_scan): don't scan if the scan method is OFF, or if its AUTO and we are activated * src/nm-dbus-nm.c - (nm_dbus_nm_set_scanning_enabled): removed - nm_dbus_nm_get_scanning_enabled -> nm_dbus_nm_get_wireless_scan_method - (nm_dbus_nm_methods_setup): remove [get | set] ScanningEnabled and add "getWirelessScanMethod" git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@658 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-06-10 03:13:27 +00:00
/*
* Wireless scanning methods
*
*/
typedef enum NMWirelessScanMethod
{
NM_SCAN_METHOD_UNKNOWN = 0,
NM_SCAN_METHOD_ON,
NM_SCAN_METHOD_OFF,
NM_SCAN_METHOD_AUTO
} NMWirelessScanMethod;
#endif