|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Gleb Smirnoff 2:5020/400 14 May 2004 18:32:01 To : Eugene Grosbein Subject : Re: RIPv2 на P2P -------------------------------------------------------------------------------- Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> Вот с этим патчем у меня завелся RIPv2 на gif наконец-то. EG> Hо патч грязный, потому то абсолютно неоптимальный (жутко тормозной), EG> а кроме того вполне вероятно, что некорректный (не уверен, EG> что in_ifaddrhmask всегда равен длине массива in_ifaddrhashtbl минус 1). EG> Как пройтись по списку интерфейсов хотя бы линейно? А можете хоть в двух словах описать суть проблемы. Глядя в патч я не понимаю для чего он. Чего зебре не хватает от ядра? EG> - --- sys/netinet/in_var.h.orig Sat Dec 15 03:09:34 2001 EG> +++ sys/netinet/in_var.h Fri May 14 20:42:09 2004 EG> @@ -117,6 +117,24 @@ EG> (ifp) = (ia == NULL) ? NULL : ia->ia_ifp; \ EG> } EG> EG> +#define INADDR_TO_IFP_P2P(addr, ifp) \ EG> + /* struct in_addr addr; */ \ EG> + /* struct ifnet *ifp; */ \ EG> +{ \ EG> + struct in_ifaddr *ia; \ EG> + int ifah_ind; \ EG> + int f = 1; \ EG> +\ EG> + for (ifah_ind = 0; f && ifah_ind <= in_ifaddrhmask; ifah_ind++) \ EG> + LIST_FOREACH(ia, &in_ifaddrhashtbl[ifah_ind], ia_hash) \ EG> + if ((ia->ia_ifp->if_flags & IFF_POINTOPOINT) && \ EG> + IA_DSTSIN(ia)->sin_addr.s_addr == (addr).s_addr) { \ EG> + f = 0; \ EG> + break; \ EG> + } \ EG> + (ifp) = (ia == NULL) ? NULL : ia->ia_ifp; \ EG> +} EG> + EG> /* EG> * Macro for finding the internet address structure (in_ifaddr) EG> corresponding * to a given interface (ifnet structure). - --- EG> sys/netinet/ip_output.c.orig Fri May 14 18:51:35 2004 +++ EG> sys/netinet/ip_output.c Fri May 14 20:40:49 2004 @@ -1785,6 +1785,9 @@ EG> *ifindexp = ifindex; } else { INADDR_TO_IFP(*a, ifp); EG> + if (ifp == NULL) { + EG> INADDR_TO_IFP_P2P(*a, ifp); + } } return ifp; } EG> Eugene -- Totus tuus, Glebius. GLEBIUS-RIPN GLEB-RIPE --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577cdca97ce.html, оценка из 5, голосов 10
|