Функции для работы с IP-адресами

Бесклассовая междоменная маршрутизация (Classless Inter-Domain Routing (CIDR)) – способ назначения и указания Internet-адресов, используемый в междоменной маршрутизации. Он более гибок, чем первоначальная система классов адресов, принятая в Internet-протоколе (IP). При использовании CIDR каждый IP-адрес имеет сетевой префикс, который определяет либо совокупность сетевых узлов, либо индивидуальный узел. Длина сетевого префикса задаётся как часть IP-адреса и варьируется в зависимости от количества необходимых бит. IP-адрес пункта назначения или маршрут, который указывает несколько адресатов, имеет короткий префикс (менее точная адресация). Длинный префикс описывает узел сети более точно.

Внешнее представление сетевого адреса при использовании CIDR выглядит так:

192.30.250.00/18

«192.30.250.00» есть сам сетевой CIDR IP-адрес. «18» означает, что первые 18 бит есть сетевая часть адреса, оставшиеся 14 бит задают адреса хостов.

Внутреннее представление IP-адреса – BYTE(5). Из них 4 байта занимает собственно сетевой адрес, а 1 байт отводится под размер префикса. Значение префикса может быть в диапазоне от 1 до 32.

Аргументы функций могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра, например:

select cidrtoraw(? (char(16)));
192.30.250.00/18
| C0 1E FA 00 12|

select ip_set_masklen(? (byte(5)), ? (int));
5052200b0a
21
| 50 52 20 0B 15|