<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">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 <marcus.kool@urlfilterdb.com> 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 https://lists.isc.org/mailman/listinfo/bind-users 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 https://www.isc.org/contact/ for more information.</span><br><span></span><br><span></span><br><span>bind-users mailing list</span><br><span>bind-users@lists.isc.org</span><br><span>https://lists.isc.org/mailman/listinfo/bind-users</span><br></div></blockquote></div></body></html>