2024-10-06 babolo Уточнена обработка ошибок. Стиль. 2024-08-25 babolo Добавлен массив названий операция для будущего. Убрано неиспользуемое. Вывод ipfw_cfg_lheader. Согласование типов указателей. Стиль. 2024-08-25 babolo Попадание в динамические правила. 2024-08-25 babolo Охота за динамическими правилами. 2024-08-25 babolo Есть попадание в структуру правил. 2024-08-18 babolo Переработка продолжается. 2024-08-11 babolo Дата в копилефте. 2024-08-11 babolo Меняю всё. 2024-08-04 babolo Старт переработки. 2024-08-04 babolo Пополнена отладка. Начало троганья FW3. Даты в копилефтах. 2024-08-04 babolo Попытка перевести на IP_FW3. Стиль. 2024-08-04 babolo Стиль. 2024-08-04 babolo Добавлены O_DSCP и O_SETDSCP. В BSDFIG_IFA4 целиком вошел BSDFIG_TEXT1. В O_RECV, O_XMIT и O_VIA вошел вариант с tablearg. Исправлен O_FLOW6ID. Стиль. 2023-11-06 babolo Даты в копилефтах. 2023-11-06 babolo Унификация копилефтов. 2023-10-22 babolo Удаление варнингов. 2023-10-07 babolo Версия 1.00 Убрано все для версий FreeBSD до 10. Осовременены зависимости. Флаги -r и -R заменены на -z и -Z. Увеличено максимальное количество таблиц. Файл bsdfig_local.h внесен в bsdfig.h под BSDFIG_INTERNAL. Стиль. 2022-01-30 babolo Обход неспособности последних версий clang к --oformat=binary. 2014-09-26 babolo Правильно заданы типы парамметров mife_ctl(). Использован mife_point() попроще. Сообщения программ о себе приведены к единому виду. 2014-09-01 babolo Версия 0.07 Поправлены копилефты. 2014-08-30 babolo Переход на babolo-libmake:3, mife:4, babolo-parser:3. Выравнены const и char/u_char. Другие выравнивания знаковости. 2013-01-25 babolo Версия 0.06 Комментарии-номера операций. 2013-01-25 babolo Добавлены команды SOCKARG, CALLRETURN, FORWARD_IP6. Расширена команда TCPWIN. Протокол в FORWARD_IP взят в квадратные скобки. Отсортированы по порядку включения инклуды. Исправлена инициализация массива структур react. Форматирование. 2011-12-01 babolo Версия 0.05 Сокет для обращения за ipfw конфигами теперь открывается только один раз. Проверкой состояния и открытием занимается inisock(). Вместо флагов и сокета в dosockopt() передается структура параметров. Более не используются BSDFIG_DOSOCKSET и BSDFIG_DOSORIGID. Для отличия в отладке при аварийном выходе из bsdfig_read_dummynets(), bsdfig_read_ipfwrules(), bsdfig_read_ipfwnats() и bsdfig_read_ipfwnatl() в вывод добавлен '-'. В bsdfig_read_dummynets(), bsdfig_read_ipfwnats() и bsdfig_read_ipfwnatl() проверяется минимальная длинна массива для параметров - не меньше смещения. Флаги BSDFIG_PRSET и BSDFIG_FTABL более не распространяются. 2011-12-01 babolo Новая функция inisock() - будет использована позже. Убран один уровень из dosockopt(). 2011-12-01 babolo Из флагов структуры bsdfig_conf выделены несколько битов в локальные флаги, которые не распространяются по процедурам. Процесс будет продолжен. Уточнены описания типов bsdfig_ipfwrules и bsdfig_ipfwnatl. Чтение таблиц теперь не использует dosockopt() - слишком отличается. Упрощена dosockopt() за счет выбрасывания лишних параметров. Во многих процедурах запросов использован макрос delta для смещения получаемых данных относительно начала структуры. Наведен порядок с размерами при чтении и передаче ipfw конфигов из ядра. Уточнена диагностика. В FreeBSD 8+ выводится rule->id. 2011-11-27 babolo Версия 1.04 Расчищен от лишних инклудов bsdfig.h, нужное перенесено в файлы, его использующие. Уточнены описания структур с хвостами переменной длинны. Описания bsdfig_out_pipe(), bsdfig_out_queue(), bsdfig_ckout_ipfwrule() теперь не нуждаются в специфических заголовках от ipfw и Ко. Замена machine/param.h на sys/param.h . В bsdfig.h по ошибке вместо sys/types.h было второе включепние sys/param.h . Для смещения внутри структур использовались sizeof(size_t) вместо offsetof(typeof(структура), буфер), что может быть не всегда верно. Погашено множество warningов на тему знаковых/беззнаковых и dereferencing type-punned pointer. Отлажено на FreeBSD 8 i386 и amd64. 2011-11-27 babolo Версия 0.03 2011-11-26 babolo Снова поменялся смысл бита nX/Ms на приблизительно противоположный. Теперь установленный в команде бит требует, что бы роль следующей команды была больше, чем у текущей. Не нужна BSDFIG_ROLAM, поскольку вмещает все биты роли, но нужна стала BSDFIG_ROLAm. Подробнее проверка последовательности - невозрастание роли по требованию теперь отличается от убывания роли в последовательности. Выдача BSDFIG_BITS0 и BSDFIG_BITS1 теперь по стилю больше похожа на остальные. Опечатка в комментарии. 2011-11-26 babolo В bsdfig.c убран лишний (может быть пока) параметр envp. В ipfw_get.c и ipfw_out.c произведено согласование signed и unsigned. Новые макросы STYLEIS(), STYLAR2(), STYLAR3(). 2011-11-26 babolo Структура bsdfig_syntax физически не поменялась, но изменилось описание слова флагов, теперь оно разбито на поля средствами языка. Процедура bsdfig_syntaxdump() перенесена из ipfw_get.c в ipfw_syntax.c без изменений. Эксперименты со стилем комментариев. Опечатка в комментарии. 2011-11-25 babolo Переход на babolo-libmake версии 2.16. Добавлены флаги трансляции -ggdb под комментарием и -Wextra. Теперь bsdfig устанавливает BSDFIG_EXLEW и BSDFIG_EXLEI по умолчанию, непрерывание по предупреждениям и мелким ошибкам. Изменен механизм отслеживания последовательности ролей команд (BSDFIG_ROLA*). Результат процедур семейства ELPRINTO теперь модерируется флагами BSDFIG_EXLE* . Маркер act_ofs поменян с # на +, что бы не путать с комментарием. Теперь всегда распечатывается значение arg1 у команд с BSDFIG_A1NUM (FLOW6ID()) и BSDFIG_A1BIT (O_IP_SRC_SET(), O_IP_DST_SET()). При выводе NAT конфига теперь всегда распечатываются значения битов mode в символьном виде в квадратных скобках). Некоторые длинны команд были помечены Lm (max 63), в то время как в ядре ограничение стоит Lp (max 31). Числился рядовоой командой REASS, вто время как она action. Уточнены отладочная выдача и комментарии. 2010-10-22 babolo Версия 0.02 В dosockopt() проверка достаточности размера буфера для указанного смещения. В bsdfig_read_dummynets() встроен дамп полученных труб на уровне отладки 5. Выдача длинн struct dn_pipe, struct dn_flow_set, struct dn_flow_queue в bsdfig_syntaxdump() и вывод сравнения кодов команд ipfw с предполагаемыми. Форматирование. 2010-10-22 babolo В описание команд bsdfig_syntax.p добавлено поле code для контроля расхождения кодов команд ipfw. В типах bsdfig_ipfwrules, bsdfig_ipfwnats, bsdfig_ipfwnatl, bsdfig_ipfwtables и bsdfig_dummynets длинна значения была типа size_t, стала socklen_t. В old_dn.h struct dn_flow_queue.idle_time был описан как u_int32_t вместо int64_t. Ликвидирован тип dn_key из old_dn.h. Форматирование. 2010-10-17 babolo Версия 0.01 Издано сильно незаконченное в связи с нужностью даже в этом виде. Удален STLIB и не устанавливается bsdfig.h. Обновлены REQUIRED. В свежих ОС IP_*_LOOKUP может быть длинной 3. Исправлен вывод BSDFIG_WORDS. 2010-07-20 babolo Теперь работает и на DUMMYNETS3. Чуть подробнее диагностика. 2010-03-01 babolo Вариант IP_*_LOOKUP с длинной 1 отрабатывался как с 2. 2010-03-01 babolo Добавлена выдача ipfw статистики. Минус 1 варнинг на amd64. Пометки для анализа использования &flocal в elabor() и elprint(). В выдаче NAT конфигов elprint() снабжены if () break. В проверке границы значения точное совпадение разрешено. В ipfw_syntax.c почищены инклуды, надо было в предыдущем коммите. Мелочи. 2010-03-01 babolo Поправлен список зависимостей. Как-то работает на старых и новых версиях FreeBSD: 4,7,8. Про промежуточные не знаю, не все границы выставлены точно. Добавлена выдача ipfw nat конфигов. В случае отсутствия DUMMYNET или IPFIREWALL_NAT в ядре работает дальше со слабым (2) сообщением об ошибке. Большая морока с зависимостями в netinet/ip_fw.h, включил многое в bsdfig.h. Но надо подумать, как вынести. Комментарии к флагам в bsdfig_conf. Неправильно показывались параметры setsockopt() при ошибке в dosockopt(). Прооптимизирован вывод FORWARD_IP. В описании типа bsdfig_ipfwrules теперь указан переменный массив из правил вместо одного правила, что несколько правильнее для понимания. Теперь описание типа __bsdfig_s не надо вручную согласовывать. 2010-02-27 babolo Отсутствие DUMMYNET в ядре теперь не прерывает работу программы. Исправлены форматы для уменьшения варнингов в amd64. Аккуратнее сделаны приведения для уменьшения варнингов в amd64. Учтено изменение структуры очереди в FreeBSD 8. Новая команда REASS. Комментарии с номерами команд в ipfw_syntax. Мелкие исправления в сообщениях. 2009-05-19 babolo В bsdfig_init() появился еще один параметр - заготовка для результата. Расширен тип bsdfig_allconf на копии параметров из bsdfig_conf и зянято место на будущее, ipfwtables стал ссылкой на массив ссылок. В bsdfig_allconf my_disable переименован в my_disables, а set_disable стал массивом из одного элемента. bsdfig_ckout_ipfwrule() описана как публичная. В ipfw_out.c описание elprinto выделено блоком #ifdef ELPRINTO, может, для вынесения в будущем в отдельный файл. В elprinto описаны макросы для установки состояния elprinto. Теперь elprint() и elabor() можно запускать с форматом NULL. Теперь elprint() и elabor() проверяют наличие файла вывода. В распечатке битовых аргументов операции в ipfwrule (BSDFIG_BITS0 и BSDFIG_BITS1) нарушалось состояние elprinto. В bsdfig_ckout_ipfwrules() удалена переменная rusize за ненадобностью. Новые процедуры bsdfig_*list(), но они используют общую часть elist(), от которой есть только затычка. Форматирование. 2009-05-18 babolo Из bsdfig_ckout_ipfwrules() выделена в отдельную процедуру распечатка одного статического rule: bsdfig_ckout_ipfwrules(). 2009-05-18 babolo Интерфейс bsdfig_out_pipe() и bsdfig_out_queue() стал более приличествующим внешней процедуре - уделен параметр flocal. Теперь bsdfig_out_pipe() и bsdfig_out_queue() - интерфейсные функции к ckout_dummynets(), которая и выполняет всю работу. 2009-05-18 babolo Из процедур bsdfig_ckout_queues() и bsdfig_ckout_pipes() вынесены процедуры распечатки одной очереди или трубы во внешние bsdfig_out_queue() и bsdfig_out_pipe() соответственно, а из них, в свою очередь выделены общие части в локальные elqtail() и elqtaild(). 2009-05-18 babolo elprint() теперь понимает мягкие ошибки согласно cnf->flags. На elprinto переведены elabor() и bsdfig_ckout_ipfwrules(). Упорядочено управление печатью от битов PRECHE и LFIRST. Изменен способ печати значков ~ и ! у операций ipfw. Расставлены номера в сообщениях об ошибках в bsdfig_ckout_ipfwrules(). Макрос IOBREAK() выброшен за ненадобностью. Форматирование. 2009-05-18 babolo Исправлена логика взаимодействия флагов -p и -P, -q и -Q, и соответствующих битов. Процедура elprint(), структура elprinto и макрос ELPRINTO() для того, что бы запрятать fprintf(cnf->out,... , логику flocal и проверку результата исполнения fprintf() и сократить текст. Процедуры elflowid(), elflowidd(), elflowqueue(), bsdfig_ckout_pipes(), ckout_tables() и bsdfig_ckout_ipfwtables() переписаны на elprinto. Форматирование. 2009-05-18 babolo Вместо BSDFIG_DPIPE используется BSDFIG_PPIPE. Флаг -wd стал -wR. Добавлены флаги для динамических структур -wP и -wQ. Процедура bsdfig_ckout_ipfwtables() поделена - из нее вынесена процедура распечатки ipfw_table_entry локальная bsdfig_ckout_ipfwtablentry(). 2009-05-17 babolo Ликвидирован бит BSDFIG_TDYFW, флаг -D и проверка при помощи их, будет сделано через общий бит BSDFIG_KTEST. Добавлены биты для распечатки введенных списков разрешений. Подготовка к распечатке списков разрешений из конфигов. Распечатка очередей и труб теперь разделена, вместо bsdfig_ckout_dummynets() теперь bsdfig_ckout_pipes() и bsdfig_ckout_queues() с минимальными изменениями. В bsdfig_allconf my_disable теперь описан как my_disable[1]. Из ipfw_out.c вынесено все, не являющееся распечаткой ipfw конфигов, в ipfw_get.c без изменений. 2009-05-17 babolo Сделан ввод конфигов из секций PIPELIST, QUEUELIST, DISABLELIST, RULELIST, TABLELIST по флагу -i и биту BSDFIG_READC. Более об#defineнены параметры таблиц разрешений. Тип enum bsdfig_section стал локальным. В bsdfig_allconf большие конфиги неопределенных размеров теперь в мультилар. Новый честносрисованный локальный макрос offsetof(). 2009-05-16 babolo Форматирование. 2009-05-16 babolo Заготовка для ввода конфига. Новый файл bsdfig_local.h, туда вынесено определение IPFW_TABLES_MAX. В bsdfig_syntax новые поля для magic. Новый тип bsdfig_allconf для хранения отпарсенного конфига. В типе bsdfig_conf новое поле bsdfig_allconf *conf. В bsdfig_init() не было проверки результата calloc(). Новый бит BSDFIG_0CONF - по нему bsdfig_init() выделяет память для bsdfig_allconf. Новый бит BSDFIG_MYCNF, работает только если BSDFIG_0CONF, по нему bsdfig_init() готовит конфиг к полному контролю над хостом. Форматирование. 2009-05-15 babolo Переименование завершено. 2009-05-15 babolo Переименованы (repocopy) файлы ipfwc.c в ipfw_syntax.c и ipfwi.c в ipfw_out.c. 2009-05-15 babolo Форматирование. 2009-05-15 babolo В приложениях перед bsdfig.h теперь не обязательны куча .h файлов, описывающих ipfw. 2009-05-15 babolo Теперь бит BSDFIG_KTEST влияет и на dummynet. В типе bsdfig_dummynets изменился тип dummies. Поменялись биты flocal. Макросы для распечатки IP. Из elabor() вынесена процедура prelabor(). Новые процедуры elflowid() и elflowidd() для распечатки struct ipfw_flow_id. Новая процедура elflowqueue() для распечатки и слегка проверки struct dn_flow_queue. Дописана bsdfig_ckout_dummynets(). Теперь у правила есть ключевое слово RULE. Формат таблиц приведен к общему виду с ключевым словом TABLE. Форматирование. 2009-05-14 babolo Читается dummynet, заготовка для распечатки dummynet. Флаг BSDFIG_KTEST для прогона тестов если распечатка не задана. В bsdfig_read_ipfwtables() сделен перезапрос если памяти для ответа недостаточно. 2009-05-14 babolo В bsdfig_read_ipfwrules() использована dosockopt(). В bsdfig_read_ipfwtables() использовался сокет PF_INET вместо AF_INET. Форматирование. 2009-05-14 babolo Форматирование. 2009-05-14 babolo Добавлена обработка таблиц. Вся обработка правил сейчас происходит только при наличии одного из требований -w srD[d]. 2009-05-13 babolo Флаг -T поменял значение - теперь задает максимальное количество таблиц. Функции -T перешли к -w. Новый вид работы -wD - только проверка динамических правил. Код возврата bsdfig_ckout_ipfwrules() проверяется на небольшие ошибки. Классы операций уточнены. Проверка последовательности команд стала менее строгой. Ошибка в elabor() - невовремя пропускал PRECHAR. Появились проверки act_ofs. Исправлен вывод IPV6. Появилась возможность распечатывать и проверять динамические правила. Форматирование, комментарии. 2009-05-12 babolo Новые флаги -d (dummy) и -T (список видов работы). Убрана переменная ns, ее функции внесены в флаги flocal. Сответственно поменялся смысл битов в flocal. В flocal новый бит DSABLE для запрета распечатки. Форматирование. 2009-05-12 babolo В имена добавлено "ipfw" где следует. В warn теперь изображается точное имя процедуры. В bsdfig_ckout_ipfwrules() ужесточена входная проверка. Появилась bsdfig_out_ipfwset(). 2009-05-12 babolo Начата работа, ipfw конфиг читается и распечатывается.