On 03/28/2016 05:52 PM, Stefan Fritsch wrote:
On Monday 07 March 2016 12:41:25, Jan Kaluža wrote:
This is needed for httpd startup with systemd when one wants to use
particular IP address to bind. There is no way how to start httpd
after the IP address has been configured in systemd and according
to systemd developers, the applications should become more robust
to handle network changes like that. The full reasoning is
explained here [1].
This is wrong. We really want to be able to check the configuration
for correctness at startup. If you switch to using freebind by
default, you loose that sanity check. And using freebind for all
systemd users is basically the same as making it the default.
I do not plan to enable that feature by default. I think 99% of the
users use Listen without the particular public IP address, so there is
no need to use it for them.
Doesn't network-online.target do what you need? If no, why not?
It does, but it's not what systemd authors describe as a best solution.
Also, as Yann said, we might want to use that API even for different
socket options in near future.
You are right that from user perspective, it probably doesn't matter if
the user enables network-online.target or adds freebind option to httpd
- he has to change the configuration of the system anyway. I was just
thinking that it would be nice to have a support for that even in httpd.
I am not against the freebind feature as such, it's useful for
failover solutions/VRRP/etc. But I am strictly against advertising
this as a workaround for broken systemd design.
We do not advertise it publicly as a workaround for systemd issues. I
was using systemd in my email just to show the use-case I'm personally
interested in. In the httpd documentation for this config option in my
patch, there is no mention of systemd.
I also personally think that systemd should handle this situation
differently, but systemd developers think the opposite for a long time.
I was discussing that with them and it's very unlikely that they would
change something related to this problem.
Regards,
Jan Kaluza
The patch needs latest APR-trunk currently, but it could be
rewritten to set IP_FREEBIND directly instead of using APR API (We
use that way for REUSEADDR socket option).
Do you think FreeListen is good name for this feature, or would you
name/implement it differently?
[1] https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/