quagga & FreeBSD 7.0-CURRENT
ospfd от quagga на 7.0-CURRENT оказался не рабочим: наложились два изменения: с одной стороны во FreeBSD bms переписал кусок setsockopt, касающийся multicast ( http://www.freebsd.org.ua/cgi/cvsweb.cgi/src/sys/netinet/in_mcast.c?cvsroot=freebsd , Revision 1.1 ), с другой стороны в quagga начали вместо проверки “Линукс/не линукс” начали проверять наличие структуры ip_mreqn ( http://cvs.quagga.net/cgi-bin/viewcvs.cgi/quagga/lib/sockopt.c.diff?r1=1.20&r2=1.21 ). Структура ip_mreqn в CURRENT есть, вот только во FreeBSD, в отличие от Линукса, она не предназначена для использования с IP_ADD_MEMBERSHIP/IP_DROP_MEMBERSHIP , а только для IP_MULTICAST_IF . Собственно тут есть достаточно подробное объяснение: http://lists.freebsd.org/pipermail/freebsd-current/2007-July/074478.html .
В результате по быстрому нарисовал патч, реализующий подключение/отключение к multicast группе, с помощью новых вызовов MCAST_JOIN_GROUP/MCAST_LEAVE_GROUP : http://levsha.org.ua/sockopt.c.diff . Патч достаточно грязный: он ломает работу на Linux, поэтому в таком виде явно не годится для внесения в quagga, максимом только патчем в порты. Вот теперь в раздумиях: напрячься и сделать нормальный патч для основного дерева исходников quagga (с проверкой наличия struct group_req на этапе configure ) или забить и кинуть существующий патч pr-ом в порты фряхи?
November 26th, 2007 at 10:01 pm
Большое спасибо за найденное решение проблемы.
June 17th, 2008 at 10:48 am
Спасибо