← Back to team overview

helenos-nicf team mailing list archive

Filtry na NE2000

 

Ahoj,

viz commit 755 - implementoval jsem v zásadě hlavní část filtrování v NICF. Sice jsme se původně domlouvali, že driver bude sdělovat NICFu prostřednictvím flagu "emuluj mě", ale to se ukázalo nepříliš vhodně. Je tomu tak právě proto, že filtry nejsou vždycky jenom filtry, ale i rozšiřují, co se bude přijímat. Ve výsledku tedy driver posílá driveru jenom dvě informace: příchozí unicastové framy jsou přesně ty, které chci (a NICF je už dále netestuje) a to samé pro multicastové framy. Tohle taky není zase tak úžasné řešení, protože filtry nejsou ortogonální a tak musí driverovská část vědět ještě taky o tom, které jiné filtry jsou zapnuty (ptá se na to NICFu) a podle toho říká, jestli teda pouští to, co chce. Schválně se podívejte do ne2000.c na implementaci těch event handlerů na změnu filtru (jsou u toho nějaká TODOčka) - jsou to asi 100 řádků kódu a to mi přijde moc. A řeknu vám, že jsem to vymýšlel vcelku dlouho. Ještě sám pouvažuju, jestli by nešla udělat nějaká mezivrstva logiky, která by tohle zařídila a posadila se do NICFu, ale zatím mne nic moc nenapadlo, aby to zachovalo obecnost.

Radim