2013-08-05 2 views
0

Я пытаюсь отправить несколько дейтаграмм UDP во встроенный модуль Linux, используя многоадресную рассылку. Версия ядра на устройстве:может отправлять, но не может принимать многоадресные пакеты

/ # uname -r 
2.6.24.6 

для тестирования Я использую коды найдены here (добавлено несколько заголовков и изменили адрес IP-чтобы соответствовать IP-адрес устройства)

Проблема в том, что другие устройства в одной и той же группе многоадресной передачи (ПК с Windows) могут принимать данные, пока устройство отсутствует. Я где-то читал, что значение rp_filter должно быть изменено. Я пробовал все варианты, но безрезультатно.

Я могу запустить устройство как сервер без каких-либо проблем. Но он просто не получает.

Обратите внимание, что netstat -g не работает.

/ # netstat -g 
netstat: invalid option -- g 
BusyBox v1.11.2() multi-call binary 

Usage: netstat [-laentuwxr] 

Display networking information 

Options: 
     -l  Display listening server sockets 
     -a  Display all sockets (default: connected) 
     -e  Display other/more information 
     -n  Don't resolve names 
     -t  Tcp sockets 
     -u  Udp sockets 
     -w  Raw sockets 
     -x  Unix sockets 
     -r  Display routing table 

Поэтому я не могу проверить членство в группах.

P.S: Я запускал ту же программу (код из приведенной выше ссылки) на компьютере Linux, и он работал нормально. Таким образом, код не является проблемой.

+0

мне удалось проверить/ргос/нетто/IGMP и говорит eth0 является членом E2010101 -> 226.1.1.1, что является правильным. Однако я все равно не получаю никаких дейтаграмм. –

+1

Вам не нужна поддержка netstat -g для членства в группе запросов. Если вы разделите netstat -gn на коробке, вы увидите, что netstat просто считывает эту информацию из/proc. Следовательно, чтение/proc/net/igmp (и/proc/net/igmp6 для ipv6) покажет вам текущее членство в группе. (Примечание для моей (x86) группы ящиков составляет 010000E0 для 224.0.0.1, то есть вам может потребоваться переключить некоторый порядок байтов). –

+0

@ amo-ej1: yupp Я понял это. Проверьте мой предыдущий комментарий. Однако до сих пор не удается получить какие-либо датаграммы. –

ответ

0

Решено. После того, как возиться со всем я могу найти в системе, я получил его на работу, запустив eth0 в беспорядочном режиме

ifconfig eth0 promisc 
+0

Хотя я считаю, что это ошибка драйвера Ethernet. Он также должен работать в беспорядочном режиме. –

+0

РЕДАКТИРОВАТЬ: в непуховом режиме * –

 Смежные вопросы

  • Нет связанных вопросов^_^