## NMDevice NMDevice |

## Synopsis

                        NMDevice;
                        NMDeviceClass;
    void                (*NMDeviceDeactivateFn)             (NMDevice *device,
                                                             GError *error,
                                                             gpointer user_data);
    #define             NM_DEVICE_ACTIVE_CONNECTION
    #define             NM_DEVICE_CAPABILITIES
    #define             NM_DEVICE_DEVICE_TYPE
    #define             NM_DEVICE_DHCP4_CONFIG
    #define             NM_DEVICE_DHCP6_CONFIG
    #define             NM_DEVICE_DRIVER
    #define             NM_DEVICE_FIRMWARE_MISSING
    #define             NM_DEVICE_INTERFACE
    #define             NM_DEVICE_IP4_CONFIG
    #define             NM_DEVICE_IP6_CONFIG
    #define             NM_DEVICE_IP_INTERFACE
    #define             NM_DEVICE_MANAGED
    #define             NM_DEVICE_PRODUCT
    #define             NM_DEVICE_STATE
    #define             NM_DEVICE_STATE_REASON
    #define             NM_DEVICE_UDI
    #define             NM_DEVICE_VENDOR
    gboolean            nm_device_connection_valid          (NMDevice *device,
                                                             NMConnection *connection);
    void                nm_device_disconnect                (NMDevice *device,
                                                             NMDeviceDeactivateFn callback,
                                                             gpointer user_data);
    GSList *            nm_device_filter_connections        (NMDevice *device,
                                                             const GSList *connections);
    NMActiveConnection * nm_device_get_active_connection    (NMDevice *device);
    NMDeviceCapabilities nm_device_get_capabilities         (NMDevice *device);
    NMDeviceType        nm_device_get_device_type           (NMDevice *device);
    NMDHCP4Config *     nm_device_get_dhcp4_config          (NMDevice *device);
    NMDHCP6Config *     nm_device_get_dhcp6_config          (NMDevice *device);
    const char *        nm_device_get_driver                (NMDevice *device);
    gboolean            nm_device_get_firmware_missing      (NMDevice *device);
    const char *        nm_device_get_iface                 (NMDevice *device);
    NMIP4Config *       nm_device_get_ip4_config            (NMDevice *device);
    NMIP6Config *       nm_device_get_ip6_config            (NMDevice *device);
    const char *        nm_device_get_ip_iface              (NMDevice *device);
    gboolean            nm_device_get_managed               (NMDevice *device);
    const char *        nm_device_get_product               (NMDevice *device);
    NMDeviceState       nm_device_get_state                 (NMDevice *device);
    NMDeviceState       nm_device_get_state_reason          (NMDevice *device,
                                                             NMDeviceStateReason *reason);
    const char *        nm_device_get_udi                   (NMDevice *device);
    const char *        nm_device_get_vendor                (NMDevice *device);
    GObject *           nm_device_new                       (DBusGConnection *connection,
                                                             const char *path);

## Object Hierarchy

      GObject
       +----NMObject
             +----NMDevice
                   +----NMDeviceEthernet
                   +----NMDeviceWifi
                   +----NMDeviceModem
                   +----NMDeviceBt
                   +----NMDeviceWimax
                   +----NMDeviceOlpcMesh
                   +----NMDeviceInfiniband
                   +----NMDeviceBond
                   +----NMDeviceVlan

## Implemented Interfaces

NMDevice implements GInitable and GAsyncInitable.

## Properties

      "active-connection"        NMActiveConnection*   : Read
      "capabilities"             guint                 : Read
      "device-type"              guint                 : Read
      "dhcp4-config"             NMDHCP4Config*        : Read
      "dhcp6-config"             NMDHCP6Config*        : Read
      "driver"                   gchar*                : Read
      "firmware-missing"         gboolean              : Read
      "interface"                gchar*                : Read
      "ip-interface"             gchar*                : Read
      "ip4-config"               NMIP4Config*          : Read
      "ip6-config"               NMIP6Config*          : Read
      "managed"                  gboolean              : Read
      "product"                  gchar*                : Read
      "state"                    guint                 : Read
      "state-reason"             GValueArray_guint+guint_*  : Read
      "udi"                      gchar*                : Read
      "vendor"                   gchar*                : Read

## Signals

      "state-changed"                                  : Run First

## Description

## Details

### NMDevice

    typedef struct _NMDevice NMDevice;

### NMDeviceClass

    typedef struct {
    	NMObjectClass parent;

    	/* Signals */
    	void (*state_changed) (NMDevice *device,
    	                       NMDeviceState new_state,
    	                       NMDeviceState old_state,
    	                       NMDeviceStateReason reason);

    	gboolean (*connection_compatible) (NMDevice *device,
    	                                   NMConnection *connection,
    	                                   GError **error);

    	/* Padding for future expansion */
    	void (*_reserved1) (void);
    	void (*_reserved2) (void);
    	void (*_reserved3) (void);
    	void (*_reserved4) (void);
    	void (*_reserved5) (void);
    	void (*_reserved6) (void);
    } NMDeviceClass;

### NMDeviceDeactivateFn ()

    void                (*NMDeviceDeactivateFn)             (NMDevice *device,
                                                             GError *error,
                                                             gpointer user_data);

### NM_DEVICE_ACTIVE_CONNECTION

    #define NM_DEVICE_ACTIVE_CONNECTION "active-connection"

### NM_DEVICE_CAPABILITIES

    #define NM_DEVICE_CAPABILITIES "capabilities"

### NM_DEVICE_DEVICE_TYPE

    #define NM_DEVICE_DEVICE_TYPE "device-type"

### NM_DEVICE_DHCP4_CONFIG

    #define NM_DEVICE_DHCP4_CONFIG "dhcp4-config"

### NM_DEVICE_DHCP6_CONFIG

    #define NM_DEVICE_DHCP6_CONFIG "dhcp6-config"

### NM_DEVICE_DRIVER

    #define NM_DEVICE_DRIVER "driver"

### NM_DEVICE_FIRMWARE_MISSING

    #define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"

### NM_DEVICE_INTERFACE

    #define NM_DEVICE_INTERFACE "interface"

### NM_DEVICE_IP4_CONFIG

    #define NM_DEVICE_IP4_CONFIG "ip4-config"

### NM_DEVICE_IP6_CONFIG

    #define NM_DEVICE_IP6_CONFIG "ip6-config"

### NM_DEVICE_IP_INTERFACE

    #define NM_DEVICE_IP_INTERFACE "ip-interface"

### NM_DEVICE_MANAGED

    #define NM_DEVICE_MANAGED "managed"

### NM_DEVICE_PRODUCT

    #define NM_DEVICE_PRODUCT "product"

### NM_DEVICE_STATE

    #define NM_DEVICE_STATE "state"

### NM_DEVICE_STATE_REASON

    #define NM_DEVICE_STATE_REASON "state-reason"

### NM_DEVICE_UDI

    #define NM_DEVICE_UDI "udi"

### NM_DEVICE_VENDOR

    #define NM_DEVICE_VENDOR "vendor"

### nm_device_connection_valid ()

    gboolean            nm_device_connection_valid          (NMDevice *device,
                                                             NMConnection *connection);

Validates a given connection for a given NMDevice object and returns whether the connection may be activated with the device. For example if `device` is a WiFi device that supports only WEP encryption, the connection will only be valid if it is a WiFi connection which describes a WEP or open network, and will not be valid if it describes a WPA network, or if it is an Ethernet, Bluetooth, WWAN, etc connection that is incompatible with the device.

`device` : | an NMDevice to validate `connection` against
`connection` : | an NMConnection to validate against `device`
Returns : | `TRUE` if the connection may be activated with this device, `FALSE` if is incompatible with the device's capabilities and characteristics.

### nm_device_disconnect ()

    void                nm_device_disconnect                (NMDevice *device,
                                                             NMDeviceDeactivateFn callback,
                                                             gpointer user_data);

Disconnects the device if currently connected, and prevents the device from automatically connecting to networks until the next manual network connection request.

`device` : | a NMDevice
`callback` : | callback to be called when disconnect operation completes. [scope async][allow-none]
`user_data` : | caller-specific data passed to `callback`. [closure]

### nm_device_filter_connections ()

    GSList *            nm_device_filter_connections        (NMDevice *device,
                                                             const GSList *connections);

Filters a given list of connections for a given NMDevice object and return connections which may be activated with the device. For example if `device` is a WiFi device that supports only WEP encryption, the returned list will contain any WiFi connections in `connections` that allow connection to unencrypted or WEP-enabled SSIDs. The returned list will not contain Ethernet, Bluetooth, WiFi WPA connections, or any other connection that is incompatible with the device. To get the full list of connections see `nm_remote_settings_list_connections()`.

`device` : | an NMDevice to filter connections for
`connections` : | a list of NMConnection objects to filter. [element-type NetworkManager.Connection]
Returns : | a list of NMConnection objects that could be activated with the given `device`. The elements of the list are owned by their creator and should not be freed by the caller, but the returned list itself is owned by the caller and should be freed with `g_slist_free()` when it is no longer required. [transfer container][element-type NetworkManager.Connection]

### nm_device_get_active_connection ()

    NMActiveConnection * nm_device_get_active_connection    (NMDevice *device);

Gets the NMActiveConnection object which owns this device during activation.

`device` : | a NMDevice
Returns : | the NMActiveConnection or `NULL` if the device is not part of an active connection. [transfer none]

### nm_device_get_capabilities ()

    NMDeviceCapabilities nm_device_get_capabilities         (NMDevice *device);

Gets the device' capabilities.

`device` : | a NMDevice
Returns : | the capabilities

### nm_device_get_device_type ()

    NMDeviceType        nm_device_get_device_type           (NMDevice *device);

Returns the numeric type of the NMDevice, ie ethernet, wifi, etc.

`device` : | a NMDevice
Returns : | the device type

### nm_device_get_dhcp4_config ()

    NMDHCP4Config *     nm_device_get_dhcp4_config          (NMDevice *device);

Gets the current NMDHCP4Config associated with the NMDevice.

`device` : | a NMDevice
Returns : | the NMDHCPConfig or `NULL` if the device is not activated or not using DHCP. [transfer none]

### nm_device_get_dhcp6_config ()

    NMDHCP6Config *     nm_device_get_dhcp6_config          (NMDevice *device);

Gets the current NMDHCP6Config associated with the NMDevice.

`device` : | a NMDevice
Returns : | the NMDHCPConfig or `NULL` if the device is not activated or not using DHCP. [transfer none]

### nm_device_get_driver ()

    const char *        nm_device_get_driver                (NMDevice *device);

Gets the driver of the NMDevice.

`device` : | a NMDevice
Returns : | the driver of the device. This is the internal string used by the device, and must not be modified.

### nm_device_get_firmware_missing ()

    gboolean            nm_device_get_firmware_missing      (NMDevice *device);

Indicates that firmware required for the device's operation is likely to be missing.

`device` : | a NMDevice
Returns : | `TRUE` if firmware required for the device's operation is likely to be missing.

### nm_device_get_iface ()

    const char *        nm_device_get_iface                 (NMDevice *device);

Gets the interface name of the NMDevice.

`device` : | a NMDevice
Returns : | the interface of the device. This is the internal string used by the device, and must not be modified.

### nm_device_get_ip4_config ()

    NMIP4Config *       nm_device_get_ip4_config            (NMDevice *device);

Gets the current NMIP4Config associated with the NMDevice.

`device` : | a NMDevice
Returns : | the NMIP4Config or `NULL` if the device is not activated. [transfer none]

### nm_device_get_ip6_config ()

    NMIP6Config *       nm_device_get_ip6_config            (NMDevice *device);

Gets the current NMIP6Config associated with the NMDevice.

`device` : | a NMDevice
Returns : | the NMIP6Config or `NULL` if the device is not activated. [transfer none]

### nm_device_get_ip_iface ()

    const char *        nm_device_get_ip_iface              (NMDevice *device);

Gets the IP interface name of the NMDevice over which IP traffic flows when the device is in the ACTIVATED state.

`device` : | a NMDevice
Returns : | the IP traffic interface of the device. This is the internal string used by the device, and must not be modified.

### nm_device_get_managed ()

    gboolean            nm_device_get_managed               (NMDevice *device);

Whether the NMDevice is managed by NetworkManager.

`device` : | a NMDevice
Returns : | `TRUE` if the device is managed by NetworkManager

### nm_device_get_product ()

    const char *        nm_device_get_product               (NMDevice *device);

Gets the product string of the NMDevice.

`device` : | a NMDevice
Returns : | the product name of the device. This is the internal string used by the device, and must not be modified.

### nm_device_get_state ()

    NMDeviceState       nm_device_get_state                 (NMDevice *device);

Gets the current NMDevice state.

`device` : | a NMDevice
Returns : | the current device state

### nm_device_get_state_reason ()

    NMDeviceState       nm_device_get_state_reason          (NMDevice *device,
                                                             NMDeviceStateReason *reason);

Gets the current NMDevice state (return value) and the reason for entering the state (`reason` argument).

`device` : | a NMDevice
`reason` : | location to store reason (NMDeviceStateReason), or NULL. [out][allow-none]
Returns : | the current device state

### nm_device_get_udi ()

    const char *        nm_device_get_udi                   (NMDevice *device);

Gets the Unique Device Identifier of the NMDevice.

`device` : | a NMDevice
Returns : | the Unique Device Identifier of the device. This identifier may be used to gather more information about the device from various operating system services like udev or sysfs.

### nm_device_get_vendor ()

    const char *        nm_device_get_vendor                (NMDevice *device);

Gets the vendor string of the NMDevice.

`device` : | a NMDevice
Returns : | the vendor name of the device. This is the internal string used by the device, and must not be modified.

### nm_device_new ()

    GObject *           nm_device_new                       (DBusGConnection *connection,
                                                             const char *path);

Creates a new NMDevice.

`connection` : | the DBusGConnection
`path` : | the DBus object path of the device
Returns : | a new device. [transfer full]

## Property Details

### The `"active-connection"` property

      "active-connection"        NMActiveConnection*   : Read

The NMActiveConnection object that "owns" this device during activation.

### The `"capabilities"` property

      "capabilities"             guint                 : Read

The capabilities of the device.

Default value: 0

### The `"device-type"` property

      "device-type"              guint                 : Read

The numeric type of the device.

Default value: 0

### The `"dhcp4-config"` property

      "dhcp4-config"             NMDHCP4Config*        : Read

The NMDHCP4Config of the device.

### The `"dhcp6-config"` property

      "dhcp6-config"             NMDHCP6Config*        : Read

The NMDHCP6Config of the device.

### The `"driver"` property

      "driver"                   gchar*                : Read

The driver of the device.

Default value: NULL

### The `"firmware-missing"` property

      "firmware-missing"         gboolean              : Read

When `TRUE` indicates the device is likely missing firmware required for its operation.

Default value: FALSE

### The `"interface"` property

      "interface"                gchar*                : Read

The interface of the device.

Default value: NULL

### The `"ip-interface"` property

      "ip-interface"             gchar*                : Read

The IP interface of the device which should be used for all IP-related operations like addressing and routing.

Default value: NULL

### The `"ip4-config"` property

      "ip4-config"               NMIP4Config*          : Read

The NMIP4Config of the device.

### The `"ip6-config"` property

      "ip6-config"               NMIP6Config*          : Read

The NMIP6Config of the device.

### The `"managed"` property

      "managed"                  gboolean              : Read

Whether the device is managed by NetworkManager.

Default value: FALSE

### The `"product"` property

      "product"                  gchar*                : Read

The product string of the device.

Default value: NULL

### The `"state"` property

      "state"                    guint                 : Read

The state of the device.

Default value: 0

### The `"state-reason"` property

      "state-reason"             GValueArray_guint+guint_*  : Read

The state and reason of the device.

### The `"udi"` property

      "udi"                      gchar*                : Read

An operating-system specific device hardware identifier; this is not unique to a specific hardware device across reboots or hotplugs. It is an opaque string which for some device types (Bluetooth, Modem) contains an identifier provided by the underlying hardware service daemon such as Bluez or ModemManager, and clients can use this property to request more information about the device from those services.

Default value: NULL

### The `"vendor"` property

      "vendor"                   gchar*                : Read

The vendor string of the device.

Default value: NULL

## Signal Details

### The `"state-changed"` signal

    void                user_function                      (NMDevice *device,
                                                            guint     state,
                                                            guint     arg2,
                                                            guint     arg3,
                                                            gpointer  user_data)      : Run First

Notifies the state change of a NMDevice.

`device` : | the client that received the signal
`state` : | the new state of the device
`user_data` : | user data set when the signal handler was connected.