Re: systemd integration test

Wouter Wijngaards <[email protected]>
Newsgroups gmane.network.dns.nsd.general
Message-ID <[email protected]>
Hi Paul,


On 07/10/2018 05:44 PM, Paul Wouters wrote:
> On Fri, 6 Jul 2018, Wouter Wijngaards wrote:
>
>> Recently I have written systemd integration code for NSD, based on the
>> code that was contributed to Unbound previously.  This code can pick up
>> sockets (systemds socket activation) for a port without having
>> widespread port permissions, and can signal systemd that the server is
>> ready (sd_notify).
>
> The unbound systemd code caused crashes even when it was disabled in
> fedora/rhel.  So we decided to not compile the support anymore.

Could the following patch (for Unbound) remove the failure?  I notice
that it did not check the entire address and thus the activated sockets
could get wrong, this patch rectifies that issue.  But I don't really
see how that could have caused crashes.  So perhaps all it does it
shuffle the file descriptors slightly without fixing the crash issue.

However, I can remove the socket activation (from Unbound and NSD), and
then have sd_notify support that could be very useful to have for
systemd users?  If socket activation did not cause issues, I would not
favor its removal.


Index: services/listen_dnsport.c
===================================================================
--- services/listen_dnsport.c    (revision 4777)
+++ services/listen_dnsport.c    (working copy)
@@ -144,8 +144,17 @@
    
     for(i = 0; i < r; i++) {
         if(sd_is_socket(SD_LISTEN_FDS_START + i, family, socktype,
listen)) {
-            s = SD_LISTEN_FDS_START + i;
-            break;
+            if( (family == AF_INET || family == AF_INET6) ) {
+                if(sd_is_socket_sockaddr(
+                    SD_LISTEN_FDS_START + i, family,
+                    addr, addrlen)) {
+                    s = SD_LISTEN_FDS_START + i;
+                    break;
+                }
+            } else {
+                s = SD_LISTEN_FDS_START + i;
+                break;
+            }
         }
     }
     if (s == -1) {



Best regards, Wouter

>
> But additionally, socket activation is useful for services that exist
> on their own port, which only get used when rarely needed. That is,
> as an inetd replacement it is great.
>
> It is not great for a port where several programs might try to grab the
> port. On linux systems with qemu/kvm/libvirt we have dnsmasq that needs
> to share this space with unbound. Some have unbound + nsd running and
> they need to ensure they each grab only some IP addresses port 53.
> Making these decisions based on random incoming packets leads to
> problems.
>
> For other applications, (like libreswan IKE daemon) I also rejected
> socket activation because it simply makes no sense for daemons that are
> guaranteed to get started anyway pretty quickly after boot.
>
> Socket activation with systemd is a boot speed up fetish. It makes the
> boot appear faster. In most cases other then the rarely used service use
> case of inetd started, there is no valid reason for socket activation.
>
> I think adding/enabling socket activation with DNS software is a mistake.
>
> That said, sd_notify is a useful software watchdog device. It would be
> nice to be able to support that compile time without making it a package
> deal with socket activation. (case in point: libreswan supports
> sd_notify,
> but not socket activation)
>
>> But before I could mark the feature as available for general use, I need
>> to know if it works.
>
> Earlier attempst to compile in support but leave it disabled for unbound
> (for the above stated reasons) caused crashes and we ended up disabling
> it at compile time. If this code is that similar to unbound, I would
> also not enable it for nsd at compile time. It would be sad if that
> means missing out on the software watchdog sd_notify.
>
> Paul

_______________________________________________
nsd-users mailing list
[email protected]
https://open.nlnetlabs.nl/mailman/listinfo/nsd-users
pEpkey.asc (application/pgp-keys, 11.4 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
EACMQK0xYtZtAvLL/8CCcCi92Oi1rtXRGWnRy7JX020hftmWliMq4P0F3CJKVLhg
Z/ldp8OOqmfDfmwLMVSaCQ86Ubqn7Ofrf8Ku8SGQuIMxY2ODB97houY4bnDHaM2C
qi6JkBN+G1tgdwqN/kcecF2tq3ql2k7eX91++A+F5ApIu1silzJPL4Z8W6MVOdKr
tzEM7t61hRlsbpEPj72vbVBZ1hmTiIL4VWwdxQYamxBoOeneskyDDG+iMCI3P1GG
3EQkk+9Aect/iH9uruE0mxn2aKN8cfuoR93cPF/ozCxS5ItwAVnNe39WRO1GT2zY
aFgYm0lf9czcpRsRzNbGw938lZ3iPUiZe+ybKgLKkVmvrkM59ljHT99SrC14VXxg
QwSs4gS3rdzbY9tPps62Z1q+xCVfTx1IY5P4nt59xwQV0Iw+pV9S/mVcOnPXl1UK
b0ttOdYJErrq3RpF/D2g/NDtL0OWqIa8LvrBlyQYmWPKvKw76vt4bJ3NU31jSc0o
w/j7EOVjOst86s629zmtnbJjWVr6LOy5EDUPusmqHv1t4Z4RMjf8OrJdNbFJoRXZ
v8FbW4NzXeGtMf8k6vKeejpdMH4+eLuoZG7dchU1JccfgqfwWpy0ojmb59drJcaQ
gVC6Jvw9l0TmGPNIsE4UrIWocaFgv4dOKvHA2hcnMDM8rrkCDQRNr/0cARAApvDK
eVLiSazESdTY9KsSWsqoB38pvOsu25M49tEjc5TtY5LwKNckqkeRlJ83O8dFG7UB
VuGwLKaf/6OR/pe24upZ27eOOWW7sXvQNv5aXlOYfF+mjIhUINqjq4pKDmO1c9J7
h5d+auOVfzcgfotg3BVCaKn56ucjiQJ059uUMfgWTvVlibnoJ7deZcgt8v7VcLK9
jv+P8QJHTIyDzJd+JjdjuHXqC/A37T5G9Z84x8wYrQY6mZmOIYaMjwIKdgFeN+nL
k5henARUz4MTFUW4j9hHpuyAFomDQ93/wkHZ9IEChTxdZnfvsd//Z45vfcX9dQM+
tuR8XCYThVsScI1TnwR46hi5NkfmHo3HVxwB8/owJ+FZDsTNBbJd7AVy27Xk4L5h
Le7BwLDtFMyOp4lOipCM7//mtFB9mTzqnOwiSSyTRlwGUBJkzQFWQa0Z6bfYwA6+
y1dn19H519GW49irtl+2+W8W4N8oLriIjPvqrQOyaELFcRfV6FfLi09HPhHVbejO
qIEbOtfuN0+mjrrGAwortfTBjfw80N+W90BTvta4K2SyjHcJTkDYehfOo/5IMpGt
DsOgvsCbDaFRnNJuYtSqQmvWk1KIPIw6CkdJtZa3+q3YA7D7ovOVH1OBTKNdBjc+
X4W8L5R9MCymXWvgiP+52Sv1VIcZmsnCBrwK490AEQEAAYkCJQQYAQIADwUCTa/9
HAIbDAUJCWYBgAAKCRCfbxwtfgRfjTY/D/9+kX8LeqBhwDdwy3udV67KmVmytwGM
fzBHbAyBdy84X06ip/If/VkjL+2Sv5Uml/cOOzGZT7y/KEt0uXQzgOZhGP5Y0ORE
f4kSzfb7tsGu3ZjTp5uJe7HiJr8uqYGfx94TQG/A3x1C7MlxOGmWDK/Eh/eNVeNd
+3yyDEzl2p7a0yUhI8LtzllVrEDX+G4rz+mdDw4tfPDqzRPzPvVtPfqnfofHP5r2
dshGe7+pCTC+o0jHWpaiFkEiIrR3PbZ9tV6+F5LzCUJJP5nepz6CShpLHq9ST6qZ
iw5ZpdznHW0kVl96YxgynJq9Y4dqD/8nOfTzdHhXXEogGvRfcxatxeZF7YNFhUU2
p+CswAjRKCUzZAz0hDAu+dJ+fw4Odx7ii8uiwhEnEHoo8rPETkXwUK1je4MCzMRS
y0Gippzk/oZ7noIml+Njas/UygavUOQm8bcPqGfWeFqvM2C7ZobL2iV0fX/bhEmQ
yosiWJ0nHuKdwDYygYs/4LtZLxwiKli/lm6IDz1028j6/98Z81gGoltXWokTYAPE
gcBuhyiSLSQ1wojTVMYt9rPKMBakTzP+0FoWqoNafWOlHovP6iUB2Igll2ZT3Avr
BQ8jAbRbuUl46QpBaKsl+pBo86az0fRkMxv0N4dQv4Q7Z0g71u9NTpaq1vtAZOwc
0kl3uGNK18PnV4kCPAQYAQIAJgIbDBYhBO36o/LKTm6wVoGvjp9vHC1+BF+NBQJZ
pTgKBQkRmNVuAAoJEJ9vHC1+BF+NyNQP/A3h+cOOkYUxyKpNHdtlIfCn8db5tHXS
CbE19Qi7EK1SiK5atjo+VoRtB+L01kH6GCx5oZjeIhUdzYFwEUsdCDgwD6r0dKFw
KIGa4TFcfnx+Z5B+HZgLYc6ac5PEHF1qZVXZH9GSGeNw5h2yyqf4yhvetSN6L2id
14m5XXJV5e7NfOgmaSnG0Z+wQvPSiu+Q00XpENT8HFSTSCjRATjk12rpy6TPeeC5
2NK1gLhGDRHN0k6m+vm4yoC+Nd6iPQpnc+5xs7NDnq2dFuSTp7UTGebzPhhdSQgu
jEFuYLwzQMZu1h5amtA+v9j7BYEJkOMC7bm1PNNA2QQ6QfH8Hf+mJeINyJO8A5KS
3ceP+eo3SLR8T0hPzu9gZuZ22Hn3DXQh1VNRshaLKgNvoXpL3dQ48d1SFFKhEDpy
2HSXUq2fs5rH0uszFGesG7K6EQRAYRcDrCkt9fdfkvCSxAFw9d+472xThzgKcN+M
kOec+SaY+xlVULjEfCWyRVC8Opam4mTm/XT4mVLxP/qnsy7kEhLoc/ouB+lY/ks0
6LpZJvCXL6WfA9You1Fi1Mg7GhSh9JKg6X6E8Trm+N4dxJGut1xbbGmmKXqfi4pe
j9KlkdeM9t1df/vWKlPa7Hzd8H0btgJx066wC4yt0ghxtsJXBsCDxWLfzaSRZ2/e
P16mHqxDjsQQ
=/K3e
-----END PGP PUBLIC KEY BLOCK-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.