summaryrefslogtreecommitdiff
path: root/src/devices/adsl/nm-atm-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/adsl/nm-atm-manager.c')
-rw-r--r--src/devices/adsl/nm-atm-manager.c361
1 files changed, 182 insertions, 179 deletions
diff --git a/src/devices/adsl/nm-atm-manager.c b/src/devices/adsl/nm-atm-manager.c
index 46d74a07fe..308844940a 100644
--- a/src/devices/adsl/nm-atm-manager.c
+++ b/src/devices/adsl/nm-atm-manager.c
@@ -16,253 +16,256 @@
/*****************************************************************************/
-#define NM_TYPE_ATM_MANAGER (nm_atm_manager_get_type ())
-#define NM_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_ATM_MANAGER, NMAtmManager))
-#define NM_ATM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_ATM_MANAGER, NMAtmManagerClass))
-#define NM_IS_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_ATM_MANAGER))
-#define NM_IS_ATM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_ATM_MANAGER))
-#define NM_ATM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_ATM_MANAGER, NMAtmManagerClass))
+#define NM_TYPE_ATM_MANAGER (nm_atm_manager_get_type())
+#define NM_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_ATM_MANAGER, NMAtmManager))
+#define NM_ATM_MANAGER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_ATM_MANAGER, NMAtmManagerClass))
+#define NM_IS_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_ATM_MANAGER))
+#define NM_IS_ATM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_ATM_MANAGER))
+#define NM_ATM_MANAGER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_ATM_MANAGER, NMAtmManagerClass))
typedef struct {
- NMUdevClient *udev_client;
- GSList *devices;
+ NMUdevClient *udev_client;
+ GSList * devices;
} NMAtmManagerPrivate;
typedef struct {
- NMDeviceFactory parent;
- NMAtmManagerPrivate _priv;
+ NMDeviceFactory parent;
+ NMAtmManagerPrivate _priv;
} NMAtmManager;
typedef struct {
- NMDeviceFactoryClass parent;
+ NMDeviceFactoryClass parent;
} NMAtmManagerClass;
-static GType nm_atm_manager_get_type (void);
+static GType nm_atm_manager_get_type(void);
-G_DEFINE_TYPE (NMAtmManager, nm_atm_manager, NM_TYPE_DEVICE_FACTORY);
+G_DEFINE_TYPE(NMAtmManager, nm_atm_manager, NM_TYPE_DEVICE_FACTORY);
-#define NM_ATM_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMAtmManager, NM_IS_ATM_MANAGER)
+#define NM_ATM_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE(self, NMAtmManager, NM_IS_ATM_MANAGER)
/*****************************************************************************/
-NM_DEVICE_FACTORY_DECLARE_TYPES (
- NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_ADSL_SETTING_NAME)
-);
+NM_DEVICE_FACTORY_DECLARE_TYPES(
+ NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES(NM_SETTING_ADSL_SETTING_NAME));
G_MODULE_EXPORT NMDeviceFactory *
-nm_device_factory_create (GError **error)
+ nm_device_factory_create(GError **error)
{
- return (NMDeviceFactory *) g_object_new (NM_TYPE_ATM_MANAGER, NULL);
+ return (NMDeviceFactory *) g_object_new(NM_TYPE_ATM_MANAGER, NULL);
}
/*****************************************************************************/
static gboolean
-dev_get_attrs (struct udev_device *udev_device,
- const char **out_path,
- char **out_driver)
+dev_get_attrs(struct udev_device *udev_device, const char **out_path, char **out_driver)
{
- struct udev_device *parent = NULL;
- const char *driver, *path;
-
- g_return_val_if_fail (udev_device != NULL, FALSE);
- g_return_val_if_fail (out_path != NULL, FALSE);
- g_return_val_if_fail (out_driver != NULL, FALSE);
-
- path = udev_device_get_syspath (udev_device);
- if (!path) {
- nm_log_warn (LOGD_PLATFORM, "couldn't determine device path; ignoring...");
- return FALSE;
- }
-
- driver = udev_device_get_driver (udev_device);
- if (!driver) {
- /* Try the parent */
- parent = udev_device_get_parent (udev_device);
- if (parent)
- driver = udev_device_get_driver (parent);
- }
-
- *out_path = path;
- *out_driver = g_strdup (driver);
-
- return TRUE;
+ struct udev_device *parent = NULL;
+ const char * driver, *path;
+
+ g_return_val_if_fail(udev_device != NULL, FALSE);
+ g_return_val_if_fail(out_path != NULL, FALSE);
+ g_return_val_if_fail(out_driver != NULL, FALSE);
+
+ path = udev_device_get_syspath(udev_device);
+ if (!path) {
+ nm_log_warn(LOGD_PLATFORM, "couldn't determine device path; ignoring...");
+ return FALSE;
+ }
+
+ driver = udev_device_get_driver(udev_device);
+ if (!driver) {
+ /* Try the parent */
+ parent = udev_device_get_parent(udev_device);
+ if (parent)
+ driver = udev_device_get_driver(parent);
+ }
+
+ *out_path = path;
+ *out_driver = g_strdup(driver);
+
+ return TRUE;
}
static void
-device_destroyed (gpointer user_data, GObject *dead)
+device_destroyed(gpointer user_data, GObject *dead)
{
- NMAtmManager *self = NM_ATM_MANAGER (user_data);
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
+ NMAtmManager * self = NM_ATM_MANAGER(user_data);
+ NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE(self);
- priv->devices = g_slist_remove (priv->devices, dead);
+ priv->devices = g_slist_remove(priv->devices, dead);
}
static void
-adsl_add (NMAtmManager *self, struct udev_device *udev_device)
+adsl_add(NMAtmManager *self, struct udev_device *udev_device)
{
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
- const char *ifname, *sysfs_path = NULL;
- char *driver = NULL;
- gs_free char *atm_index_path = NULL;
- int atm_index;
- NMDevice *device;
-
- g_return_if_fail (udev_device != NULL);
-
- ifname = udev_device_get_sysname (udev_device);
- if (!ifname) {
- nm_log_warn (LOGD_PLATFORM, "failed to get device's interface name");
- return;
- }
-
- nm_log_dbg (LOGD_PLATFORM, "(%s): found ATM device", ifname);
-
- atm_index_path = g_strdup_printf ("/sys/class/atm/%s/atmindex",
- NM_ASSERT_VALID_PATH_COMPONENT (ifname));
- atm_index = (int) nm_platform_sysctl_get_int_checked (NM_PLATFORM_GET,
- NMP_SYSCTL_PATHID_ABSOLUTE (atm_index_path),
- 10, 0, G_MAXINT,
- -1);
- if (atm_index < 0) {
- nm_log_warn (LOGD_PLATFORM, "(%s): failed to get ATM index", ifname);
- return;
- }
-
- if (!dev_get_attrs (udev_device, &sysfs_path, &driver)) {
- nm_log_warn (LOGD_PLATFORM, "(%s): failed to get ATM attributes", ifname);
- return;
- }
-
- g_assert (sysfs_path);
-
- device = nm_device_adsl_new (sysfs_path, ifname, driver, atm_index);
- g_assert (device);
-
- priv->devices = g_slist_prepend (priv->devices, device);
- g_object_weak_ref (G_OBJECT (device), device_destroyed, self);
-
- g_signal_emit_by_name (self, NM_DEVICE_FACTORY_DEVICE_ADDED, device);
- g_object_unref (device);
-
- g_free (driver);
+ NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE(self);
+ const char * ifname, *sysfs_path = NULL;
+ char * driver = NULL;
+ gs_free char * atm_index_path = NULL;
+ int atm_index;
+ NMDevice * device;
+
+ g_return_if_fail(udev_device != NULL);
+
+ ifname = udev_device_get_sysname(udev_device);
+ if (!ifname) {
+ nm_log_warn(LOGD_PLATFORM, "failed to get device's interface name");
+ return;
+ }
+
+ nm_log_dbg(LOGD_PLATFORM, "(%s): found ATM device", ifname);
+
+ atm_index_path =
+ g_strdup_printf("/sys/class/atm/%s/atmindex", NM_ASSERT_VALID_PATH_COMPONENT(ifname));
+ atm_index = (int) nm_platform_sysctl_get_int_checked(NM_PLATFORM_GET,
+ NMP_SYSCTL_PATHID_ABSOLUTE(atm_index_path),
+ 10,
+ 0,
+ G_MAXINT,
+ -1);
+ if (atm_index < 0) {
+ nm_log_warn(LOGD_PLATFORM, "(%s): failed to get ATM index", ifname);
+ return;
+ }
+
+ if (!dev_get_attrs(udev_device, &sysfs_path, &driver)) {
+ nm_log_warn(LOGD_PLATFORM, "(%s): failed to get ATM attributes", ifname);
+ return;
+ }
+
+ g_assert(sysfs_path);
+
+ device = nm_device_adsl_new(sysfs_path, ifname, driver, atm_index);
+ g_assert(device);
+
+ priv->devices = g_slist_prepend(priv->devices, device);
+ g_object_weak_ref(G_OBJECT(device), device_destroyed, self);
+
+ g_signal_emit_by_name(self, NM_DEVICE_FACTORY_DEVICE_ADDED, device);
+ g_object_unref(device);
+
+ g_free(driver);
}
static void
-adsl_remove (NMAtmManager *self, struct udev_device *udev_device)
+adsl_remove(NMAtmManager *self, struct udev_device *udev_device)
{
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
- const char *iface = udev_device_get_sysname (udev_device);
- GSList *iter;
+ NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE(self);
+ const char * iface = udev_device_get_sysname(udev_device);
+ GSList * iter;
- nm_log_dbg (LOGD_PLATFORM, "(%s): removing ATM device", iface);
+ nm_log_dbg(LOGD_PLATFORM, "(%s): removing ATM device", iface);
- for (iter = priv->devices; iter; iter = iter->next) {
- NMDevice *device = iter->data;
+ for (iter = priv->devices; iter; iter = iter->next) {
+ NMDevice *device = iter->data;
- /* Match 'iface' not 'ip_iface' to the ATM device instead of the
+ /* Match 'iface' not 'ip_iface' to the ATM device instead of the
* NAS bridge interface or PPPoE interface.
*/
- if (g_strcmp0 (nm_device_get_iface (device), iface) != 0)
- continue;
-
- g_object_weak_unref (G_OBJECT (iter->data), device_destroyed, self);
- priv->devices = g_slist_remove (priv->devices, device);
- g_signal_emit_by_name (device, NM_DEVICE_REMOVED);
- break;
- }
+ if (g_strcmp0(nm_device_get_iface(device), iface) != 0)
+ continue;
+
+ g_object_weak_unref(G_OBJECT(iter->data), device_destroyed, self);
+ priv->devices = g_slist_remove(priv->devices, device);
+ g_signal_emit_by_name(device, NM_DEVICE_REMOVED);
+ break;
+ }
}
static void
-start (NMDeviceFactory *factory)
+start(NMDeviceFactory *factory)
{
- NMAtmManager *self = NM_ATM_MANAGER (factory);
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
- struct udev_enumerate *enumerate;
- struct udev_list_entry *devices;
-
- enumerate = nm_udev_client_enumerate_new (priv->udev_client);
- udev_enumerate_add_match_is_initialized (enumerate);
- udev_enumerate_scan_devices (enumerate);
- devices = udev_enumerate_get_list_entry (enumerate);
- for (; devices; devices = udev_list_entry_get_next (devices)) {
- struct udev_device *udevice;
-
- udevice = udev_device_new_from_syspath (udev_enumerate_get_udev (enumerate),
- udev_list_entry_get_name (devices));
- if (udevice) {
- adsl_add (self, udevice);
- udev_device_unref (udevice);
- }
- }
- udev_enumerate_unref (enumerate);
+ NMAtmManager * self = NM_ATM_MANAGER(factory);
+ NMAtmManagerPrivate * priv = NM_ATM_MANAGER_GET_PRIVATE(self);
+ struct udev_enumerate * enumerate;
+ struct udev_list_entry *devices;
+
+ enumerate = nm_udev_client_enumerate_new(priv->udev_client);
+ udev_enumerate_add_match_is_initialized(enumerate);
+ udev_enumerate_scan_devices(enumerate);
+ devices = udev_enumerate_get_list_entry(enumerate);
+ for (; devices; devices = udev_list_entry_get_next(devices)) {
+ struct udev_device *udevice;
+
+ udevice = udev_device_new_from_syspath(udev_enumerate_get_udev(enumerate),
+ udev_list_entry_get_name(devices));
+ if (udevice) {
+ adsl_add(self, udevice);
+ udev_device_unref(udevice);
+ }
+ }
+ udev_enumerate_unref(enumerate);
}
static void
-handle_uevent (NMUdevClient *client,
- struct udev_device *device,
- gpointer user_data)
+handle_uevent(NMUdevClient *client, struct udev_device *device, gpointer user_data)
{
- NMAtmManager *self = NM_ATM_MANAGER (user_data);
- const char *subsys;
- const char *ifindex;
- guint64 seqnum;
- const char *action;
-
- action = udev_device_get_action (device);
-
- g_return_if_fail (action != NULL);
-
- /* A bit paranoid */
- subsys = udev_device_get_subsystem (device);
- g_return_if_fail (!g_strcmp0 (subsys, "atm"));
-
- ifindex = udev_device_get_property_value (device, "IFINDEX");
- seqnum = udev_device_get_seqnum (device);
- nm_log_dbg (LOGD_PLATFORM, "UDEV event: action '%s' subsys '%s' device '%s' (%s); seqnum=%" G_GUINT64_FORMAT,
- action, subsys, udev_device_get_sysname (device), ifindex ?: "unknown", seqnum);
-
- if (!strcmp (action, "add"))
- adsl_add (self, device);
- else if (!strcmp (action, "remove"))
- adsl_remove (self, device);
+ NMAtmManager *self = NM_ATM_MANAGER(user_data);
+ const char * subsys;
+ const char * ifindex;
+ guint64 seqnum;
+ const char * action;
+
+ action = udev_device_get_action(device);
+
+ g_return_if_fail(action != NULL);
+
+ /* A bit paranoid */
+ subsys = udev_device_get_subsystem(device);
+ g_return_if_fail(!g_strcmp0(subsys, "atm"));
+
+ ifindex = udev_device_get_property_value(device, "IFINDEX");
+ seqnum = udev_device_get_seqnum(device);
+ nm_log_dbg(LOGD_PLATFORM,
+ "UDEV event: action '%s' subsys '%s' device '%s' (%s); seqnum=%" G_GUINT64_FORMAT,
+ action,
+ subsys,
+ udev_device_get_sysname(device),
+ ifindex ?: "unknown",
+ seqnum);
+
+ if (!strcmp(action, "add"))
+ adsl_add(self, device);
+ else if (!strcmp(action, "remove"))
+ adsl_remove(self, device);
}
/*****************************************************************************/
static void
-nm_atm_manager_init (NMAtmManager *self)
+nm_atm_manager_init(NMAtmManager *self)
{
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
+ NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE(self);
- priv->udev_client = nm_udev_client_new ((const char *[]) {"atm", NULL },
- handle_uevent, self);
+ priv->udev_client = nm_udev_client_new((const char *[]){"atm", NULL}, handle_uevent, self);
}
static void
-dispose (GObject *object)
+dispose(GObject *object)
{
- NMAtmManager *self = NM_ATM_MANAGER (object);
- NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
- GSList *iter;
+ NMAtmManager * self = NM_ATM_MANAGER(object);
+ NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE(self);
+ GSList * iter;
- for (iter = priv->devices; iter; iter = iter->next)
- g_object_weak_unref (G_OBJECT (iter->data), device_destroyed, self);
- nm_clear_pointer (&priv->devices, g_slist_free);
+ for (iter = priv->devices; iter; iter = iter->next)
+ g_object_weak_unref(G_OBJECT(iter->data), device_destroyed, self);
+ nm_clear_pointer(&priv->devices, g_slist_free);
- priv->udev_client = nm_udev_client_unref (priv->udev_client);
+ priv->udev_client = nm_udev_client_unref(priv->udev_client);
- G_OBJECT_CLASS (nm_atm_manager_parent_class)->dispose (object);
+ G_OBJECT_CLASS(nm_atm_manager_parent_class)->dispose(object);
}
static void
-nm_atm_manager_class_init (NMAtmManagerClass *klass)
+nm_atm_manager_class_init(NMAtmManagerClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- NMDeviceFactoryClass *factory_class = NM_DEVICE_FACTORY_CLASS (klass);
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMDeviceFactoryClass *factory_class = NM_DEVICE_FACTORY_CLASS(klass);
- object_class->dispose = dispose;
+ object_class->dispose = dispose;
- factory_class->get_supported_types = get_supported_types;
- factory_class->start = start;
+ factory_class->get_supported_types = get_supported_types;
+ factory_class->start = start;
}