Category: спорт

Category was added automatically. Read all entries about "спорт".

Старый дефолтный
  • dma

Кто-нибудь знает, как БЫСТРО матчить IP addresses?

Перлом.
Дано:

  • IP address
  • список сетей в формате xxx.xxx.xxx.xxx/yy - где ххх.ххх.ххх.ххх - адрес, уу - маска.

Надо: получить на выходе match/no match, network ID - не нужен.

Предполагаемое решение:
хэш вида{
<netmask> => {
<network1> => 1,
<network2> => 1,
....
<networkN> => 1,
},
...
},
все ip addresses переведены в integer form - то есть 10.0.0.0 -> 0x0A000000.
перебором от бОльшей маски к меньшей, проверять, что exists($hash->{$mask}->{$ip & $mask_num})
где $mask_num - выражение маски в числовой форме (/24 -> 0xFFFFFF00).

Вопросы:
1) лежат ли где грабли
2) Как сделать быстрее