Re: BUG #13488: Wrong netmask calculation

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #13488: Wrong netmask calculation
Дата
Msg-id 29010.1436199309@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #13488: Wrong netmask calculation  (stn@inbox.ru)
Ответы Re: BUG #13488: Wrong netmask calculation
Список pgsql-bugs
stn@inbox.ru writes:
> database=# select inet(routedest), inet(routemask) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
>    inet    |    inet
> -----------+-------------
>  0.0.0.0   | 0.0.0.0
>  10.1.0.0  | 255.255.0.0
>  10.10.0.0 | 255.255.0.0
> (3 rows)

> database=# select inet(routedest), cidr(routemask) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
>    inet    |      cidr
> -----------+----------------
>  0.0.0.0   | 0.0.0.0/32
>  10.1.0.0  | 255.255.0.0/32
>  10.10.0.0 | 255.255.0.0/32
> (3 rows)
> database=# select routedest, network(inet(routemask)) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
>  routedest |    network
> -----------+----------------
>  0.0.0.0   | 0.0.0.0/32
>  10.1.0.0  | 255.255.0.0/32
>  10.10.0.0 | 255.255.0.0/32
> (3 rows)

You did not say what you think is wrong here, but AFAICS all of these
results are probably per the documentation (I say "probably" because,
without having seen the input data, it's not entirely clear what
calculations you're actually doing).

I suspect what you are wishing for is a function that would take the
inputs "10.1.0.0" and "255.255.0.0" and produce the CIDR value 10.1/16.
That would be a reasonable thing to offer, perhaps, but it's not there
now.  In the meantime you could probably build it easily enough as a
SQL function, at least for the set of mask values that actually occur
in your data.

            regards, tom lane

В списке pgsql-bugs по дате отправления:

Предыдущее
От: stn@inbox.ru
Дата:
Сообщение: BUG #13488: Wrong netmask calculation
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: PQexec() hangs on OOM