progress of development pdns-mrubybackend 1.4

こんばんは。
夏休みの宿題としてpdns-mrubybackend の PowerDNS 4.0.1 対応やってます。

この記事はメモと独り言です。
どのソースのどこの事だとかきちんと書いてません。ごめんなさい。

やってるんですが、3.x系PowerDNSと4.x系PowerDNSでDNSBackend::lookupメソッドの引数の型が変更されたようで
思ってたより時間喰っております。

1
2
3
4
5
/* 3.4.9 */
virtual void lookup(const QType &qtype, const string &qdomain, DNSPacket *pkt_p=0, int zoneId=-1)=0;

/* 4.0.1 */
virtual void lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1)=0;

qdomain は問い合わせ対象のFQDNが入り従来は文字列でしたが4系ではDNSNameに変更されています。

.toString() してしまえばこれまでと同じように文字列が得られるのですが toString() すると、
ナニカコレマデトチョトチガウ。

そう、qdomain.toString() すると example.jp. のように Trailing Dotがつくんですね。
これは同じrubyのバックエンドコードを使うと挙動が変わってしまう。

さてはて。同じにする方法は無いものか。
DNSNametoStringは以下のように定義されてました。

1
std::string toString(const std::string& separator=".", const bool trailing=true) const;

ほほーん。
おまけに以下のようなメソッドも用意されていたり。

1
std::string toStringNoDot() const { return toString(".", false); }

ひとまず、confで.の有無を選べるようなオプションを追加しようと思います。

さ、続きを頑張るぞ。

このエントリーをはてなブックマークに追加