<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi Ondrej,</p>
<p>yeah, I was kinda expecting "no guarantees", but isn't the
plugin_version() function a good method candidate to enforce
compatibility?<br>
I mean, isn't increasing <span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;">NS_PLUGIN</span><span
style="color:#000000;background-color:#b26818;">_VERSI</span><span
style="color:#000000;background-color:#ffffff;">ON</span></span>
when a (plugin visible) data structure changes, a good way to
enforce that only compatible plugins are used?<span
style="color:#000000;background-color:#ffffff;"><br>
</span></p>
<p><span style="color:#000000;background-color:#ffffff;">Thanks,</span></p>
<p><span style="color:#000000;background-color:#ffffff;">Marcus<br>
</span></p>
<p><span style="font-family:monospace"><br>
</span></p>
<div class="moz-cite-prefix">On 15/12/2022 19:32, Ondřej Surý wrote:<br>
</div>
<blockquote type="cite"
cite="mid:D4B1488F-1A1C-4639-80BE-8513F959C860@isc.org">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Hi Marcus,
<div><br>
</div>
<div>I am afraid that we can’t provide any guarantees about the
BIND 9 internal libraries. We made a decision to drop the layers
and layers of compatibility for the sake of maintainability.</div>
<div><br>
</div>
<div>That said, once the release is pronounced ESV (roughly a year
from initial release), we try to minimize changes to that
branch, but it could still happen if needed by a security fix.</div>
<div><br>
</div>
<div>As for the binary compatibility, there’s no guarantee
whatsoever, I think you need to match the full version to check
whether the plug-in should be loaded.</div>
<div><br>
</div>
<div>Honestly, the best way how to keep the plug-in that’s useful
for wider audience maintained would be to contribute it to the
BIND 9 with a promise that the authors will keep helping
maintaining the plug-in. (We would like to avoid the situations
where the author just dumps the code on us and don’t care
anymore - there’s associated maintenance cost with any new
feature.)</div>
<div><br>
</div>
<div>Ondrej<br>
<div dir="ltr">
<div>--</div>
Ondřej Surý — ISC (He/Him)
<div><br>
</div>
<div>My working hours and your working hours may be different.
Please do not feel obligated to reply outside your normal
working hours.</div>
</div>
<div dir="ltr"><br>
<blockquote type="cite">On 15. 12. 2022, at 20:10, Marcus Kool
<a class="moz-txt-link-rfc2396E" href="mailto:marcus.kool@urlfilterdb.com"><marcus.kool@urlfilterdb.com></a> wrote:<br>
<br>
</blockquote>
</div>
<blockquote type="cite">
<div dir="ltr">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<p>Hi,</p>
<p>I have written a plugin for named and was wondering what
the policy behind the usage of plugin_version() is and
what kind of compatibility check it intends to perform.</p>
<p>It is common for plugins to use query_ctx_t and its
members fname, view, client (client.message, client.query)
etc.<br>
Since these data structures may change between (patch)
versions, a plugin compiled for version A can get a SEGV
signal because a data structure changed and the plugin is
used inside named version B.<br>
I have little experience with data structure changes of
named and observed only the addition of <font
face="monospace">refresh_rrset</font> in query_ctx
(somewhere between 9.16.1 and 9.16.35) which did not cause
an issue since its 1-byte size did not change offsets of
most members inside the query_ctx struct.</p>
<p>In our plugin, plugin_register() checks for the major and
minor version number in named_g_version so a plugin
compiled with 9.16.x refuses to initialize inside a 9.18.y
named process and vice versa. But I have the impression
that this might not be a 100% guarantee that all is well.<br>
</p>
<p>Because we like to release as few as possible versions of
the plugin I have a second question: how can we be sure
that a plugin compiled with 9.X.1 will have no issues
accessing named data structures for all patch versions of
9.X?</p>
<p>Thanks,</p>
<p>Marcus</p>
<p><br>
</p>
<p><span style="font-family:monospace"><br>
</span></p>
<span>-- </span><br>
<span>Visit
<a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/bind-users">https://lists.isc.org/mailman/listinfo/bind-users</a> to
unsubscribe from this list</span><br>
<span></span><br>
<span>ISC funds the development of this software with paid
support subscriptions. Contact us at
<a class="moz-txt-link-freetext" href="https://www.isc.org/contact/">https://www.isc.org/contact/</a> for more information.</span><br>
<span></span><br>
<span></span><br>
<span>bind-users mailing list</span><br>
<span><a class="moz-txt-link-abbreviated" href="mailto:bind-users@lists.isc.org">bind-users@lists.isc.org</a></span><br>
<span><a class="moz-txt-link-freetext" href="https://lists.isc.org/mailman/listinfo/bind-users">https://lists.isc.org/mailman/listinfo/bind-users</a></span><br>
</div>
</blockquote>
</div>
</blockquote>
</body>
</html>