|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 23 Dec 2007 05:04:45 To : Eugene Grosbein Subject : Re: if_bridge(4) и EtherIP -------------------------------------------------------------------------------- 23 дек 2007, воскресенье, в 00:27 KRAT, Eugene Grosbein написал(а): EG> Спасибо, проблема судя по всему в gif(4), одну уже точно вижу - EG> arp-request'ы идут с ether dst = ff:ff:ff:ff:ff:ff, не маркируются EG> как M_BCAST перед передачей в bridge_input и выкидываются. С юникастами EG> тоже фигня. Короче говоря, это EtherIP поломанное с рождения. В gif_input (sys/net/if_gif.c) принятый пакет типа AF_LINK (как раз случай EtherIP) передаётся бриджу, который его обрабатывает по-своему, форвардит куда надо и возвращает обратно для передачи на верхние уровни стека. А gif ему вместо этого делает m_freem(m); Кроме того, принятые из туннеля бродкасты-мультикасты лишаются флагов M_BCAST и M_MCAST соответственно перед передачей бриджу, что плохо влияет на его работу. Вот самый первый и черновой вариант патча, при котором хотя бы заработал ping между роутерами FreeBSD через EtherIP. Совершенно не уверен, что он корректный, можно ли вызывать ether_demux() напрямую из gif_input() и как положено чистить память в таком случе. Буду рад, если кто-нибудь из знакомых с этим местом ядра посмотрит. - --- if_gif.c.orig 2007-12-23 00:18:16.000000000 +0700 +++ if_gif.c 2007-12-23 03:30:54.000000000 +0700 @@ -534,14 +534,19 @@ } m_adj(m, sizeof(struct etherip_header)); - m->m_flags &= ~(M_BCAST|M_MCAST); m->m_pkthdr.rcvif = ifp; - if (ifp->if_bridge) + if (ifp->if_bridge) { BRIDGE_INPUT(ifp, m); - - if (m != NULL) - m_freem(m); + if (m == NULL) { + return; + } + } + else + m->m_flags &= ~(M_BCAST|M_MCAST); + + ether_demux(ifp, m); + /* m_freem(m); ??? */ return; default: Eugene --- slrn/0.9.8.1 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/260934219a11d.html, оценка из 5, голосов 10
|