[Pdns-users] oracle backend / DNS flag day

Leo Vandewoestijne pdns at unicycle.net
Tue Jan 22 12:41:17 UTC 2019

On Mon, 21 Jan 2019, bert hubert wrote:

> Providing free Oracle support is very expensive for us in terms of licensing
> and time to setting up a working environment.
> We therefore only fix bugs in the Oracle backend from supported
> (commercial) customers.
I hear what you're saying. Makes sense; especially in perspective of an Oracle licence (...).
Althoug XE is free.

> The GitHub issue you cite has 'help-needed' attached to it, which reflects
> that we are not going to fix the problem.
> > In resume: I need pre-4.1.x to have oracle working but post-4.0.x to have EDNS compliance.
> If you are willing to attempt to fix the errors, we'd welcome your pull
> requests. If you have specific questions, also please ask them and maybe we
> can see what the problem is.
Before doing so, this is what solved the problem:

[user at host pdns-4.1.5]$ diff modules/oraclebackend/oraclebackend.cc modules/oraclebackend/oraclebackend.cc.orig
>   string_to_cbuf(mQueryName, name.labelReverse().toString(" ", false)), sizeof(mQueryName));
<   string_to_cbuf(mQueryName, name.labelReverse().toString(" ", false), sizeof(mQueryName));
>   before = DNSName(boost::replace_all_copy(mResultPrevName," ",".")).labelReverse();
>   after = DNSName(boost::replace_all_copy(mResultNextName," ",".")).labelReverse();
<   before = DNSName(mResultPrevName);
<   after = DNSName(mResultNextName);

[user at host pdns-4.1.5]$ diff ./modules/oraclebackend/oraclebackend.hh ./modules/oraclebackend/oraclebackend.hh.orig
<   vector<string> getDomainMasters(const DNSName& domain, int zoneId);
>   vector<string> getDomainMasters(const DNSName& domain, int zoneId) override;
<   bool feedRecord(const DNSResourceRecord &rr, const DNSName ordername);
>   bool feedRecord(const DNSResourceRecord &rr, const DNSName ordername) override;
<   bool delTSIGKey(const DNSName& name);
>   bool delTSIGKey(const DNSName& name) override;

All credit for that solution goes to Guy Nir, DBA, not limited to an Oracle orientation,
and no fear to tangle/mangle/untangle/unmangle C code (but neither of us consider ourself real programmers).

The first "patch" shows too many ")"'s.
Then second, the function "replace_all_copy" seems missing. Removing it removed the obstacle / solved it.
But I guess the removal will decrease speed of regular users.
Therefor I guess this straight as a pull reuqest isn't desired.
However to me it looks like Guy found the solution pretty rapid.

Bytheway, another worth-to-mention thing he did in the past was avoiding any DNSSEC requirements, using mviews in Oracle (m as in materialized).
So; it's still possible to run with the very old data structure - something I often heard of it was impossible.


Met vriendelijke groet,
With kind regards,

Leo Vandewoestijne

More information about the Pdns-users mailing list