アプリケーションで複数の nf_queues を作成しようとすると、「リソースが一時的に利用できません」というエラーが発生しました。このエラーに関するドキュメントは見つかりませんでした。
NFQUEUE を使用してマルチスレッド アプリケーションを実装しようとしています。ライブラリを開き、メイン スレッドで AF_INET にバインドし、複数の NFQUEUE を作成しようとしました。5 つのキューを正常に作成しており、次の nfq_create_queue は「リソースが一時的に利用できません」を返します。
sleep(1); も試しました。nfq_create_queue() を呼び出す間に同じエラーが発生しました。
グローバル変数:
struct nfq_handle *h;
int fd;
メインスレッド:
h = nfq_open();
nfq_unbind_pf(h, AF_INET)
nfq_bind_pf(h, AF_INET)
qh = nfq_create_queue(h, NFQ_NUMBER_START_IPv4 + self_index, &cb_ip4, NULL);
nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff);
nfq_set_queue_maxlen(qh, NFQ_LENGTH);
fd = nfq_fd(h);
nfnl_rcvbufsiz(nfq_nfnlh(h), NFQLENGTH * BUFSIZE);
ワーカー スレッド:
qh = nfq_create_queue(h, NFQ_NUMBER_START_IPv4 + self_index, &cb_ip4, NULL);
nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff)
nfq_set_queue_maxlen(qh, NFQ_LENGTH);