при использовании IP_ADD_SOURCE_MEMBERSHIP не удалось добавить более 10 исходных адресов для разъема RAW - PullRequest
1 голос
/ 10 января 2011

HI

Я использую опцию сокета set IP_ADD_SOURCE_MEMBERSHIP, чтобы добавить более 10 адресов источника. Но после 10 исходного адреса я не могу добавить дальше. Может кто-нибудь сказать мне, как можно добавить более 10 адресов на сокет. Мой код выглядит следующим образом:

носок = сокет (AF_INET, SOCK_RAW, IPPROTO_UDP);

/ * Код ниже повторяется более 10 раз * /

struct ip_mreq_source  mc_req;

mc_req.imr_multiaddr.s_addr   = grpaddr;
mc_req.imr_interface.s_addr   = ifaddr;
mc_req.imr_sourceaddr.s_addr  = srcaddr;

if ((setsockopt (sock, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
                 (void*) &mc_req,
                 sizeof (mc_req))) < 0)
{
    printf ("Can't set  IP_ADD_SOURCE_MEMBERSHIP!\n");
    exit (1);
}

После добавления 10 адресов источника возникает ошибка: невозможно установить IP_ADD_SOURCE_MEMBERSHIP!.

Заранее спасибо

Debjyoti

1 Ответ

2 голосов
/ 10 января 2011

Похоже, вы достигли лимита ядра.

Проверьте значение, настроенное в:

/ Proc / SYS / сеть / ipv4 / igmp_max_msf

и отрегулируйте его при необходимости. Например:

echo 20 > /proc/sys/net/ipv4/igmp_max_msf
...