Формат представления IP адреса в БД UTM

Технические вопросы по UTM 5.0
Закрыто
SlackER
Сообщения: 29
Зарегистрирован: Ср июл 02, 2008 18:42

Формат представления IP адреса в БД UTM

Сообщение SlackER »

Доброго времени суток. Пишу скрипт переноса абонентов из старого билинга в это сертифицированное чудо. Перенос данных, состояния счета и абонентских плат прекрасно заработал. Осталось тарифы привязать, вот тут и запнулся:
В БД UTM5 ip адресс хранится во в таком виде -1062731519 (192.168.1.2). Перебрал функции php и даже mysql INET_NTOA. Ни как не могу понять, как айпишник так сконвертировать. Может быть знает кто?
P.S. Добавлял тариф юзеру руками через админку а затем лез в mysql лог, там уже в запросе такой айпишник фигурирует.

Код: Выделить всё

INSERT INTO ip_groups(ip_group_id,ip,mask,uname,upass,mac,allowed_cid,create_date,ip_type,router_id) VALUES('2','[b]-1062731519[/b]','-1','','','','','1255863468','3','0')

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Много раз подобные вопросы поднимались на форуме.
Необходимо использовать конструкции вида INET_NTOA(`ip` & 0xFFFFFFFF) и INET_ATON('192.168.1.2') - 0xFFFFFFFF - 1.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Perl:

Код: Выделить всё

= unpack&#40;"N",pack&#40;"c*", &#40; split /\./, $ip &#41;&#41; ^ "\x80\0\0\0" &#41; - &#40; 1 << 31 &#41;;

SlackER
Сообщения: 29
Зарегистрирован: Ср июл 02, 2008 18:42

Сообщение SlackER »

Спасибо большое. Сам бы не допер. Сегодня буду обкатывать свой конвертор.

Arti
Сообщения: 266
Зарегистрирован: Пн окт 01, 2007 02:44

Сообщение Arti »

Вобще говоря INET_ATON('192.168.1.2') - 0xFFFFFFFF - 1 - это частный случай.

Никто не подскажет как заставить mysql интерпретировать старший бит как знаковый ?

INET_NTOA(ip & 0xFFFFFFFF) - коректно (здесь мы заставили интерпретировать поле ip как беззнаковое целое )

INET_ATON(ip_st) - 0xFFFFFFFF - 1 - вообще говоря некорректно, т.к. если скажем ip_st = 37.3.5.9 - фигня выйдет.

Закрыто