|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vladimir Kurtukov 2:5006/9.1 02 Apr 2004 18:42:46 To : All Subject : ipfw stateful + ipnat -------------------------------------------------------------------------------- достаточно ли для _полноценной_ работы subj переместить блок с fr_checkp на позицию после метки pass? оно работает, но у меня нет возможности тестирование по полной программе устроить. переносить в netinet/ip_input.c, если надо иметь в ipfw внешние адреса (до nat на input и после nat на output); в netinet/ip_output.c, если надо иметь в ipfw внутренние адреса (после nat на input и до nat на output). например такой вот патчик, в ipfw имеем внутренние адреса ъ-ДДДДДДДДДДДДДДД[ Begin of 1.diff ]ДДДДДДДДДДДДДД--ъ -+- netinet/ip_output.c.std Sat Mar 13 17:44:24 2004 +++ netinet/ip_output.c Fri Apr 2 19:25:21 2004 @@ -724,14 +724,6 @@ * - Wrap: fake packet's addr/port <unimpl.> * - Encapsulate: put it in another IP and send out. <unimp.> */ - if (fr_checkp) { - struct mbuf *m1 = m; - - if ((error = (*fr_checkp)(ip, hlen, ifp, 1, &m1)) || !m1) - goto done; - ip = mtod(m = m1, struct ip *); - } - /* * Check with the firewall... * but not if we are already being fwd'd from a firewall. @@ -964,6 +956,15 @@ } pass: + + if (fr_checkp) { + struct mbuf *m1 = m; + + if ((error = (*fr_checkp)(ip, hlen, ifp, 1, &m1)) || !m1) + goto done; + ip = mtod(m = m1, struct ip *); + } + /* 127/8 must not appear on wire - RFC1122. */ if ((ntohl(ip->ip_dst.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET || (ntohl(ip->ip_src.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) { ъ-ДДДДДДДДДДДДДДД[ End of 1.diff ]ДДДДДДДДДДДДДД--ъ Vladimir --- GoldED+/BSD 1.1.4.7 * Origin: Пути АTC неиcпoвeдимы.... (2:5006/9.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2260406d551e.html, оценка из 5, голосов 10
|