2014-03-29 38 views
0

我工作的項目有丟棄捕獲的數據包的要求。我成功captuing包與使用libpcap像這樣,丟棄捕獲的數據包

pcap_loop(handle, num_packets, got_packet, NULL); 

凡在回調函數我捕捉到num_packets參數數據包的給定數。我的要求是放棄捕獲的數據包。

我試過檢查幫助,最後空手而歸。任何引用代碼片段來執行這個通過libpcap丟棄捕獲的數據包的要求是非常值得讚賞的。 :)


編輯 替代建議,歡迎如果通過libpcap是不可能的。

注意的是丟棄數據包之前,我需要獲取數據包的destination/ source ip address和​​被丟棄。

+1

也許這個問題有幫助http://stackoverflow.com/q/1284759/1741542 –

+0

@OlafDietsche謝謝你的評論:)這就是不幸的運氣..我們必須拿出自己的機制不是它。有沒有可以執行此操作的庫? –

回答

1

我不知道,如果有圖書館。 Libpcap僅用於網絡數據包捕獲,AFAIK。

從我有限的知識,我會說丟棄分組只是忽視或不轉發它。然而,這不是在某些程序中完成的,而是內核的網絡堆棧。

你可以做到這一點,在netfilter定義適當的規則。在那裏,你還會發現libnftnl,它允許與Linux netfilter子系統通信。但是,當我閱讀它時,您只能定義規則而不放棄單個數據包。

+0

謝謝先生您的回覆..我會檢查你所告知的:) –

+0

「Libpcap僅用於網絡數據包捕獲,AFAIK。」你100%正確。 「我認爲丟棄一個數據包只是忽略或不轉發它,但是這不是在某些程序中完成的,而是內核的網絡堆棧。」是。要做到這一點的方式取決於操作系統;這個問題被標記爲「linux」,所以他們大概運行Linux。我認爲有許多方法可以讓用戶模式代碼可以決定丟棄或不丟棄數據包(而不必爲內核提供規則)。 – 2014-03-29 18:48:23