|
|
|
Найти сеть которой принадлежит IP (перебрав все вложеные)
|
|||
|---|---|---|---|
|
#18+
Есть список сетей, в тч разбитые на более мелкие сети: 10.0.82.0/24 10.0.83.0/24 разбитая на две сети /25, одна из кторых разбита еще на две /26. В таблице все лежит так: idipmaskINET_ATON(ip)1501677931522410.0.82.01511677934082510.0.83.01521677935362510.0.83.1281531677935362610.0.83.1281541677936042610.0.83.1961931677934082410.0.83.0 Есть, например IP 10.0.83.1 который принадлежит и сети с ID=151 и сети с ID=193. Но сеть 10.0.83.0/25 вложена в 10.0.83.0/24. по этому IP должен принадлежать именно 10.0.83.0/25 но не 10.0.83.0/24. Есть более сложные варианты, когда, например нужно найти куда принадлежит 10.0.83.197: 10.0.83.0/24 -> 10.0.83.128/25 -> 10.0.83.196/26 ->10.0.83.197 Написал процедуру, по определению принадлежит ли IP сети. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Никак не могу придумать как теперь сделать перебор всех сетей, и выбор той, к оторой самое больше значение ipmask. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 10:11 |
|
||
|
Найти сеть которой принадлежит IP (перебрав все вложеные)
|
|||
|---|---|---|---|
|
#18+
отвечу на первую часть вопроса сам. переписал первую функцию: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вторая - занимается перебором: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Осталось придумать как выбрать ту строку, у которой ipmask самая большая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 10:49 |
|
||
|
Найти сеть которой принадлежит IP (перебрав все вложеные)
|
|||
|---|---|---|---|
|
#18+
решил сам :) Ищем сеть, и добавляем. если новая находка дает маску больше - обновляем ID подсети: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ЗЫЖ мучаю phpipam ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 12:26 |
|
||
|
Найти сеть которой принадлежит IP (перебрав все вложеные)
|
|||
|---|---|---|---|
|
#18+
А теперь без ошибок и правда работающий: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 13:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39260280&tid=1831648]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 343ms |

| 0 / 0 |
