1
У меня есть следующие две колонки: трансляция адресов, основанных на IP и маску подсети с MySQL
SELECT b.ip_address AS IP ,b.mask AS MASK FROM interfaces b WHERE b.ip_address = 167804290; +-----------+------------+ | IP | MASK | +-----------+------------+ | 167804290 | 4294967168 | +-----------+------------+Где фактический IP-адрес в маску подсети
SELECT INET_NTOA(b.ip_address) AS IP,INET_NTOA(b.mask) AS MASK FROM interfaces b WHERE b.ip_address = 167804290;Я пытаюсь найти способ с MySQL, чтобы захватить фактическую передачу диапазон, который в этом случае равен
+--------------+-----------------+ | IP | MASK | +--------------+-----------------+ | 10.0.125.130 | 255.255.255.128 | +--------------+-----------------+ 1 row in set (0.00 sec)
10.0.125.255
или
167804415
, но я не могу его найти. ближайший я получил это
SELECT INET_NTOA(b.ip_address+(POWER(2,32)- b.mask - 1)) FROM interfaces b WHERE b.ip_address = 167804290; +---------------------------------------------------+ | INET_NTOA(b.ip_address+(POWER(2,32)- b.mask - 1)) | +---------------------------------------------------+ | 10.0.126.1 | +---------------------------------------------------+
Единственная проблема с этим, что это если столбец ip_address
является начало подсети 10.0.125.128
Любая помощь будет оценена.
большими. Спасибо за быстрый ответ. – salparadise