The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"FreeBSD PF DIOCRADDADDRS"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"FreeBSD PF DIOCRADDADDRS"  
Сообщение от dosm (ok) on 03-Мрт-07, 20:22 
Дано: FreeBSD 6.2 c PF в качестве фаервола. В pf.conf есть таблица

table <test> persist

на все попытки сделать

ioctl(dev_pf, DIOCRADDADDRS, &io)

ioctl возвращает -1 а в errno пишет ENODEV - Operation not supported by device.

Беглый осмотр внутренностей pfctl ответа не дал, а после изучения spamd закралось смутное сомнение, что во FreeBSD действительно нельзя выполнить DIOCRADDADDRS из пользовательской программы.

Может кто сталкивался с этим ? Поиск в google ничего вразумительного не дал :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "FreeBSD PF DIOCRADDADDRS"  
Сообщение от Forth (??) on 05-Мрт-07, 09:48 
if (io->pfrio_esize != sizeof(struct pfr_addr)) {
                        error = ENODEV;
                        break;
                }
Уверены, что в структуре io, которую передаете, все правильно выставлено?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "FreeBSD PF DIOCRADDADDRS"  
Сообщение от dosm (??) on 05-Мрт-07, 11:12 
>if (io->pfrio_esize != sizeof(struct pfr_addr)) {
>            
>          
> error = ENODEV;
>            
>          
> break;
>            
>    }
>Уверены, что в структуре io, которую передаете, все правильно выставлено?

Да. Это, в исходниках pf_ioctl.c, я видел. Пробегался дебагером по своему коду
io->pfrio_esize == sizeof(addr);

Конечно есть вероятность того, что я чего-то не учёл :) , но в исходниках spamd это реализовано через

execvp("/sbin/pfctl", ....)

Вот и думаю. Оставить костыль в виде exec, или же копать дальше.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "FreeBSD PF DIOCRADDADDRS"  
Сообщение от Forth (??) on 05-Мрт-07, 11:32 
>execvp("/sbin/pfctl", ....)
>
>Вот и думаю. Оставить костыль в виде exec, или же копать дальше.
>
Ну, не такой уж и костыль, скорее unix way в действии. Да и на мой взгляд понадежней, ибо у утилит обычно флаги и параметры редко меняются, только дополняются новыми, а вот смена API, к примеру кодов ioctl происходит все-таки чаще от версии к версии.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "FreeBSD PF DIOCRADDADDRS"  
Сообщение от dosm (??) on 05-Мрт-07, 12:17 
>Ну, не такой уж и костыль, скорее unix way в действии. Да
>и на мой взгляд понадежней, ибо у утилит обычно флаги и
>параметры редко меняются, только дополняются новыми, а вот смена API, к
>примеру кодов ioctl происходит все-таки чаще от версии к версии.

Просто хотел обойтись без

if(!fork())
{
  execvp(...);
}

или создания нового thread-а, а просто послать сигнал из демона в /dev/pf :)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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