def encodeResponse(self, response): header_s = struct.pack('>HHHHHH', response.identifier, 1<<15, response.query_len, response.response_len, response.authority_len, response.additional_len) for q in response.queries: dnstype, question = self.resource_factory.encodeQuery(q) name = convert.string_to_dns(question) header_s += name + struct.pack('>HH', dnstype, q.dnsclass) for r in response.resources: dnstype, question, decoded, ttl = self.resource_factory.encodeResource(r) name = convert.string_to_dns(question) new_header_s = name + struct.pack('>HHIH', dnstype, r.dnsclass, ttl, len(decoded)) + decoded header_s += new_header_s return header_s
def encodeRequest(self, request): header_s = struct.pack('>HHH6s', request.identifier, request.flags, request.query_len, '\0\0\0\0\0\0') for q in request.queries: dnstype, question = self.resource_factory.encodeQuery(q) name = convert.string_to_dns(question) header_s += name + struct.pack('>HH', dnstype, q.dnsclass) return header_s