'Add the specified rdata to the rdataset.
If the optional I{ttl} parameter is supplied, then
self.update_ttl(ttl) will be called prior to adding the rdata.
@param rd: The rdata
@type rd: dns.rdata.Rdata object
@param ttl: The TTL
@type ttl: int'

def add(self, rd, ttl=None):

    if ((self.rdclass != rd.rdclass) or (self.rdtype != rd.rdtype)):
        raise IncompatibleTypes
    if (ttl is not None):
        self.update_ttl(ttl)
    if ((self.rdtype == dns.rdatatype.RRSIG) or (self.rdtype == dns.rdatatype.SIG)):
        covers = rd.covers()
        if ((len(self) == 0) and (self.covers == dns.rdatatype.NONE)):
            self.covers = covers
        elif (self.covers != covers):
            raise DifferingCovers
    if (dns.rdatatype.is_singleton(rd.rdtype) and (len(self) > 0)):
        self.clear()
    super(Rdataset, self).add(rd)
