我正在使用libnetfilter_queue來修改 的傳入/傳出數據包。我一直在使用單線程模型。 但我從2.6.31內核發現,它可能有 不同隊列的不同連接。所以我徘徊,如果它的 可能管理不同線程中的每個隊列。netfilter_queue:在多線程環境中使用--queue-balance
通常我設置的隊列處理類似波紋管:
struct nfq_handle * h = nfq_open();
nfq_unbind_pf(h, AF_NET);
nfq_bind_pf(h,m AF_NET);
struct nfq_q_handle(h, 0, &cb, NULL);
nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff);
現在,如果我要管理像100個隊列,我將包小時,QH和que_num在 結構和遍歷初始化。
現在我的問題是:
,如果我在主線程上述初始化並想要運行在單獨的線程回調 ,是它足以在將 給予在pthread_create函數運行甚至環()?它會在線程中運行回調嗎?
我不確定,但是我的理解告訴我,當返回nfq_set_verdict時,數據包將從 隊列中彈出。所以我需要在單獨的線程中運行 nfq_set_verdict,這樣我的數據包可以從 平行排隊。
編輯:我提供我的代碼,如果有人需要他們來了解我的問題。在此粘貼所有代碼似乎不合理,因爲它會產生視覺噪聲。
在單線程中這樣做太慢了嗎?如果不是的話,你爲什麼要跳起來向它扔線?人們常常把螺紋槓桿扔得太多而沒有真正思考。 – tbert 2012-03-02 12:49:14