1

こんにちは、

set socket option IP_ADD_SOURCE_MEMBERSHIP を使用して、10 個を超える送信元アドレスを追加します。しかし、10 個の送信元アドレスを追加すると、それ以上追加できなくなります。ソケットごとに 10 個を超えるアドレスを追加する方法を教えてください。私のコードは次のとおりです。

sock = ソケット (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 個の送信元アドレスを追加すると、Can't set IP_ADD_SOURCE_MEMBERSHIP! というエラーが発生します。

前もって感謝します

デブジョティ

4

1 に答える 1

3

カーネルの制限に達しているようです。

構成されている値を確認してください。

/ proc / sys / net / ipv4 / igmp_max_msf

必要に応じて調整します。例えば:

echo 20 > /proc/sys/net/ipv4/igmp_max_msf
于 2011-01-10T15:11:25.690 に答える