|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 14 May 2004 20:54:40 To : Gleb Smirnoff Subject : Re: RIPv2 на P2P -------------------------------------------------------------------------------- EG>>>>>> А как различать unnumbered тогда? SO>>>>> Особое поведение OSPF на unnumbered расписанно в RFC. Про RIP2 -- SO>>>>> понятия не имеею, RIP Hе держим. EG>>>> RWR не умеют ospf. SO>>> Я тебе ничего не предлагал. Я просто изложил известные мне факты. EG>> Ты бы лучше сказал, как RIPv2 на gif побороть :-) EG>> Что мне с того, что у OSPF все жужжит? GS> У меня вот zebra не хочет делать OSPF на ng. (который является p2p). GS> Чувствую когда прижмет, придется в исходники лезть. Вот с этим патчем у меня завелся RIPv2 на gif наконец-то. Hо патч грязный, потому то абсолютно неоптимальный (жутко тормозной), а кроме того вполне вероятно, что некорректный (не уверен, что in_ifaddrhmask всегда равен длине массива in_ifaddrhashtbl минус 1). Как пройтись по списку интерфейсов хотя бы линейно? - --- sys/netinet/in_var.h.orig Sat Dec 15 03:09:34 2001 +++ sys/netinet/in_var.h Fri May 14 20:42:09 2004 @@ -117,6 +117,24 @@ (ifp) = (ia == NULL) ? NULL : ia->ia_ifp; \ } +#define INADDR_TO_IFP_P2P(addr, ifp) \ + /* struct in_addr addr; */ \ + /* struct ifnet *ifp; */ \ +{ \ + struct in_ifaddr *ia; \ + int ifah_ind; \ + int f = 1; \ +\ + for (ifah_ind = 0; f && ifah_ind <= in_ifaddrhmask; ifah_ind++) \ + LIST_FOREACH(ia, &in_ifaddrhashtbl[ifah_ind], ia_hash) \ + if ((ia->ia_ifp->if_flags & IFF_POINTOPOINT) && \ + IA_DSTSIN(ia)->sin_addr.s_addr == (addr).s_addr) { \ + f = 0; \ + break; \ + } \ + (ifp) = (ia == NULL) ? NULL : ia->ia_ifp; \ +} + /* * Macro for finding the internet address structure (in_ifaddr) corresponding * to a given interface (ifnet structure). - --- sys/netinet/ip_output.c.orig Fri May 14 18:51:35 2004 +++ sys/netinet/ip_output.c Fri May 14 20:40:49 2004 @@ -1785,6 +1785,9 @@ *ifindexp = ifindex; } else { INADDR_TO_IFP(*a, ifp); + if (ifp == NULL) { + INADDR_TO_IFP_P2P(*a, ifp); + } } return ifp; } Eugene -- "Люди забыли эту истину," - сказал Лис, - "но ты не забывай" --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/260934105aa99.html, оценка из 5, голосов 10
|