libnetfilter_queue

kerdes, hatha hasznal itt vki ilyesmit :-)

iptablessel elkapom a csomagot, -j QUEUE, majd szeretnem userspacebol feldolgozni. tokjol mukodik, egy ido utan viszont kapok egy hibat, megpedig
"recv: No buffer space available".

namost, ha jol ertem, azt jelenti, hogy a kernel belso queuejaba mar nem fert bele az a csomag, amit epp elkapott a szabalyom.
snortal is volt hasonlo gond, itt irnak rola, azt irjak, noveljem meg a buffert. (ugye, trivialis).

viszont ha folyamatosan jonnek a csomagok (fix rataval jonnek amugy), en meg folyamatosan kapom el, es ez nem eleg gyors, akkor akarmekkorara allitom is a buffert, max azt az idot tudom megnovelni, ami alatt kiakadna, nemde?

hogy tudom lekerdezni a buffer aktualis meretet?

Hozzászólások

Nem használom a libnetfilter_queue-t, de a libnfnetlink-ben, amire támaszkodik, több bufferméretet is hangolni lehet:

  • a libnfnetlink saját buffere, ami default 4096 byte. Ezt a nfnl_set_rcv_buffer_size függvénnyel állíthatod.
  • magának a socketnek a buffere (valószínűleg ez kicsi), a nfnl_rcvbufsiz függvénnyel módosítható.

A socketnél a buffer méretét getsockopt-al kaphatod meg, nézd meg az nfnl_rcvbufsiz-et a forráskódban.

Az ütemezés miat előfordulhat, hogy a programod még nem kapta vissza a vezérlést, a buffer viszont kicsi volt az adatok fogadására.