We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
現在、NetIf::recv()はraw packetを受信し、引数で受けたEthernetオブジェクトにset()する。 そのため、実際にこのクラスを利用する場合、 不要なパケットをdropするようなフィルタすらも呼び出し元で実装する必要がある。
ここではIfType及びVLAN_IDにもとづいてフィルタすべきである。 現在、パケットパースを提供しているのはEthernet classである。 しかし、Ethernet classではまずパース対象のパケットをコピーする必要がある。(set()関数)
そのため、パースのために1500byte(正確にはフレームサイズ依存)のコピーが毎回発生することになる。 そもそもパケットのパーサ自体はEthernet classから切り離すべきかもしれない。 (現在パフォーマンスに対する不満はないので、一旦は簡単な実装でいくが、将来的な設計として要検討)
上記のパケットフィルタ対応以降、 もしraw packetを受信したい場合、それ専用のIfTypeを定義するか、recv_raw()を利用するべきである。 前者のようなIfTypeは現在使う予定がないため、まずはすでに実装のある後者を利用することとする。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
現在、NetIf::recv()はraw packetを受信し、引数で受けたEthernetオブジェクトにset()する。
そのため、実際にこのクラスを利用する場合、
不要なパケットをdropするようなフィルタすらも呼び出し元で実装する必要がある。
ここではIfType及びVLAN_IDにもとづいてフィルタすべきである。
現在、パケットパースを提供しているのはEthernet classである。
しかし、Ethernet classではまずパース対象のパケットをコピーする必要がある。(set()関数)
そのため、パースのために1500byte(正確にはフレームサイズ依存)のコピーが毎回発生することになる。
そもそもパケットのパーサ自体はEthernet classから切り離すべきかもしれない。
(現在パフォーマンスに対する不満はないので、一旦は簡単な実装でいくが、将来的な設計として要検討)
上記のパケットフィルタ対応以降、
もしraw packetを受信したい場合、それ専用のIfTypeを定義するか、recv_raw()を利用するべきである。
前者のようなIfTypeは現在使う予定がないため、まずはすでに実装のある後者を利用することとする。
The text was updated successfully, but these errors were encountered: