diff options
Diffstat (limited to 'src/nm-device.h')
| -rw-r--r-- | src/nm-device.h | 137 |
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 |