Re: поддержка IP_BIND_ADDRESS_NO_PORT на CentOS-7.4
Ruslan Ermilov
ru на nginx.com
Пн Май 14 10:04:41 UTC 2018
On Mon, May 14, 2018 at 12:14:28PM +0500, Илья Шипицин wrote:
> на днях зарелизился centos-7.5, в нем, к сожалению, все по прежнему
>
> завел тикет
>
> https://trac.nginx.org/nginx/ticket/1553
>
> посмотрите ?
>
> 29 апреля 2018 г., 3:40 пользователь Валентин Бартенев <vbart на nginx.com>
> написал:
>
> > On Saturday, 28 April 2018 15:03:49 MSK Илья Шипицин wrote:
> > > привет!
> > >
> > > поддержка IP_BIND_ADDRESS_NO_PORT официально началась в ядре 4.2, но ...
> > > ее портировали в 3.10 на CentOS-7.4
> > >
> > > однако, портировали не очень качественно. константа определена не в том
> > > файле, в котором должна (и в котором ищет nginx)
> > >
> > > [root на xxx ~]# grep -r IP_BIND_ADDRESS_NO_PORT /usr/include/
> > > /usr/include/linux/in.h:#define IP_BIND_ADDRESS_NO_PORT 24
> > > [root на xxx ~]#
> > >
> > >
> > > т.е. если пакет собирать, как он собирается обычно, то поддержка
> > > IP_BIND_ADDRESS_NO_PORT не включается (хотя могла бы).
> > >
> > > скажите, вы официальные пакеты собираете каким образом ? кажется, имеет
> > > смысл поправить эту процедуру и дать эту крутую фичу пользователям
> > > CentOS-7.4
> > >
> >
> > Дело же не в ядре (не только в нем). На линуксах интерфейс обеспечивает
> > glibc и именно туда смотрит nginx.
<linux/in.h> - это заголовочный файл ядра. <netinet/in.h> - это
заголовочный файл glibc. Приложения используют <netinet/in.h>.
В норме макрос IP_BIND_ADDRESS_NO_PORT есть в обоих файлах, что
означает, что поддержка есть и в ядре, и в glibc. Утверждение о
том, что "константа определена не в том файле", ошибочное.
Как Вам уже пытался ранее объяснять Валентин, проблема заключается
в том, что в установленной версии glibc нет поддержки этого макроса.
Для себя Вы можете проблему решить так:
configure --with-cc-opt=-DIP_BIND_ADDRESS_NO_PORT=24
Подробная информация о списке рассылки nginx-ru