summary refs log tree commit diff
path: root/src/nm-device.h
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2012-03-24 01:37:02 +0100
committerMichael Biebl <biebl@debian.org>2012-03-24 01:37:02 +0100
commitde06e5715e780baade318f3490ac7a4c9ce84e32 (patch)
tree23fbc3fafc12072476eff98bee60100eb54c29db /src/nm-device.h
parentb436a68a20ff3114ded32a7a3d70cdd4954039f9 (diff)
Imported Upstream version 0.9.4.0 upstream/0.9.4.0
Diffstat (limited to 'src/nm-device.h')
-rw-r--r--src/nm-device.h137
1 files changed, 104 insertions, 33 deletions
diff --git a/src/nm-device.h b/src/nm-device.h
index 1d080eda..bf76ecb5 100644
--- a/src/nm-device.h
+++ b/src/nm-device.h
@@ -33,14 +33,31 @@
 #include "nm-dhcp4-config.h"
 #include "nm-dhcp6-config.h"
 #include "nm-connection.h"
-
-typedef enum NMActStageReturn
-{
-	NM_ACT_STAGE_RETURN_FAILURE = 0,
-	NM_ACT_STAGE_RETURN_SUCCESS,
-	NM_ACT_STAGE_RETURN_POSTPONE,
-	NM_ACT_STAGE_RETURN_STOP         /* This activation chain is done */
-} NMActStageReturn;
+#include "nm-rfkill.h"
+
+/* Properties */
+#define NM_DEVICE_UDI              "udi"
+#define NM_DEVICE_IFACE            "interface"
+#define NM_DEVICE_IP_IFACE         "ip-interface"
+#define NM_DEVICE_DRIVER           "driver"
+#define NM_DEVICE_CAPABILITIES     "capabilities"
+#define NM_DEVICE_IP4_ADDRESS      "ip4-address"
+#define NM_DEVICE_IP4_CONFIG       "ip4-config"
+#define NM_DEVICE_DHCP4_CONFIG     "dhcp4-config"
+#define NM_DEVICE_IP6_CONFIG       "ip6-config"
+#define NM_DEVICE_DHCP6_CONFIG     "dhcp6-config"
+#define NM_DEVICE_STATE            "state"
+#define NM_DEVICE_STATE_REASON     "state-reason"
+#define NM_DEVICE_ACTIVE_CONNECTION "active-connection"
+#define NM_DEVICE_DEVICE_TYPE      "device-type" /* ugh */
+#define NM_DEVICE_MANAGED          "managed"
+#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
+#define NM_DEVICE_TYPE_DESC        "type-desc"    /* Internal only */
+#define NM_DEVICE_RFKILL_TYPE      "rfkill-type"  /* Internal only */
+#define NM_DEVICE_IFINDEX          "ifindex"      /* Internal only */
+
+/* Internal signal */
+#define NM_DEVICE_DISCONNECT_REQUEST "disconnect-request"
 
 
 G_BEGIN_DECLS
@@ -52,6 +69,14 @@ G_BEGIN_DECLS
 #define NM_IS_DEVICE_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass),  NM_TYPE_DEVICE))
 #define NM_DEVICE_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj),  NM_TYPE_DEVICE, NMDeviceClass))
 
+typedef enum NMActStageReturn NMActStageReturn;
+
+typedef enum {
+	NM_DEVICE_ERROR_CONNECTION_ACTIVATING = 0, /*< nick=ConnectionActivating >*/
+	NM_DEVICE_ERROR_CONNECTION_INVALID,        /*< nick=ConnectionInvalid >*/
+	NM_DEVICE_ERROR_NOT_ACTIVE,                /*< nick=NotActive >*/
+} NMDeviceError;
+
 typedef struct {
 	GObject parent;
 } NMDevice;
@@ -59,6 +84,11 @@ typedef struct {
 typedef struct {
 	GObjectClass parent;
 
+	void (*state_changed) (NMDevice *device,
+	                       NMDeviceState new_state,
+	                       NMDeviceState old_state,
+	                       NMDeviceStateReason reason);
+
 	/* Hardware state, ie IFF_UP */
 	gboolean        (*hw_is_up)      (NMDevice *self);
 	gboolean        (*hw_bring_up)   (NMDevice *self, gboolean *no_firmware);
@@ -80,6 +110,10 @@ typedef struct {
 
 	gboolean	(* is_available) (NMDevice *self);
 
+	gboolean    (* get_enabled) (NMDevice *self);
+
+	void        (* set_enabled) (NMDevice *self, gboolean enabled);
+
 	NMConnection * (* get_best_auto_connection) (NMDevice *self,
 	                                             GSList *connections,
 	                                             char **specific_object);
@@ -99,21 +133,20 @@ typedef struct {
 	NMActStageReturn	(* act_stage2_config)	(NMDevice *self,
 	                                             NMDeviceStateReason *reason);
 	NMActStageReturn	(* act_stage3_ip4_config_start) (NMDevice *self,
+														 NMIP4Config **out_config,
 														 NMDeviceStateReason *reason);
 	NMActStageReturn	(* act_stage3_ip6_config_start) (NMDevice *self,
+														 NMIP6Config **out_config,
 														 NMDeviceStateReason *reason);
-	NMActStageReturn	(* act_stage4_get_ip4_config)	(NMDevice *self,
-														 NMIP4Config **config,
-	                                                     NMDeviceStateReason *reason);
-	NMActStageReturn	(* act_stage4_get_ip6_config)	(NMDevice *self,
-														 NMIP6Config **config,
-	                                                     NMDeviceStateReason *reason);
 	NMActStageReturn	(* act_stage4_ip4_config_timeout)	(NMDevice *self,
-	                                                         NMIP4Config **config,
 	                                                         NMDeviceStateReason *reason);
 	NMActStageReturn	(* act_stage4_ip6_config_timeout)	(NMDevice *self,
-	                                                         NMIP6Config **config,
 	                                                         NMDeviceStateReason *reason);
+
+	/* Called right before IP config is set; use for setting MTU etc */
+	void                (* ip4_config_pre_commit) (NMDevice *self, NMIP4Config *config);
+	void                (* ip6_config_pre_commit) (NMDevice *self, NMIP6Config *config);
+
 	void			(* deactivate)			(NMDevice *self);
 
 	gboolean		(* can_interrupt_activation)		(NMDevice *self);
@@ -121,6 +154,18 @@ typedef struct {
 	gboolean        (* spec_match_list)     (NMDevice *self, const GSList *specs);
 
 	NMConnection *  (* connection_match_config) (NMDevice *self, const GSList *connections);
+
+	gboolean        (* hwaddr_matches) (NMDevice *self,
+	                                    NMConnection *connection,
+	                                    const guint8 *other_hwaddr,
+	                                    guint other_hwaddr_len,
+	                                    gboolean fail_if_no_hwaddr);
+
+	gboolean        (* enslave_slave) (NMDevice *self,
+	                                   NMDevice *slave);
+
+	gboolean        (* release_slave) (NMDevice *self,
+	                                   NMDevice *slave);
 } NMDeviceClass;
 
 
@@ -136,25 +181,21 @@ const char *	nm_device_get_ip_iface	(NMDevice *dev);
 int             nm_device_get_ip_ifindex(NMDevice *dev);
 const char *	nm_device_get_driver	(NMDevice *dev);
 const char *	nm_device_get_type_desc (NMDevice *dev);
-
 NMDeviceType	nm_device_get_device_type	(NMDevice *dev);
-guint32		nm_device_get_capabilities	(NMDevice *dev);
-guint32		nm_device_get_type_capabilities	(NMDevice *dev);
 
 int			nm_device_get_priority (NMDevice *dev);
 
-guint32			nm_device_get_ip4_address	(NMDevice *dev);
-void				nm_device_update_ip4_address	(NMDevice *dev);
-
 NMDHCP4Config * nm_device_get_dhcp4_config (NMDevice *dev);
 NMDHCP6Config * nm_device_get_dhcp6_config (NMDevice *dev);
 
 NMIP4Config *	nm_device_get_ip4_config	(NMDevice *dev);
 NMIP6Config *	nm_device_get_ip6_config	(NMDevice *dev);
 
-void *		nm_device_get_system_config_data	(NMDevice *dev);
+gboolean        nm_device_enslave_slave     (NMDevice *dev, NMDevice *slave);
+gboolean        nm_device_release_slave     (NMDevice *dev, NMDevice *slave);
 
 NMActRequest *	nm_device_get_act_request	(NMDevice *dev);
+NMConnection *  nm_device_get_connection	(NMDevice *dev);
 
 gboolean		nm_device_is_available (NMDevice *dev);
 
@@ -168,29 +209,59 @@ gboolean nm_device_complete_connection (NMDevice *device,
                                         const GSList *existing_connection,
                                         GError **error);
 
-void			nm_device_activate_schedule_stage1_device_prepare		(NMDevice *device);
-void			nm_device_activate_schedule_stage2_device_config		(NMDevice *device);
-void			nm_device_activate_schedule_stage4_ip4_config_get		(NMDevice *device);
-void			nm_device_activate_schedule_stage4_ip4_config_timeout	(NMDevice *device);
-void			nm_device_activate_schedule_stage4_ip6_config_get		(NMDevice *device);
-void			nm_device_activate_schedule_stage4_ip6_config_timeout	(NMDevice *device);
+gboolean nm_device_check_connection_compatible (NMDevice *device,
+                                                NMConnection *connection,
+                                                GError **error);
+
+gboolean nm_device_can_assume_connections (NMDevice *device);
+
+NMConnection * nm_device_connection_match_config (NMDevice *device,
+                                                  const GSList *connections);
+
+gboolean nm_device_hwaddr_matches (NMDevice *device,
+                                   NMConnection *connection,
+                                   const guint8 *other_hwaddr,
+                                   guint other_hwaddr_len,
+                                   gboolean fail_if_no_hwaddr);
+
+gboolean nm_device_spec_match_list (NMDevice *device, const GSList *specs);
+
 gboolean		nm_device_is_activating		(NMDevice *dev);
 gboolean		nm_device_can_interrupt_activation		(NMDevice *self);
 gboolean		nm_device_autoconnect_allowed	(NMDevice *self);
 
 NMDeviceState nm_device_get_state (NMDevice *device);
 
+gboolean nm_device_get_enabled (NMDevice *device);
+
+void nm_device_set_enabled (NMDevice *device, gboolean enabled);
+
+RfKillType nm_device_get_rfkill_type (NMDevice *device);
+
 gboolean nm_device_get_managed (NMDevice *device);
 void nm_device_set_managed (NMDevice *device,
                             gboolean managed,
                             NMDeviceStateReason reason);
 
-void nm_device_set_dhcp_timeout (NMDevice *device, guint32 timeout);
-void nm_device_set_dhcp_anycast_address (NMDevice *device, guint8 *addr);
-
 void nm_device_clear_autoconnect_inhibit (NMDevice *device);
 
-gboolean nm_device_dhcp4_renew (NMDevice *device, gboolean release);
+void nm_device_handle_autoip4_event (NMDevice *self,
+                                     const char *event,
+                                     const char *address);
+
+void nm_device_state_changed (NMDevice *device,
+                              NMDeviceState state,
+                              NMDeviceStateReason reason);
+
+void nm_device_queue_state   (NMDevice *self,
+                              NMDeviceState state,
+                              NMDeviceStateReason reason);
+
+gboolean nm_device_get_firmware_missing (NMDevice *self);
+
+gboolean nm_device_activate (NMDevice *device, NMActRequest *req, GError **error);
+
+gboolean nm_device_disconnect (NMDevice *device, GError **error);
 
 G_END_DECLS