|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitry Pryanishnikov 2:464/36 21 May 2004 14:18:41 To : All Subject : =?koi8-r?Q?Re=3A_ipacctd=2C_divert_=C9_multicast_arp_entry?= --------------------------------------------------------------------------------
Привет!
On Thu, 20 May 2004, Eugene Grosbein wrote:
> EG>> Кто виноват - ipacctd или механизм divert?
> GS> divert(4) c вероятностью процентов 99
>
> Угадал. Виноват ip_output(), подробности тут:
> http://docs.freebsd.org/cgi/getmsg.cgi?fetch=279722+0+current/freebsd-net
А проблема, кстати, нетривиальная, и простой "косметической" правкой тут
IMHO не обойтись: нужно как-то передать в user-mode program информацию из
struct ip_moptions по recvfrom(), а потом забрать ее по sendto() - куда ее
писать? Они и так уже "разрезервировали" sin_zero[8] в sockaddr_in (на
которую 5й аргумент recvfrom() указывает) - хранят там имя интерфейса, через
который пакет пришел. Можно, конечно, вспомнить, что этот самый 5й параметр
на самом деле struct sockaddr * (а struct sockaddr переменной длины), и для
divert() завести особый формат этой структуры, но это все уже меняет API,
что стоит делать только в крайнем случае.
А тут у меня более другой вопрос возник: а зачем _вообще_ multicast
заворачивать на divert? С какой целью? Если для насчета трафика, то IMHO
считать пользователю те же RIP-пакеты как трафик неправильно ;)
Sincerely, Dmitry
--
Atlantis ISP, System Administrator
e-mail: dmitry@atlantis.dp.ua
nic-hdl: LYNX-RIPE
--- ifmail v.2.14.os-p7
* Origin: Atlantis ISP (2:464/36@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/245210267e6d6.html, оценка из 5, голосов 10
|