'Reads the answers, authorities and additionals section of the packet'

def readOthers(self):

    format = '!HHiH'
    length = struct.calcsize(format)
    n = ((self.numAnswers + self.numAuthorities) + self.numAdditionals)
    for i in range(0, n):
        domain = self.readName()
        info = struct.unpack(format, self.data[self.offset:(self.offset + length)])
        self.offset += length
        rec = None
        if (info[0] == _TYPE_A):
            rec = DNSAddress(domain, info[0], info[1], info[2], self.readString(4))
        elif ((info[0] == _TYPE_CNAME) or (info[0] == _TYPE_PTR)):
            rec = DNSPointer(domain, info[0], info[1], info[2], self.readName())
        elif (info[0] == _TYPE_TXT):
            rec = DNSText(domain, info[0], info[1], info[2], self.readString(info[3]))
        elif (info[0] == _TYPE_SRV):
            rec = DNSService(domain, info[0], info[1], info[2], self.readUnsignedShort(), self.readUnsignedShort(), self.readUnsignedShort(), self.readName())
        elif (info[0] == _TYPE_HINFO):
            rec = DNSHinfo(domain, info[0], info[1], info[2], self.readCharacterString(), self.readCharacterString())
        elif (info[0] == _TYPE_AAAA):
            rec = DNSAddress(domain, info[0], info[1], info[2], self.readString(16))
        else:
            self.offset += info[3]
        if (rec is not None):
            self.answers.append(rec)
