]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2164] Add RRset::getSIGRdataCount()
authorMukund Sivaraman <muks@isc.org>
Wed, 8 Aug 2012 15:48:25 +0000 (21:18 +0530)
committerMukund Sivaraman <muks@isc.org>
Wed, 8 Aug 2012 15:48:25 +0000 (21:18 +0530)
src/lib/dns/rrset.cc
src/lib/dns/rrset.h
src/lib/dns/tests/rrset_unittest.cc

index 43d86462cd7aab97f03445feae448cc89f501778..d71327821633da312a1cd5fe791aa5fa92149954 100644 (file)
@@ -249,6 +249,15 @@ RRset::RRset(const Name& name, const RRClass& rrclass,
 
 RRset::~RRset() {}
 
+unsigned int
+RRset::getSIGRdataCount() const {
+    if (rrsig_ != NULL) {
+        return (rrsig_->getRdataCount());
+    } else {
+        return (0);
+    }
+}
+
 namespace {
 class BasicRdataIterator : public RdataIterator {
 private:
index 74380cedddc3dfd1e1f346eabc245153ce3cd944..e28621ca9390d4c56e26aac0119dc70ac0031242 100644 (file)
@@ -810,6 +810,15 @@ public:
 
     virtual ~RRset();
 
+    /// \brief Returns the number of \c RRSIG records associated with
+    /// the \c RRset.
+    ///
+    /// Note that an \c RRset with no RRSIG records may exist, so this
+    /// method may return 0.
+    ///
+    /// \return The number of \c RRSIG records associated.
+    unsigned int getSIGRdataCount() const;
+
     /// \brief Updates the owner name of the \c RRset, including RRSIGs if any
     virtual void setName(const Name& n) {
         BasicRRset::setName(n);
index 75a545984df347e80c105468f8e5a115ea66ae7d..37dd8c2c36aa4177388457b9faad67f684165aa1 100644 (file)
@@ -338,4 +338,23 @@ TEST_F(RRsetRRSIGTest, addRRsig) {
     rrset_a->addRRsig(rrset_rrsig);
     EXPECT_EQ(3, sp->getRdataCount());
 }
+
+TEST_F(RRsetRRSIGTest, getSIGRdataCount) {
+    EXPECT_EQ(1, rrset_aaaa->getSIGRdataCount());
+    EXPECT_EQ(0, rrset_a->getSIGRdataCount());
+
+    rrset_rrsig = RRsetPtr(new RRset(test_name, RRClass::IN(),
+                                     RRType::RRSIG(), RRTTL(3600)));
+    // one signature algorithm (5 = RSA/SHA-1)
+    rrset_rrsig->addRdata(generic::RRSIG("A 5 3 3600 "
+                                         "20000101000000 20000201000000 "
+                                         "12345 example.com. FAKEFAKEFAKE"));
+    // another signature algorithm (3 = DSA/SHA-1)
+    rrset_rrsig->addRdata(generic::RRSIG("A 3 3 3600 "
+                                         "20000101000000 20000201000000 "
+                                         "12345 example.com. FAKEFAKEFAKE"));
+    rrset_a->addRRsig(rrset_rrsig);
+
+    EXPECT_EQ(2, rrset_a->getSIGRdataCount());
+}
 }