/** * nm_device_bridge_get_hw_address: * @device: a #NMDeviceBridge * * Gets the hardware (MAC) address of the #NMDeviceBridge * * Returns: the hardware address. This is the internal string used by the * device, and must not be modified. **/ const char * nm_device_bridge_get_hw_address (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL); return nm_str_not_empty (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address); }
/** * nm_device_bridge_get_carrier: * @device: a #NMDeviceBridge * * Whether the device has carrier. * * Returns: %TRUE if the device has carrier **/ gboolean nm_device_bridge_get_carrier (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), FALSE); return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->carrier; }
static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); GPtrArray *slaves; GSList *list, *iter; char *hwaddr; switch (prop_id) { case PROP_HW_ADDRESS: hwaddr = nm_utils_hwaddr_ntoa (priv->hw_addr, nm_utils_hwaddr_type (priv->hw_addr_len)); g_value_take_string (value, hwaddr); break; case PROP_CARRIER: g_value_set_boolean (value, nm_device_wired_get_carrier (NM_DEVICE_WIRED (object))); break; case PROP_SLAVES: slaves = g_ptr_array_new (); list = nm_device_master_get_slaves (NM_DEVICE (object)); for (iter = list; iter; iter = iter->next) g_ptr_array_add (slaves, g_strdup (nm_device_get_path (NM_DEVICE (iter->data)))); g_slist_free (list); g_value_take_boxed (value, slaves); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
/** * nm_device_bridge_get_slaves: * @device: a #NMDeviceBridge * * Gets the devices currently slaved to @device. * * Returns: (element-type NMDevice): the #GPtrArray containing * #NMDevices that are slaves of @device. This is the internal * copy used by the device, and must not be modified. **/ const GPtrArray * nm_device_bridge_get_slaves (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), FALSE); return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->slaves; }
/** * nm_device_bridge_get_slaves: * @device: a #NMDeviceBridge * * Gets the devices currently slaved to @device. * * Returns: (element-type NMClient.Device): the #GPtrArray containing * #NMDevice<!-- -->s that are slaves of @device. This is the internal * copy used by the device, and must not be modified. * * Since: 0.9.8 **/ const GPtrArray * nm_device_bridge_get_slaves (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), FALSE); _nm_object_ensure_inited (NM_OBJECT (device)); return handle_ptr_array_return (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->slaves); }
/** * nm_device_bridge_get_carrier: * @device: a #NMDeviceBridge * * Whether the device has carrier. * * Returns: %TRUE if the device has carrier * * Since: 0.9.8 **/ gboolean nm_device_bridge_get_carrier (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), FALSE); _nm_object_ensure_inited (NM_OBJECT (device)); return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->carrier; }
/** * nm_device_bridge_get_hw_address: * @device: a #NMDeviceBridge * * Gets the hardware (MAC) address of the #NMDeviceBridge * * Returns: the hardware address. This is the internal string used by the * device, and must not be modified. * * Since: 0.9.8 **/ const char * nm_device_bridge_get_hw_address (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL); _nm_object_ensure_inited (NM_OBJECT (device)); return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address; }
static void dispose (GObject *object) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); g_clear_pointer (&priv->slaves, g_ptr_array_unref); G_OBJECT_CLASS (nm_device_bridge_parent_class)->dispose (object); }
static void finalize (GObject *object) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); g_free (priv->hw_address); G_OBJECT_CLASS (nm_device_bridge_parent_class)->finalize (object); }
static void nm_device_bridge_init (NMDeviceBridge *device) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (device); _nm_device_set_device_type (NM_DEVICE (device), NM_DEVICE_TYPE_BRIDGE); priv->slaves = g_ptr_array_new (); }
static void constructed (GObject *object) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); G_OBJECT_CLASS (nm_device_bridge_parent_class)->constructed (object); priv->proxy = _nm_object_new_proxy (NM_OBJECT (object), NULL, NM_DBUS_INTERFACE_DEVICE_BRIDGE); register_properties (NM_DEVICE_BRIDGE (object)); }
static gboolean spec_match_list (NMDevice *device, const GSList *specs) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (device); char *hwaddr; gboolean matched; hwaddr = nm_utils_hwaddr_ntoa (priv->hw_addr, nm_utils_hwaddr_type (priv->hw_addr_len)); matched = nm_match_spec_hwaddr (specs, hwaddr); g_free (hwaddr); return matched; }
static void update_hw_address (NMDevice *dev) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (dev); gsize addrlen; gboolean changed = FALSE; addrlen = nm_device_read_hwaddr (dev, priv->hw_addr, sizeof (priv->hw_addr), &changed); if (addrlen) { priv->hw_addr_len = addrlen; if (changed) g_object_notify (G_OBJECT (dev), NM_DEVICE_BRIDGE_HW_ADDRESS); } }
static void register_properties (NMDeviceBridge *device) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (device); const NMPropertiesInfo property_info[] = { { NM_DEVICE_BRIDGE_HW_ADDRESS, &priv->hw_address }, { NM_DEVICE_BRIDGE_CARRIER, &priv->carrier }, { NM_DEVICE_BRIDGE_SLAVES, &priv->slaves, NULL, NM_TYPE_DEVICE }, { NULL }, }; _nm_object_register_properties (NM_OBJECT (device), priv->proxy, property_info); }
static void dispose (GObject *object) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); g_clear_object (&priv->proxy); if (priv->slaves) { g_ptr_array_foreach (priv->slaves, (GFunc) g_object_unref, NULL); g_ptr_array_free (priv->slaves, TRUE); priv->slaves = NULL; } G_OBJECT_CLASS (nm_device_bridge_parent_class)->dispose (object); }
static void init_dbus (NMObject *object) { NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object); const NMPropertiesInfo property_info[] = { { NM_DEVICE_BRIDGE_HW_ADDRESS, &priv->hw_address }, { NM_DEVICE_BRIDGE_CARRIER, &priv->carrier }, { NM_DEVICE_BRIDGE_SLAVES, &priv->slaves, NULL, NM_TYPE_DEVICE }, { NULL }, }; NM_OBJECT_CLASS (nm_device_bridge_parent_class)->init_dbus (object); _nm_object_register_properties (object, NM_DBUS_INTERFACE_DEVICE_BRIDGE, property_info); }
static const guint8 * get_hw_address (NMDevice *device, guint *out_len) { *out_len = NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_addr_len; return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_addr; }