The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Патч для работы ipfw stateful + ipnat (ipfw freebsd patch)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ipfw, freebsd, patch,  (найти похожие документы)
Date: Fri, 02 Apr 2004 18:42:46 +0600 From: Vladimir Kurtukov <[email protected]> Newsgroups: ftn.ru.unix.bsd 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

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Deadgeny (??), 14:04, 19/07/2004 [ответить]  
  • +/
    ИМХО, достаточно.
    В ip_output.c между метками pass и done есть только sendorfree.
    Переход на нее есть только в коде после метки pass.
    Т.о. если пакет пригоден к отправке, управление всегда перейдет к коду у метки pass, что и нужно.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру