143 lines
4 KiB
Cython
143 lines
4 KiB
Cython
|
|
||
|
import cython
|
||
|
|
||
|
from .._dns cimport DNSEntry, DNSPointer, DNSQuestion, DNSRecord
|
||
|
from .incoming cimport DNSIncoming
|
||
|
|
||
|
|
||
|
cdef cython.uint _CLASS_UNIQUE
|
||
|
cdef cython.uint _DNS_PACKET_HEADER_LEN
|
||
|
cdef cython.uint _FLAGS_QR_MASK
|
||
|
cdef cython.uint _FLAGS_QR_QUERY
|
||
|
cdef cython.uint _FLAGS_QR_RESPONSE
|
||
|
cdef cython.uint _FLAGS_TC
|
||
|
cdef cython.uint _MAX_MSG_ABSOLUTE
|
||
|
cdef cython.uint _MAX_MSG_TYPICAL
|
||
|
|
||
|
|
||
|
cdef bint TYPE_CHECKING
|
||
|
|
||
|
cdef unsigned int SHORT_CACHE_MAX
|
||
|
|
||
|
cdef object PACK_BYTE
|
||
|
cdef object PACK_SHORT
|
||
|
cdef object PACK_LONG
|
||
|
|
||
|
cdef unsigned int STATE_INIT
|
||
|
cdef unsigned int STATE_FINISHED
|
||
|
|
||
|
cdef object LOGGING_IS_ENABLED_FOR
|
||
|
cdef object LOGGING_DEBUG
|
||
|
|
||
|
cdef cython.tuple BYTE_TABLE
|
||
|
cdef cython.tuple SHORT_LOOKUP
|
||
|
cdef cython.dict LONG_LOOKUP
|
||
|
|
||
|
cdef class DNSOutgoing:
|
||
|
|
||
|
cdef public unsigned int flags
|
||
|
cdef public bint finished
|
||
|
cdef public object id
|
||
|
cdef public bint multicast
|
||
|
cdef public cython.list packets_data
|
||
|
cdef public cython.dict names
|
||
|
cdef public cython.list data
|
||
|
cdef public unsigned int size
|
||
|
cdef public bint allow_long
|
||
|
cdef public unsigned int state
|
||
|
cdef public cython.list questions
|
||
|
cdef public cython.list answers
|
||
|
cdef public cython.list authorities
|
||
|
cdef public cython.list additionals
|
||
|
|
||
|
cpdef void _reset_for_next_packet(self)
|
||
|
|
||
|
cdef void _write_byte(self, cython.uint value)
|
||
|
|
||
|
cdef void _insert_short_at_start(self, unsigned int value)
|
||
|
|
||
|
cdef void _replace_short(self, cython.uint index, cython.uint value)
|
||
|
|
||
|
cdef _get_short(self, cython.uint value)
|
||
|
|
||
|
cdef void _write_int(self, object value)
|
||
|
|
||
|
cdef cython.bint _write_question(self, DNSQuestion question)
|
||
|
|
||
|
@cython.locals(
|
||
|
d=cython.bytes,
|
||
|
data_view=cython.list,
|
||
|
index=cython.uint,
|
||
|
length=cython.uint
|
||
|
)
|
||
|
cdef cython.bint _write_record(self, DNSRecord record, double now)
|
||
|
|
||
|
@cython.locals(class_=cython.uint)
|
||
|
cdef void _write_record_class(self, DNSEntry record)
|
||
|
|
||
|
@cython.locals(
|
||
|
start_size_int=object
|
||
|
)
|
||
|
cdef cython.bint _check_data_limit_or_rollback(self, cython.uint start_data_length, cython.uint start_size)
|
||
|
|
||
|
@cython.locals(questions_written=cython.uint)
|
||
|
cdef cython.uint _write_questions_from_offset(self, unsigned int questions_offset)
|
||
|
|
||
|
@cython.locals(answers_written=cython.uint)
|
||
|
cdef cython.uint _write_answers_from_offset(self, unsigned int answer_offset)
|
||
|
|
||
|
@cython.locals(records_written=cython.uint)
|
||
|
cdef cython.uint _write_records_from_offset(self, cython.list records, unsigned int offset)
|
||
|
|
||
|
cdef bint _has_more_to_add(self, unsigned int questions_offset, unsigned int answer_offset, unsigned int authority_offset, unsigned int additional_offset)
|
||
|
|
||
|
cdef void _write_ttl(self, DNSRecord record, double now)
|
||
|
|
||
|
@cython.locals(
|
||
|
labels=cython.list,
|
||
|
label=cython.str,
|
||
|
index=cython.uint,
|
||
|
start_size=cython.uint,
|
||
|
name_length=cython.uint,
|
||
|
)
|
||
|
cpdef void write_name(self, cython.str name)
|
||
|
|
||
|
cdef void _write_link_to_name(self, unsigned int index)
|
||
|
|
||
|
cpdef void write_short(self, cython.uint value)
|
||
|
|
||
|
cpdef void write_string(self, cython.bytes value)
|
||
|
|
||
|
@cython.locals(utfstr=bytes)
|
||
|
cdef void _write_utf(self, cython.str value)
|
||
|
|
||
|
@cython.locals(
|
||
|
debug_enable=bint,
|
||
|
made_progress=bint,
|
||
|
has_more_to_add=bint,
|
||
|
questions_offset="unsigned int",
|
||
|
answer_offset="unsigned int",
|
||
|
authority_offset="unsigned int",
|
||
|
additional_offset="unsigned int",
|
||
|
questions_written="unsigned int",
|
||
|
answers_written="unsigned int",
|
||
|
authorities_written="unsigned int",
|
||
|
additionals_written="unsigned int",
|
||
|
)
|
||
|
cpdef packets(self)
|
||
|
|
||
|
cpdef void add_question(self, DNSQuestion question)
|
||
|
|
||
|
cpdef void add_answer(self, DNSIncoming inp, DNSRecord record)
|
||
|
|
||
|
@cython.locals(now_double=double)
|
||
|
cpdef void add_answer_at_time(self, DNSRecord record, double now)
|
||
|
|
||
|
cpdef void add_authorative_answer(self, DNSPointer record)
|
||
|
|
||
|
cpdef void add_additional_answer(self, DNSRecord record)
|
||
|
|
||
|
cpdef bint is_query(self)
|
||
|
|
||
|
cpdef bint is_response(self)
|