From: Jelte Jansen Date: Fri, 7 Sep 2012 15:20:28 +0000 (+0200) Subject: [2151] add well-known static wildcard labelsequence X-Git-Tag: trac2351_base~47^2~3^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ed1a5d91d8ca0826a6c6370abfa511c052b60c24;p=thirdparty%2Fkea.git [2151] add well-known static wildcard labelsequence --- diff --git a/src/lib/dns/labelsequence.h b/src/lib/dns/labelsequence.h index 545ce12133..b9105506c1 100644 --- a/src/lib/dns/labelsequence.h +++ b/src/lib/dns/labelsequence.h @@ -53,6 +53,14 @@ public: static const size_t MAX_SERIALIZED_LENGTH = Name::MAX_WIRE + Name::MAX_LABELS + 1; + /// + /// \name Well-known LabelSequence constants + /// + //@{ + /// Wildcard label ("*") + static const LabelSequence& WILDCARD_LABEL(); + //@} + /// \brief Constructs a LabelSequence for the given name /// /// \note The associated Name MUST remain in scope during the lifetime @@ -410,6 +418,13 @@ private: std::ostream& operator<<(std::ostream& os, const LabelSequence& label_sequence); +inline const LabelSequence& +LabelSequence::WILDCARD_LABEL() { + static const uint8_t wildcard_buf[4] = { 0x01, 0x00, 0x01, '*' }; + static const LabelSequence wild_ls(wildcard_buf); + return (wild_ls); +} + } // end namespace dns } // end namespace isc diff --git a/src/lib/dns/tests/labelsequence_unittest.cc b/src/lib/dns/tests/labelsequence_unittest.cc index 28f624aabd..06092c008e 100644 --- a/src/lib/dns/tests/labelsequence_unittest.cc +++ b/src/lib/dns/tests/labelsequence_unittest.cc @@ -1174,4 +1174,10 @@ TEST_F(ExtendableLabelSequenceTest, extendBadData) { check_equal(full_ls2, els); } +// Check the static fixed 'wildcard' LabelSequence +TEST(WildCardLabelSequence, wildcard) { + ASSERT_FALSE(LabelSequence::WILDCARD_LABEL().isAbsolute()); + ASSERT_EQ("*", LabelSequence::WILDCARD_LABEL().toText()); +} + }