Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> on/off ethernet device, программно реализовать 
:(
    Опции темы
bel_nikita
  Дата 20.6.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Нужно программно включать/выключать сетевые устройства, и настраивать ip-адреса.
Как реализовать и в какую сторону копать? smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
W4FhLF
Дата 20.6.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Да, интересно глянуть как у вас в никсах это реализуется. В винде есть универсальные функция для вкл/выкл любого девайса  smile 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MAKCim
Дата 20.6.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



все очень просто
взаимодействие с сетевым интерфейсом идет через ioctl()
в качестве первого параметра в ioctl() передается дескриптор сокета (любого домена, типа и протокола)
второй параметр ioctl() - одна из констант, определенных в sockios.h
третий параметр - адрес структуры ifreq
включение и выключение сетевого интерфейса осуществляется установкой/сбросом флага IFF_UP в дескрипторе сетевого интерфейса (структура net_device) командами SIOCSIFFLAGS/SIOCGIFFLAGS
любой сетевой интерфейс в Linux идентифицируется символьным и целочисленным идентификаторами
при вызове ioctl() в ifreq.ifr_name указывается символьный идентификатор
отображение символьный идентификатор <-> целочисленный идентификатор осуществляется через команды SIOCGIFINDEX/SIOCGIFNAME
вот простой пример включения сетевого интерфейса
Код

struct ifreq ifreq = {
    .ifr_name = "eth0"
};
int sock_fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
ioctl(sock_fd, SIOCGIFFLAGS, &ifreq);
ifreq.ifr_flags |= IFF_UP;
ioctl(sock_fd, SIOCSIFFLAGS, &ifreq); // включаем сетевой интерфейс eth0
 
принцип работы IFF_UP заключается в том, что код ядра осуществляет вызов функции open() драйвера сетевого контроллера, адрес которой расположен в дескрипторе сетевого интерфейса (net_device) (тут)

Добавлено через 4 минуты и 43 секунды
Цитата(W4FhLF @  20.6.2008,  12:58 Найти цитируемый пост)
Да, интересно глянуть как у вас в никсах это реализуется.

а мне вот интересно, как у вас в окнах QoS для сетевой подсистемы реализован? (если там вообще это есть)  smile 

Это сообщение отредактировал(а) MAKCim - 20.6.2008, 13:22


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 20.6.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



если нет желания создавать сокет и использовать ioctl(), можно поиграться с sysfs
Код

#define PATH "/sys/class/net"
#define NAME "flags"
...
char buffer[128];
int flags;
sprintf(buffer, "%s/%s/%s", PATH, "eth0", NAME);
FILE * fs = fopen(buffer, "r");
fscanf(fs, "%x", &flags);
flags |= IFF_UP;
fseek(fs, 0, SEEK_SET);
fwrite(&flags, sizeof(flags), 1, fs);



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
W4FhLF
Дата 20.6.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Цитата(MAKCim @  20.6.2008,  13:20 Найти цитируемый пост)
включение и выключение сетевого интерфейса осуществляется установкой/сбросом флага IFF_UP в дескрипторе сетевого интерфейса (структура net_device) командами SIOCSIFFLAGS/SIOCGIFFLAGS


Удобно ;)

Цитата(MAKCim @  20.6.2008,  13:20 Найти цитируемый пост)
а мне вот интересно, как у вас в окнах QoS для сетевой подсистемы реализован?


Существует два варианта: Traffic Control API (на данный момент считается устаревшими) и QOS2 API (полностью поддерживаются только на Server 2008 и Vista).



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MAKCim
Дата 20.6.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(W4FhLF @  20.6.2008,  15:11 Найти цитируемый пост)
Удобно ;)

это сказано с иронией?  smile 
Цитата(W4FhLF @  20.6.2008,  15:11 Найти цитируемый пост)
Существует два варианта: Traffic Control API (на данный момент считается устаревшими) и QOS2 API (полностью поддерживаются только на Server 2008 и Vista).

ОК
существует возможность определять свои стратегии работы с исходящими пакетами?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
W4FhLF
Дата 20.6.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Цитата(MAKCim @  20.6.2008,  15:58 Найти цитируемый пост)
это сказано с иронией?  


Не, серьёзно. Подумываю перебраться.

Цитата(MAKCim @  20.6.2008,  15:58 Найти цитируемый пост)
существует возможность определять свои стратегии работы с исходящими пакетами?


В общем не совсем ясно, что такое стратегия работы с исходящими пакетами. Насколько я понимаю можно, иначе какой смысл smile 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MAKCim
Дата 20.6.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(W4FhLF @  20.6.2008,  16:23 Найти цитируемый пост)
В общем не совсем ясно, что такое стратегия работы с исходящими пакетами. 

смотри
есть сетевой интерфейс, представленный структурой net_device
для него может быть реализован QoS с помощью структуры Qdisc
Qdisc инкапсулирует структуру Qdisc_ops, которая содержит адреса функций enqueue()/dequeue()/requeue()
функцией ядра, которая реализует взаимодействие с драйвером сетевого контроллера является функция dev_queue_xmit()
она в качестве параметра получает пакет (структура sk_buff)
если в net_device определен Qdisc, то вместо вызова функции драйвера через dev_hard_start_xmit() осуществляется вызов функции enqueue() из Qdisc_ops в Qdisc и далее run_qdisc()
run_qdisc() осуществляет вызов (пока возможно) dequeue() из Qdisc_ops для получения пакета и передает его драйверу через dev_hard_start_xmit()
так вот, функции enqueue() и dequeue() как раз и реализуют стратегию работы с пакетами
к примеру, если Qdisc реализует стратегию FIFO, то enqueue() осуществляет добавление пакета в конец очереди, а dequeue() - выбор первого пакета из начала очереди
я могу реализовать свою стратегию работы, реализовав Qdisc (написав модуль)
в окнах такое возможно? 


Это сообщение отредактировал(а) MAKCim - 20.6.2008, 16:44


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
W4FhLF
Дата 20.6.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



MAKCim, твоя идея понятна. В окнах QoS это некоторая подсистема общей сетевой архитектуры, которая в юзермоде представлена набором API в дополнение к winsock2. Стратегия определяется на низком уровне планировщиком пакетов QoS(который является одним из драйверов NDIS), в юзермоде ты вправе регулировать некоторый набор параметров, который будет влиять на характер планирования пакетов, набор параметров достаточно обширен и, видимо, предусмотрена не одна стратегия. Ты создаёшь некий flow(это сущность подсистемы QoS), определяешь параметры планирования и далее "привязываешь" к этому flow сокеты, служба QoS будет уведомлена о том, что в системе появились соединения требующие обработки. 

Мэйби на уровне NDIS есть возможность определять свою стратегию, я таких подробностей не знаю. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MAKCim
Дата 20.6.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(W4FhLF @  20.6.2008,  16:23 Найти цитируемый пост)
Не, серьёзно. Подумываю перебраться.

правильный выбор  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
ushakofff
Дата 4.12.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 29.4.2007

Репутация: нет
Всего: нет



А при отключении просто ifFlags &= ~IFF_UP; да? У меня просто что то не работает :(
PM MAIL   Вверх
MAKCim
Дата 4.12.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



ushakofff
IFF_DOWN


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.