четверг, 28 октября 2010 г.

CLISP 2.49

Холодным осенним вечером делать было нечего, поэтому собрал свежую версию CLISP'а и выложил его в lisp-репизотрии для Ubuntu и Debian. В силу некоторых особенностей модуль clisp-module-berkley-db для 32-битной системы собран с зависимостью на libdb4.6, а для 64-битной системы - на libdb4.8. В остальном отличий нет. В отличие от оригинального пакета Debian, собран без зависимости и без использования CLC (Common Lisp Controller), согласно идеологии репозитория, поэтому для кого это критично - нужно будет задуматься. А в целом, свежачок. :)

пятница, 22 октября 2010 г.

Пингующий скрипт

Стандартная задача "маршрутизации" для бедных. Дано: два провайдера и выход в интернет. Один из каналов считается основным, второй резервным. И необходимо переключать маршрут с одного провайдера на другого, перестраивая таблицу маршрутизации. При этом не имеется ни автономной системы, ни, тем более, анонсирования маршрутов со стороны провайдера. Выходом является создание пингующего скрипта, который проверяет доступность внешнего ресурса, и на основании этих данных принимает какое-либо решение. Прямо напрашивается программирование. Ну я то знаю, что нет ничего удобнее для программирования, чем lisp. Итог - дебиан-пакет reserve-channel, который находится в lisp-репизотрии для Ubuntu и Debian. Сами исходные тексты можно посмотреть тут. Задача обобщена для n каналов, где n больше 1, поэтому есть возможность развёртывания системы для каналов больше двух. Ну и, напоследок, пример конфигурационного файла:

(:config
(:channel
(:interface "eth2")
(:gateway "192.168.2.1")
(:routed t)
(:purpose :main))
(:channel
(:interface "eth1")
(:gateway "192.168.0.200")
(:routed t)
(:purpose :reserve))
(:test-host (:hostname "google.ru"))
(:test-host (:hostname "ya.ru")))