У меня есть следующие две колонки:
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;
+--------------+-----------------+
| IP | MASK |
+--------------+-----------------+
| 10.0.125.130 | 255.255.255.128 |
+--------------+-----------------+
1 row in set (0.00 sec)
Я пытаюсь найти способ с помощью mysql получить фактический диапазон широковещания, который в данном случае равен
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
Любая помощь будет оценена.