The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Использование элементов sysfs"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Сеть, сокеты)
Изначальное сообщение [ Отслеживать ]

"Использование элементов sysfs"  +/
Сообщение от anonymous (??) on 07-Апр-13, 20:23 
Добрый день!
Нужны гуру по sysfs. В частности, хотел бы знать, где в sysfs искать результаты скана беспроводных сетей (парсить вывод iw/iwlist кажется неправильным). Так же, если кто знает актуальный документ по sysfs, расположению в ней различных вещей (особенно относящихся к сети) и взаимодействию с ними, прошу дать линк. В /sys/class/net/wlan0/* результатов скана не нашел, только возможность запустить ре-скан.
Спасибо!
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Использование элементов sysfs"  +/
Сообщение от pavlinux (ok) on 08-Апр-13, 17:12 
> Так же, если кто знает актуальный документ по sysfs

http://lxr.linux.no/linux+v3.8.6/Documentation/ABI/stable/
http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...
http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Использование элементов sysfs"  +/
Сообщение от anonymous (??) on 08-Апр-13, 20:18 
>> Так же, если кто знает актуальный документ по sysfs
> http://lxr.linux.no/linux+v3.8.6/Documentation/ABI/stable/
> http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...
> http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...

Я правильно понял, что в sysfs этого нет? И мне надо смотреть в сторону libnl/ядерного интерфейса?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Использование элементов sysfs"  +1 +/
Сообщение от pavlinux (ok) on 11-Апр-13, 14:39 
>>> Так же, если кто знает актуальный документ по sysfs
>> http://lxr.linux.no/linux+v3.8.6/Documentation/ABI/stable/
>> http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...
>> http://lxr.linux.no/linux+v3.8.6/Documentation/filesystems/s...
> Я правильно понял, что в sysfs этого нет? И мне надо смотреть
> в сторону libnl/ядерного интерфейса?


static void list_stations(const char *ifname)
{
    uint8_t buf[24 * 1024];
    struct iwreq iwr;
    uint8_t *cp;
    int s, len;

    s = socket(AF_INET, SOCK_DGRAM, 0);
    if (s < 0)
        err(1, "socket(SOCK_DGRAM)");

    (void) memset(&iwr, 0, sizeof(iwr));
    (void) strncpy(iwr.ifr_name, ifname, sizeof(iwr.ifr_name));
    iwr.u.data.pointer = (void *)buf;
    iwr.u.data.length = sizeof(buf);
    if (ioctl(s, IEEE80211_IOCTL_STA_INFO, &iwr) < 0)
        errx(1, "unable to get station information");
    len = iwr.u.data.length;
    if (len < sizeof(struct ieee80211req_sta_info))
        return;
    close(s);

    printf("%-17.17s %4s %4s %4s %4s %4s %5s %6s %7s %6s %7s %4s %5s %3s %8s %8s\n",
        "ADDR",    "AID", "CHAN", "RATE", "RSSI", "DBM", "IDLE", "TXSEQ", "TXFRAG",
        "RXSEQ", "RXFRAG", "CAPS", "ACAPS", "ERP", "STATE", "MODE");
    cp = buf;
    do {
        struct ieee80211req_sta_info *si;
        uint8_t *vp;

        si = (struct ieee80211req_sta_info *)cp;
        vp = (u_int8_t *)(si+1);
        printf("%s %4u %4d %3dM %4d %4d %5d %6d %7d %6d %7d %-4.4s %-5.5s %3x %8x %8s",
            ieee80211_ntoa(si->isi_macaddr),
            IEEE80211_AID(si->isi_associd),
            ieee80211_mhz2ieee(si->isi_freq),
            (si->isi_rates[si->isi_txrate] & IEEE80211_RATE_VAL) / 2,
            si->isi_rssi,
            rssi2dbm(si->isi_rssi),
            si->isi_inact,
            (si->isi_txseqs[0] & IEEE80211_SEQ_SEQ_MASK)
                >> IEEE80211_SEQ_SEQ_SHIFT,

            si->isi_txseqs[0] & IEEE80211_SEQ_FRAG_MASK,
            (si->isi_rxseqs[0] & IEEE80211_SEQ_SEQ_MASK)
                >> IEEE80211_SEQ_SEQ_SHIFT,

            si->isi_rxseqs[0] & IEEE80211_SEQ_FRAG_MASK,
                getcaps(si->isi_capinfo),
                getathcaps(si->isi_athflags),
            si->isi_erp,
            si->isi_state,
            getstamode(si->isi_opmode));
        printies(vp, si->isi_ie_len, 24);
        printf("\n");
        if (si->isi_uapsd) {
            printf("                   UAPSD QoSInfo: 0x%02x, ",
                si->isi_uapsd);
            printf("(VO,VI,BE,BK) = (%d,%d,%d,%d), MaxSpLimit = %s\n",
                   WME_UAPSD_AC_ENABLED(WME_AC_VO, si->isi_uapsd) ? 1 : 0,
                   WME_UAPSD_AC_ENABLED(WME_AC_VI, si->isi_uapsd) ? 1 : 0,
                   WME_UAPSD_AC_ENABLED(WME_AC_BE, si->isi_uapsd) ? 1 : 0,
                   WME_UAPSD_AC_ENABLED(WME_AC_BK, si->isi_uapsd) ? 1 : 0,
                   WME_UAPSD_MAXSP(si->isi_uapsd) == 1 ? "2" :
                   WME_UAPSD_MAXSP(si->isi_uapsd) == 2 ? "4" :
                   WME_UAPSD_MAXSP(si->isi_uapsd) == 3 ? "6" : "NoLimit");
        }
        cp += si->isi_len;
        len -= si->isi_len;
    } while (len >= sizeof(struct ieee80211req_sta_info));
}


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Использование элементов sysfs"  +/
Сообщение от anonymous (??) on 11-Апр-13, 23:33 
>[оверквотинг удален]
>        WME_UAPSD_MAXSP(si->isi_uapsd) == 2 ? "4"
> :
>        WME_UAPSD_MAXSP(si->isi_uapsd) == 3 ? "6"
> : "NoLimit");
>   }
>   cp += si->isi_len;
>   len -= si->isi_len;
>  } while (len >= sizeof(struct ieee80211req_sta_info));
> }
>

Спасибо, буду разбираться =)

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Использование элементов sysfs"  +/
Сообщение от pavlinux (ok) on 12-Апр-13, 00:51 
> Спасибо, буду разбираться =)

Ключевые строки:

#include <linux/wireless.h>
s = socket(AF_INET, SOCK_DGRAM, 0);
ioctl(s, IEEE80211_IOCTL_STA_INFO, &iwr);

остальное - преведение к читаемому виду.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру