| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Передача пакетов |
| Автор: dima3351 3.3.2006, 19:31 |
| Есть драйвер сетевого устройства, у которого зарегестрирована функция передачи пакетов (dev->hard_start_xmit = snull_tx;) Вопрос: как из пользовательского приложения, работающего с этим драйвером, начать передачу пакетов, т.е. вызвать мою функцию snull_tx? Если кто умеет, подскажите, плз! |
| Автор: bilbobagginz 5.3.2006, 02:38 |
| не хватает информации для полного ответа... и какие пакеты функция должна передавать ? Ethernet ? ARP ? можешь создать "обложку" ( wrapper) этого драйвера и зарегистрировать блочное устройство, а на него писать напрямую - read/write etc. просто в линуксе это обычно не делается - сетевые устройства не имеют записи в /dev пока. |
| Автор: dima3351 5.3.2006, 12:58 |
| спасибо, но: не понимаю - а какая разница, какие пакеты? вопрос в следующем - как вызвать функцию структуры net_dev из пользовательского приложения. Ваш ответ я понял - через блочное устройство, которое имеет право вызывать функции ядра. Но мне кажется немного странным, что для того, чтобы передавать пакеты через сетевое устройство, требуется еще один модуль... Получается, проще и удобнее через ioctl? еще раз спасибо |
| Автор: GrayCardinal 15.3.2006, 06:23 |
| dima3351, Из юзверь-спэйса зачастую RAW-сокетами шлют. libnet.sf.net к примеру глянь. А больше никак... Не, ну можно еще контроллер сетевухи ручками из юзверь-спэйса включить. Весело, но сложно. Да и вопроса "работающего с этим драйвером" я недопонял. Добавлено @ 06:25 Да, а из юзверь спэйса функции ядра не вызываются. Может с Windows спутали ? У Линукс есть только системные вызовы |
| Автор: dima3351 15.3.2006, 18:09 |
| Спасибо, все понятно... Все равно удобнее через ioctl... |
| Автор: GrayCardinal 15.3.2006, 21:41 |
| dima3351, Э-не, не надо так. Чай не в винде |