LINUX.ORG.RU

glib network

 , ,


0

1

Здравствуйте! Начал перевод простенького NM на glib (до - скрипты c исп-ем nmcli, через system()). Сразу проблема - не могу получить устройства. В документации просто написано:

path: the DBus object path of the device

Формат и пример найти уже полдня не могу. Помогите, кто работал с этим. Заранее спасибо!

static DBusGConnection *connection = NULL;
static GObject *wifi_dev = NULL;

int dbus_network_connection_init(void)
{
    error = NULL;
    connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
    if (connection == NULL) {
        g_printerr("Failed to open connection to bus: %s\n", error->message);
        g_error_free(error);
        return 1;
    }
     wifi_dev = nm_device_wifi_new (connection,???);
    if (wifi_dev == NULL) {
        return 1;
    }
  return 0;
}


решение


enum network_device_type_t {
    NM_WIFI_DEVICE, 
    NM_ETHERNET_DEVICE
};

NMClient *client = NULL;

NMDevice *get_nm_device_by_type(enum network_device_type_t dev_type)
{
    client = nm_client_new();
    const GPtrArray *devices = nm_client_get_devices(client);
    if (devices) {
        for (int i = 0; i < devices->len; i++) {
            if ( NM_IS_DEVICE_WIFI(devices->pdata[i])
                    && (dev_type == NM_WIFI_DEVICE)) {
                return NM_DEVICE(devices->pdata[i]);
            }
            if ( NM_IS_DEVICE_ETHERNET(devices->pdata[i])
                    && (dev_type == NM_ETHERNET_DEVICE)) {
                return NM_DEVICE(devices->pdata[i]);
            }
        }
    }
    return NULL;
}
Ya-NET
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.