diff options
Diffstat (limited to 'source3/autoconf/librpc/gen_ndr/py_dns.c')
-rw-r--r-- | source3/autoconf/librpc/gen_ndr/py_dns.c | 2729 |
1 files changed, 2729 insertions, 0 deletions
diff --git a/source3/autoconf/librpc/gen_ndr/py_dns.c b/source3/autoconf/librpc/gen_ndr/py_dns.c new file mode 100644 index 0000000000..c6c153181c --- /dev/null +++ b/source3/autoconf/librpc/gen_ndr/py_dns.c @@ -0,0 +1,2729 @@ + +/* Python wrapper functions auto-generated by pidl */ +#include <Python.h> +#include "includes.h" +#include <pytalloc.h> +#include "librpc/rpc/pyrpc.h" +#include "librpc/rpc/pyrpc_util.h" +#include "autoconf/librpc/gen_ndr/ndr_dns.h" +#include "autoconf/librpc/gen_ndr/ndr_dns_c.h" + +#include "librpc/gen_ndr/misc.h" +staticforward PyTypeObject dns_name_question_Type; +staticforward PyTypeObject dns_rdata_data_Type; +staticforward PyTypeObject dns_soa_record_Type; +staticforward PyTypeObject dns_mx_record_Type; +staticforward PyTypeObject dns_txt_record_Type; +staticforward PyTypeObject dns_srv_record_Type; +staticforward PyTypeObject dns_tkey_record_Type; +staticforward PyTypeObject dns_tsig_record_Type; +staticforward PyTypeObject dns_fake_tsig_rec_Type; +staticforward PyTypeObject dns_res_rec_Type; +staticforward PyTypeObject dns_name_packet_Type; +staticforward PyTypeObject dns_InterfaceType; + +void initdns(void);static PyTypeObject *Object_Type; +static PyTypeObject *ClientConnection_Type; + +static PyObject *py_dns_name_question_get_name(PyObject *obj, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(obj); + PyObject *py_name; + py_name = PyString_FromStringOrNULL(object->name); + return py_name; +} + +static int py_dns_name_question_set_name(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + object->name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_name_question_get_question_type(PyObject *obj, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(obj); + PyObject *py_question_type; + py_question_type = PyInt_FromLong(object->question_type); + return py_question_type; +} + +static int py_dns_name_question_set_question_type(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->question_type = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->question_type = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_name_question_get_question_class(PyObject *obj, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(obj); + PyObject *py_question_class; + py_question_class = PyInt_FromLong(object->question_class); + return py_question_class; +} + +static int py_dns_name_question_set_question_class(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->question_class = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->question_class = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyGetSetDef py_dns_name_question_getsetters[] = { + { discard_const_p(char, "name"), py_dns_name_question_get_name, py_dns_name_question_set_name }, + { discard_const_p(char, "question_type"), py_dns_name_question_get_question_type, py_dns_name_question_set_question_type }, + { discard_const_p(char, "question_class"), py_dns_name_question_get_question_class, py_dns_name_question_set_question_class }, + { NULL } +}; + +static PyObject *py_dns_name_question_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_name_question, type); +} + +static PyObject *py_dns_name_question_ndr_pack(PyObject *py_obj) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_name_question); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_name_question_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_name_question); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_name_question); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_name_question_ndr_print(PyObject *py_obj) +{ + struct dns_name_question *object = (struct dns_name_question *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_name_question, "dns_name_question", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_name_question_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_name_question_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_name_question_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_name_question_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_name_question_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.name_question", + .tp_getset = py_dns_name_question_getsetters, + .tp_methods = py_dns_name_question_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_name_question_new, +}; + + +static PyObject *py_dns_rdata_data_get_length(PyObject *obj, void *closure) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(obj); + PyObject *py_length; + py_length = PyInt_FromLong(object->length); + return py_length; +} + +static int py_dns_rdata_data_set_length(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->length = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_rdata_data_get_data(PyObject *obj, void *closure) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(obj); + PyObject *py_data; + py_data = PyList_New(object->length); + if (py_data == NULL) { + return NULL; + } + { + int data_cntr_0; + for (data_cntr_0 = 0; data_cntr_0 < object->length; data_cntr_0++) { + PyObject *py_data_0; + py_data_0 = PyInt_FromLong(object->data[data_cntr_0]); + PyList_SetItem(py_data, data_cntr_0, py_data_0); + } + } + return py_data; +} + +static int py_dns_rdata_data_set_data(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int data_cntr_0; + object->data = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->data, PyList_GET_SIZE(value)); + if (!object->data) { return -1;; } + talloc_set_name_const(object->data, "ARRAY: object->data"); + for (data_cntr_0 = 0; data_cntr_0 < PyList_GET_SIZE(value); data_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, data_cntr_0), return -1;); + object->data[data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, data_cntr_0)); + } + } + return 0; +} + +static PyGetSetDef py_dns_rdata_data_getsetters[] = { + { discard_const_p(char, "length"), py_dns_rdata_data_get_length, py_dns_rdata_data_set_length }, + { discard_const_p(char, "data"), py_dns_rdata_data_get_data, py_dns_rdata_data_set_data }, + { NULL } +}; + +static PyObject *py_dns_rdata_data_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_rdata_data, type); +} + +static PyObject *py_dns_rdata_data_ndr_pack(PyObject *py_obj) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_rdata_data); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_rdata_data_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_rdata_data); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_rdata_data); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_rdata_data_ndr_print(PyObject *py_obj) +{ + struct dns_rdata_data *object = (struct dns_rdata_data *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_rdata_data, "dns_rdata_data", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_rdata_data_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_rdata_data_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_rdata_data_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_rdata_data_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_rdata_data_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.rdata_data", + .tp_getset = py_dns_rdata_data_getsetters, + .tp_methods = py_dns_rdata_data_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_rdata_data_new, +}; + + +static PyObject *py_dns_soa_record_get_mname(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_mname; + py_mname = PyString_FromStringOrNULL(object->mname); + return py_mname; +} + +static int py_dns_soa_record_set_mname(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + object->mname = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_soa_record_get_rname(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_rname; + py_rname = PyString_FromStringOrNULL(object->rname); + return py_rname; +} + +static int py_dns_soa_record_set_rname(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + object->rname = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_soa_record_get_serial(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_serial; + py_serial = PyInt_FromLong(object->serial); + return py_serial; +} + +static int py_dns_soa_record_set_serial(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->serial = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_soa_record_get_refresh(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_refresh; + py_refresh = PyInt_FromLong(object->refresh); + return py_refresh; +} + +static int py_dns_soa_record_set_refresh(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->refresh = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_soa_record_get_retry(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_retry; + py_retry = PyInt_FromLong(object->retry); + return py_retry; +} + +static int py_dns_soa_record_set_retry(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->retry = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_soa_record_get_expire(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_expire; + py_expire = PyInt_FromLong(object->expire); + return py_expire; +} + +static int py_dns_soa_record_set_expire(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->expire = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_soa_record_get_minimum(PyObject *obj, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(obj); + PyObject *py_minimum; + py_minimum = PyInt_FromLong(object->minimum); + return py_minimum; +} + +static int py_dns_soa_record_set_minimum(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_soa_record *object = (struct dns_soa_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->minimum = PyInt_AsLong(value); + return 0; +} + +static PyGetSetDef py_dns_soa_record_getsetters[] = { + { discard_const_p(char, "mname"), py_dns_soa_record_get_mname, py_dns_soa_record_set_mname }, + { discard_const_p(char, "rname"), py_dns_soa_record_get_rname, py_dns_soa_record_set_rname }, + { discard_const_p(char, "serial"), py_dns_soa_record_get_serial, py_dns_soa_record_set_serial }, + { discard_const_p(char, "refresh"), py_dns_soa_record_get_refresh, py_dns_soa_record_set_refresh }, + { discard_const_p(char, "retry"), py_dns_soa_record_get_retry, py_dns_soa_record_set_retry }, + { discard_const_p(char, "expire"), py_dns_soa_record_get_expire, py_dns_soa_record_set_expire }, + { discard_const_p(char, "minimum"), py_dns_soa_record_get_minimum, py_dns_soa_record_set_minimum }, + { NULL } +}; + +static PyObject *py_dns_soa_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_soa_record, type); +} + + +static PyTypeObject dns_soa_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.soa_record", + .tp_getset = py_dns_soa_record_getsetters, + .tp_methods = NULL, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_soa_record_new, +}; + + +static PyObject *py_dns_mx_record_get_preference(PyObject *obj, void *closure) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(obj); + PyObject *py_preference; + py_preference = PyInt_FromLong(object->preference); + return py_preference; +} + +static int py_dns_mx_record_set_preference(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->preference = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_mx_record_get_exchange(PyObject *obj, void *closure) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(obj); + PyObject *py_exchange; + py_exchange = PyString_FromStringOrNULL(object->exchange); + return py_exchange; +} + +static int py_dns_mx_record_set_exchange(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(py_obj); + object->exchange = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyGetSetDef py_dns_mx_record_getsetters[] = { + { discard_const_p(char, "preference"), py_dns_mx_record_get_preference, py_dns_mx_record_set_preference }, + { discard_const_p(char, "exchange"), py_dns_mx_record_get_exchange, py_dns_mx_record_set_exchange }, + { NULL } +}; + +static PyObject *py_dns_mx_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_mx_record, type); +} + +static PyObject *py_dns_mx_record_ndr_pack(PyObject *py_obj) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_mx_record); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_mx_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_mx_record); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_mx_record); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_mx_record_ndr_print(PyObject *py_obj) +{ + struct dns_mx_record *object = (struct dns_mx_record *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_mx_record, "dns_mx_record", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_mx_record_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_mx_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_mx_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_mx_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_mx_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.mx_record", + .tp_getset = py_dns_mx_record_getsetters, + .tp_methods = py_dns_mx_record_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_mx_record_new, +}; + + +static PyObject *py_dns_txt_record_get_length(PyObject *obj, void *closure) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(obj); + PyObject *py_length; + py_length = PyInt_FromLong(object->length); + return py_length; +} + +static int py_dns_txt_record_set_length(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->length = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_txt_record_get_txt(PyObject *obj, void *closure) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(obj); + PyObject *py_txt; + if (object->txt == NULL) { + py_txt = Py_None; + Py_INCREF(py_txt); + } else { + py_txt = PyUnicode_Decode(object->txt, strlen(object->txt), "utf-8", "ignore"); + } + return py_txt; +} + +static int py_dns_txt_record_set_txt(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(py_obj); + if (PyUnicode_Check(value)) { + object->txt = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore")); + } else if (PyString_Check(value)) { + object->txt = PyString_AS_STRING(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name); + return -1; + } + return 0; +} + +static PyGetSetDef py_dns_txt_record_getsetters[] = { + { discard_const_p(char, "length"), py_dns_txt_record_get_length, py_dns_txt_record_set_length }, + { discard_const_p(char, "txt"), py_dns_txt_record_get_txt, py_dns_txt_record_set_txt }, + { NULL } +}; + +static PyObject *py_dns_txt_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_txt_record, type); +} + +static PyObject *py_dns_txt_record_ndr_pack(PyObject *py_obj) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_txt_record); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_txt_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_txt_record); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_txt_record); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_txt_record_ndr_print(PyObject *py_obj) +{ + struct dns_txt_record *object = (struct dns_txt_record *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_txt_record, "dns_txt_record", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_txt_record_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_txt_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_txt_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_txt_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_txt_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.txt_record", + .tp_getset = py_dns_txt_record_getsetters, + .tp_methods = py_dns_txt_record_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_txt_record_new, +}; + + +static PyObject *py_dns_srv_record_get_priority(PyObject *obj, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(obj); + PyObject *py_priority; + py_priority = PyInt_FromLong(object->priority); + return py_priority; +} + +static int py_dns_srv_record_set_priority(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->priority = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_srv_record_get_weight(PyObject *obj, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(obj); + PyObject *py_weight; + py_weight = PyInt_FromLong(object->weight); + return py_weight; +} + +static int py_dns_srv_record_set_weight(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->weight = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_srv_record_get_port(PyObject *obj, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(obj); + PyObject *py_port; + py_port = PyInt_FromLong(object->port); + return py_port; +} + +static int py_dns_srv_record_set_port(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->port = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_srv_record_get_target(PyObject *obj, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(obj); + PyObject *py_target; + py_target = PyString_FromStringOrNULL(object->target); + return py_target; +} + +static int py_dns_srv_record_set_target(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + object->target = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyGetSetDef py_dns_srv_record_getsetters[] = { + { discard_const_p(char, "priority"), py_dns_srv_record_get_priority, py_dns_srv_record_set_priority }, + { discard_const_p(char, "weight"), py_dns_srv_record_get_weight, py_dns_srv_record_set_weight }, + { discard_const_p(char, "port"), py_dns_srv_record_get_port, py_dns_srv_record_set_port }, + { discard_const_p(char, "target"), py_dns_srv_record_get_target, py_dns_srv_record_set_target }, + { NULL } +}; + +static PyObject *py_dns_srv_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_srv_record, type); +} + +static PyObject *py_dns_srv_record_ndr_pack(PyObject *py_obj) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_srv_record); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_srv_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_srv_record); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_srv_record); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_srv_record_ndr_print(PyObject *py_obj) +{ + struct dns_srv_record *object = (struct dns_srv_record *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_srv_record, "dns_srv_record", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_srv_record_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_srv_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_srv_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_srv_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_srv_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.srv_record", + .tp_getset = py_dns_srv_record_getsetters, + .tp_methods = py_dns_srv_record_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_srv_record_new, +}; + + +static PyObject *py_dns_tkey_record_get_algorithm(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_algorithm; + py_algorithm = PyString_FromStringOrNULL(object->algorithm); + return py_algorithm; +} + +static int py_dns_tkey_record_set_algorithm(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + object->algorithm = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_tkey_record_get_inception(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_inception; + py_inception = PyInt_FromLong(object->inception); + return py_inception; +} + +static int py_dns_tkey_record_set_inception(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->inception = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tkey_record_get_expiration(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_expiration; + py_expiration = PyInt_FromLong(object->expiration); + return py_expiration; +} + +static int py_dns_tkey_record_set_expiration(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->expiration = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tkey_record_get_mode(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_mode; + py_mode = PyInt_FromLong(object->mode); + return py_mode; +} + +static int py_dns_tkey_record_set_mode(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->mode = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->mode = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_tkey_record_get_error(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_error; + py_error = PyInt_FromLong(object->error); + return py_error; +} + +static int py_dns_tkey_record_set_error(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->error = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tkey_record_get_key_size(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_key_size; + py_key_size = PyInt_FromLong(object->key_size); + return py_key_size; +} + +static int py_dns_tkey_record_set_key_size(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->key_size = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tkey_record_get_key_data(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_key_data; + py_key_data = PyList_New(object->key_size); + if (py_key_data == NULL) { + return NULL; + } + { + int key_data_cntr_0; + for (key_data_cntr_0 = 0; key_data_cntr_0 < object->key_size; key_data_cntr_0++) { + PyObject *py_key_data_0; + py_key_data_0 = PyInt_FromLong(object->key_data[key_data_cntr_0]); + PyList_SetItem(py_key_data, key_data_cntr_0, py_key_data_0); + } + } + return py_key_data; +} + +static int py_dns_tkey_record_set_key_data(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int key_data_cntr_0; + object->key_data = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->key_data, PyList_GET_SIZE(value)); + if (!object->key_data) { return -1;; } + talloc_set_name_const(object->key_data, "ARRAY: object->key_data"); + for (key_data_cntr_0 = 0; key_data_cntr_0 < PyList_GET_SIZE(value); key_data_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, key_data_cntr_0), return -1;); + object->key_data[key_data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, key_data_cntr_0)); + } + } + return 0; +} + +static PyObject *py_dns_tkey_record_get_other_size(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_other_size; + py_other_size = PyInt_FromLong(object->other_size); + return py_other_size; +} + +static int py_dns_tkey_record_set_other_size(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->other_size = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tkey_record_get_other_data(PyObject *obj, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(obj); + PyObject *py_other_data; + py_other_data = PyList_New(object->other_size); + if (py_other_data == NULL) { + return NULL; + } + { + int other_data_cntr_0; + for (other_data_cntr_0 = 0; other_data_cntr_0 < object->other_size; other_data_cntr_0++) { + PyObject *py_other_data_0; + py_other_data_0 = PyInt_FromLong(object->other_data[other_data_cntr_0]); + PyList_SetItem(py_other_data, other_data_cntr_0, py_other_data_0); + } + } + return py_other_data; +} + +static int py_dns_tkey_record_set_other_data(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int other_data_cntr_0; + object->other_data = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->other_data, PyList_GET_SIZE(value)); + if (!object->other_data) { return -1;; } + talloc_set_name_const(object->other_data, "ARRAY: object->other_data"); + for (other_data_cntr_0 = 0; other_data_cntr_0 < PyList_GET_SIZE(value); other_data_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, other_data_cntr_0), return -1;); + object->other_data[other_data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, other_data_cntr_0)); + } + } + return 0; +} + +static PyGetSetDef py_dns_tkey_record_getsetters[] = { + { discard_const_p(char, "algorithm"), py_dns_tkey_record_get_algorithm, py_dns_tkey_record_set_algorithm }, + { discard_const_p(char, "inception"), py_dns_tkey_record_get_inception, py_dns_tkey_record_set_inception }, + { discard_const_p(char, "expiration"), py_dns_tkey_record_get_expiration, py_dns_tkey_record_set_expiration }, + { discard_const_p(char, "mode"), py_dns_tkey_record_get_mode, py_dns_tkey_record_set_mode }, + { discard_const_p(char, "error"), py_dns_tkey_record_get_error, py_dns_tkey_record_set_error }, + { discard_const_p(char, "key_size"), py_dns_tkey_record_get_key_size, py_dns_tkey_record_set_key_size }, + { discard_const_p(char, "key_data"), py_dns_tkey_record_get_key_data, py_dns_tkey_record_set_key_data }, + { discard_const_p(char, "other_size"), py_dns_tkey_record_get_other_size, py_dns_tkey_record_set_other_size }, + { discard_const_p(char, "other_data"), py_dns_tkey_record_get_other_data, py_dns_tkey_record_set_other_data }, + { NULL } +}; + +static PyObject *py_dns_tkey_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_tkey_record, type); +} + +static PyObject *py_dns_tkey_record_ndr_pack(PyObject *py_obj) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_tkey_record); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_tkey_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_tkey_record); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_tkey_record); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_tkey_record_ndr_print(PyObject *py_obj) +{ + struct dns_tkey_record *object = (struct dns_tkey_record *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_tkey_record, "dns_tkey_record", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_tkey_record_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_tkey_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_tkey_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_tkey_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_tkey_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.tkey_record", + .tp_getset = py_dns_tkey_record_getsetters, + .tp_methods = py_dns_tkey_record_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_tkey_record_new, +}; + + +static PyObject *py_dns_tsig_record_get_algorithm_name(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_algorithm_name; + py_algorithm_name = PyString_FromStringOrNULL(object->algorithm_name); + return py_algorithm_name; +} + +static int py_dns_tsig_record_set_algorithm_name(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + object->algorithm_name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_tsig_record_get_time_prefix(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_time_prefix; + py_time_prefix = PyInt_FromLong(object->time_prefix); + return py_time_prefix; +} + +static int py_dns_tsig_record_set_time_prefix(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->time_prefix = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_time(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_time; + py_time = PyInt_FromLong(object->time); + return py_time; +} + +static int py_dns_tsig_record_set_time(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->time = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_fudge(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_fudge; + py_fudge = PyInt_FromLong(object->fudge); + return py_fudge; +} + +static int py_dns_tsig_record_set_fudge(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->fudge = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_mac_size(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_mac_size; + py_mac_size = PyInt_FromLong(object->mac_size); + return py_mac_size; +} + +static int py_dns_tsig_record_set_mac_size(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->mac_size = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_mac(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_mac; + py_mac = PyList_New(object->mac_size); + if (py_mac == NULL) { + return NULL; + } + { + int mac_cntr_0; + for (mac_cntr_0 = 0; mac_cntr_0 < object->mac_size; mac_cntr_0++) { + PyObject *py_mac_0; + py_mac_0 = PyInt_FromLong(object->mac[mac_cntr_0]); + PyList_SetItem(py_mac, mac_cntr_0, py_mac_0); + } + } + return py_mac; +} + +static int py_dns_tsig_record_set_mac(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int mac_cntr_0; + object->mac = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->mac, PyList_GET_SIZE(value)); + if (!object->mac) { return -1;; } + talloc_set_name_const(object->mac, "ARRAY: object->mac"); + for (mac_cntr_0 = 0; mac_cntr_0 < PyList_GET_SIZE(value); mac_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, mac_cntr_0), return -1;); + object->mac[mac_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, mac_cntr_0)); + } + } + return 0; +} + +static PyObject *py_dns_tsig_record_get_original_id(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_original_id; + py_original_id = PyInt_FromLong(object->original_id); + return py_original_id; +} + +static int py_dns_tsig_record_set_original_id(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->original_id = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_error(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_error; + py_error = PyInt_FromLong(object->error); + return py_error; +} + +static int py_dns_tsig_record_set_error(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->error = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_other_size(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_other_size; + py_other_size = PyInt_FromLong(object->other_size); + return py_other_size; +} + +static int py_dns_tsig_record_set_other_size(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->other_size = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_tsig_record_get_other_data(PyObject *obj, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(obj); + PyObject *py_other_data; + py_other_data = PyList_New(object->other_size); + if (py_other_data == NULL) { + return NULL; + } + { + int other_data_cntr_0; + for (other_data_cntr_0 = 0; other_data_cntr_0 < object->other_size; other_data_cntr_0++) { + PyObject *py_other_data_0; + py_other_data_0 = PyInt_FromLong(object->other_data[other_data_cntr_0]); + PyList_SetItem(py_other_data, other_data_cntr_0, py_other_data_0); + } + } + return py_other_data; +} + +static int py_dns_tsig_record_set_other_data(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int other_data_cntr_0; + object->other_data = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->other_data, PyList_GET_SIZE(value)); + if (!object->other_data) { return -1;; } + talloc_set_name_const(object->other_data, "ARRAY: object->other_data"); + for (other_data_cntr_0 = 0; other_data_cntr_0 < PyList_GET_SIZE(value); other_data_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, other_data_cntr_0), return -1;); + object->other_data[other_data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, other_data_cntr_0)); + } + } + return 0; +} + +static PyGetSetDef py_dns_tsig_record_getsetters[] = { + { discard_const_p(char, "algorithm_name"), py_dns_tsig_record_get_algorithm_name, py_dns_tsig_record_set_algorithm_name }, + { discard_const_p(char, "time_prefix"), py_dns_tsig_record_get_time_prefix, py_dns_tsig_record_set_time_prefix }, + { discard_const_p(char, "time"), py_dns_tsig_record_get_time, py_dns_tsig_record_set_time }, + { discard_const_p(char, "fudge"), py_dns_tsig_record_get_fudge, py_dns_tsig_record_set_fudge }, + { discard_const_p(char, "mac_size"), py_dns_tsig_record_get_mac_size, py_dns_tsig_record_set_mac_size }, + { discard_const_p(char, "mac"), py_dns_tsig_record_get_mac, py_dns_tsig_record_set_mac }, + { discard_const_p(char, "original_id"), py_dns_tsig_record_get_original_id, py_dns_tsig_record_set_original_id }, + { discard_const_p(char, "error"), py_dns_tsig_record_get_error, py_dns_tsig_record_set_error }, + { discard_const_p(char, "other_size"), py_dns_tsig_record_get_other_size, py_dns_tsig_record_set_other_size }, + { discard_const_p(char, "other_data"), py_dns_tsig_record_get_other_data, py_dns_tsig_record_set_other_data }, + { NULL } +}; + +static PyObject *py_dns_tsig_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_tsig_record, type); +} + +static PyObject *py_dns_tsig_record_ndr_pack(PyObject *py_obj) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_tsig_record); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_tsig_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_tsig_record); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_tsig_record); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_tsig_record_ndr_print(PyObject *py_obj) +{ + struct dns_tsig_record *object = (struct dns_tsig_record *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_tsig_record, "dns_tsig_record", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_tsig_record_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_tsig_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_tsig_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_tsig_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_tsig_record_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.tsig_record", + .tp_getset = py_dns_tsig_record_getsetters, + .tp_methods = py_dns_tsig_record_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_tsig_record_new, +}; + + +static PyObject *py_dns_fake_tsig_rec_get_name(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_name; + py_name = PyString_FromStringOrNULL(object->name); + return py_name; +} + +static int py_dns_fake_tsig_rec_set_name(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + object->name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_rr_class(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_rr_class; + py_rr_class = PyInt_FromLong(object->rr_class); + return py_rr_class; +} + +static int py_dns_fake_tsig_rec_set_rr_class(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->rr_class = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->rr_class = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_ttl(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_ttl; + py_ttl = PyInt_FromLong(object->ttl); + return py_ttl; +} + +static int py_dns_fake_tsig_rec_set_ttl(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->ttl = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_algorithm_name(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_algorithm_name; + py_algorithm_name = PyString_FromStringOrNULL(object->algorithm_name); + return py_algorithm_name; +} + +static int py_dns_fake_tsig_rec_set_algorithm_name(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + object->algorithm_name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_time_prefix(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_time_prefix; + py_time_prefix = PyInt_FromLong(object->time_prefix); + return py_time_prefix; +} + +static int py_dns_fake_tsig_rec_set_time_prefix(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->time_prefix = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_time(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_time; + py_time = PyInt_FromLong(object->time); + return py_time; +} + +static int py_dns_fake_tsig_rec_set_time(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->time = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_fudge(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_fudge; + py_fudge = PyInt_FromLong(object->fudge); + return py_fudge; +} + +static int py_dns_fake_tsig_rec_set_fudge(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->fudge = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_original_id(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_original_id; + py_original_id = PyInt_FromLong(object->original_id); + return py_original_id; +} + +static int py_dns_fake_tsig_rec_set_original_id(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->original_id = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_error(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_error; + py_error = PyInt_FromLong(object->error); + return py_error; +} + +static int py_dns_fake_tsig_rec_set_error(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->error = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_other_size(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_other_size; + py_other_size = PyInt_FromLong(object->other_size); + return py_other_size; +} + +static int py_dns_fake_tsig_rec_set_other_size(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->other_size = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_fake_tsig_rec_get_other_data(PyObject *obj, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(obj); + PyObject *py_other_data; + py_other_data = PyList_New(object->other_size); + if (py_other_data == NULL) { + return NULL; + } + { + int other_data_cntr_0; + for (other_data_cntr_0 = 0; other_data_cntr_0 < object->other_size; other_data_cntr_0++) { + PyObject *py_other_data_0; + py_other_data_0 = PyInt_FromLong(object->other_data[other_data_cntr_0]); + PyList_SetItem(py_other_data, other_data_cntr_0, py_other_data_0); + } + } + return py_other_data; +} + +static int py_dns_fake_tsig_rec_set_other_data(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int other_data_cntr_0; + object->other_data = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->other_data, PyList_GET_SIZE(value)); + if (!object->other_data) { return -1;; } + talloc_set_name_const(object->other_data, "ARRAY: object->other_data"); + for (other_data_cntr_0 = 0; other_data_cntr_0 < PyList_GET_SIZE(value); other_data_cntr_0++) { + PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, other_data_cntr_0), return -1;); + object->other_data[other_data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, other_data_cntr_0)); + } + } + return 0; +} + +static PyGetSetDef py_dns_fake_tsig_rec_getsetters[] = { + { discard_const_p(char, "name"), py_dns_fake_tsig_rec_get_name, py_dns_fake_tsig_rec_set_name }, + { discard_const_p(char, "rr_class"), py_dns_fake_tsig_rec_get_rr_class, py_dns_fake_tsig_rec_set_rr_class }, + { discard_const_p(char, "ttl"), py_dns_fake_tsig_rec_get_ttl, py_dns_fake_tsig_rec_set_ttl }, + { discard_const_p(char, "algorithm_name"), py_dns_fake_tsig_rec_get_algorithm_name, py_dns_fake_tsig_rec_set_algorithm_name }, + { discard_const_p(char, "time_prefix"), py_dns_fake_tsig_rec_get_time_prefix, py_dns_fake_tsig_rec_set_time_prefix }, + { discard_const_p(char, "time"), py_dns_fake_tsig_rec_get_time, py_dns_fake_tsig_rec_set_time }, + { discard_const_p(char, "fudge"), py_dns_fake_tsig_rec_get_fudge, py_dns_fake_tsig_rec_set_fudge }, + { discard_const_p(char, "original_id"), py_dns_fake_tsig_rec_get_original_id, py_dns_fake_tsig_rec_set_original_id }, + { discard_const_p(char, "error"), py_dns_fake_tsig_rec_get_error, py_dns_fake_tsig_rec_set_error }, + { discard_const_p(char, "other_size"), py_dns_fake_tsig_rec_get_other_size, py_dns_fake_tsig_rec_set_other_size }, + { discard_const_p(char, "other_data"), py_dns_fake_tsig_rec_get_other_data, py_dns_fake_tsig_rec_set_other_data }, + { NULL } +}; + +static PyObject *py_dns_fake_tsig_rec_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_fake_tsig_rec, type); +} + +static PyObject *py_dns_fake_tsig_rec_ndr_pack(PyObject *py_obj) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_fake_tsig_rec); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_fake_tsig_rec_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_fake_tsig_rec); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_fake_tsig_rec); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_fake_tsig_rec_ndr_print(PyObject *py_obj) +{ + struct dns_fake_tsig_rec *object = (struct dns_fake_tsig_rec *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_fake_tsig_rec, "dns_fake_tsig_rec", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_fake_tsig_rec_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_fake_tsig_rec_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_fake_tsig_rec_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_fake_tsig_rec_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_fake_tsig_rec_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.fake_tsig_rec", + .tp_getset = py_dns_fake_tsig_rec_getsetters, + .tp_methods = py_dns_fake_tsig_rec_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_fake_tsig_rec_new, +}; + +PyObject *py_import_dns_rdata(TALLOC_CTX *mem_ctx, int level, union dns_rdata *in) +{ + PyObject *ret; + + switch (level) { + case DNS_QTYPE_A: + ret = PyString_FromStringOrNULL(in->ipv4_record); + return ret; + + case DNS_QTYPE_NS: + ret = PyString_FromStringOrNULL(in->ns_record); + return ret; + + case DNS_QTYPE_CNAME: + ret = PyString_FromStringOrNULL(in->cname_record); + return ret; + + case DNS_QTYPE_SOA: + ret = pytalloc_reference_ex(&dns_soa_record_Type, mem_ctx, &in->soa_record); + return ret; + + case DNS_QTYPE_PTR: + ret = PyString_FromStringOrNULL(in->ptr_record); + return ret; + + case DNS_QTYPE_MX: + ret = pytalloc_reference_ex(&dns_mx_record_Type, mem_ctx, &in->mx_record); + return ret; + + case DNS_QTYPE_TXT: + ret = pytalloc_reference_ex(&dns_txt_record_Type, mem_ctx, &in->txt_record); + return ret; + + case DNS_QTYPE_AAAA: + ret = PyString_FromStringOrNULL(in->ipv6_record); + return ret; + + case DNS_QTYPE_SRV: + ret = pytalloc_reference_ex(&dns_srv_record_Type, mem_ctx, &in->srv_record); + return ret; + + case DNS_QTYPE_TSIG: + ret = pytalloc_reference_ex(&dns_tsig_record_Type, mem_ctx, &in->tsig_record); + return ret; + + case DNS_QTYPE_TKEY: + ret = pytalloc_reference_ex(&dns_tkey_record_Type, mem_ctx, &in->tkey_record); + return ret; + + default: + ret = Py_None; + Py_INCREF(ret); + return ret; + + } + PyErr_SetString(PyExc_TypeError, "unknown union level"); + return NULL; +} + +union dns_rdata *py_export_dns_rdata(TALLOC_CTX *mem_ctx, int level, PyObject *in) +{ + union dns_rdata *ret = talloc_zero(mem_ctx, union dns_rdata); + switch (level) { + case DNS_QTYPE_A: + ret->ipv4_record = PyString_AS_STRING(in); + break; + + case DNS_QTYPE_NS: + ret->ns_record = talloc_strdup(mem_ctx, PyString_AS_STRING(in)); + break; + + case DNS_QTYPE_CNAME: + ret->cname_record = talloc_strdup(mem_ctx, PyString_AS_STRING(in)); + break; + + case DNS_QTYPE_SOA: + PY_CHECK_TYPE(&dns_soa_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->soa_record = *(struct dns_soa_record *)pytalloc_get_ptr(in); + break; + + case DNS_QTYPE_PTR: + ret->ptr_record = talloc_strdup(mem_ctx, PyString_AS_STRING(in)); + break; + + case DNS_QTYPE_MX: + PY_CHECK_TYPE(&dns_mx_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->mx_record = *(struct dns_mx_record *)pytalloc_get_ptr(in); + break; + + case DNS_QTYPE_TXT: + PY_CHECK_TYPE(&dns_txt_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->txt_record = *(struct dns_txt_record *)pytalloc_get_ptr(in); + break; + + case DNS_QTYPE_AAAA: + ret->ipv6_record = PyString_AsString(in); + break; + + case DNS_QTYPE_SRV: + PY_CHECK_TYPE(&dns_srv_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->srv_record = *(struct dns_srv_record *)pytalloc_get_ptr(in); + break; + + case DNS_QTYPE_TSIG: + PY_CHECK_TYPE(&dns_tsig_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->tsig_record = *(struct dns_tsig_record *)pytalloc_get_ptr(in); + break; + + case DNS_QTYPE_TKEY: + PY_CHECK_TYPE(&dns_tkey_record_Type, in, talloc_free(ret); return NULL;); + if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) { + PyErr_NoMemory(); + talloc_free(ret); return NULL; + } + ret->tkey_record = *(struct dns_tkey_record *)pytalloc_get_ptr(in); + break; + + default: + break; + + } + + return ret; +} + + +static PyObject *py_dns_res_rec_get_name(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_name; + py_name = PyString_FromStringOrNULL(object->name); + return py_name; +} + +static int py_dns_res_rec_set_name(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + object->name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value)); + return 0; +} + +static PyObject *py_dns_res_rec_get_rr_type(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_rr_type; + py_rr_type = PyInt_FromLong(object->rr_type); + return py_rr_type; +} + +static int py_dns_res_rec_set_rr_type(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->rr_type = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->rr_type = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_res_rec_get_rr_class(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_rr_class; + py_rr_class = PyInt_FromLong(object->rr_class); + return py_rr_class; +} + +static int py_dns_res_rec_set_rr_class(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->rr_class = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->rr_class = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_res_rec_get_ttl(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_ttl; + py_ttl = PyInt_FromLong(object->ttl); + return py_ttl; +} + +static int py_dns_res_rec_set_ttl(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->ttl = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_res_rec_get_length(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_length; + py_length = PyInt_FromLong(object->length); + return py_length; +} + +static int py_dns_res_rec_set_length(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->length = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_res_rec_get_rdata(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_rdata; + py_rdata = py_import_dns_rdata(pytalloc_get_mem_ctx(obj), object->rr_type, &object->rdata); + if (py_rdata == NULL) { + return NULL; + } + return py_rdata; +} + +static int py_dns_res_rec_set_rdata(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + { + union dns_rdata *rdata_switch_0; + rdata_switch_0 = py_export_dns_rdata(pytalloc_get_mem_ctx(py_obj), object->rr_type, value); + if (rdata_switch_0 == NULL) { + return -1; + } + object->rdata = *rdata_switch_0; + } + return 0; +} + +static PyObject *py_dns_res_rec_get_unexpected(PyObject *obj, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(obj); + PyObject *py_unexpected; + py_unexpected = PyString_FromStringAndSize((char *)(object->unexpected).data, (object->unexpected).length); + return py_unexpected; +} + +static int py_dns_res_rec_set_unexpected(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_res_rec *object = (struct dns_res_rec *)pytalloc_get_ptr(py_obj); + object->unexpected = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value)); + return 0; +} + +static PyGetSetDef py_dns_res_rec_getsetters[] = { + { discard_const_p(char, "name"), py_dns_res_rec_get_name, py_dns_res_rec_set_name }, + { discard_const_p(char, "rr_type"), py_dns_res_rec_get_rr_type, py_dns_res_rec_set_rr_type }, + { discard_const_p(char, "rr_class"), py_dns_res_rec_get_rr_class, py_dns_res_rec_set_rr_class }, + { discard_const_p(char, "ttl"), py_dns_res_rec_get_ttl, py_dns_res_rec_set_ttl }, + { discard_const_p(char, "length"), py_dns_res_rec_get_length, py_dns_res_rec_set_length }, + { discard_const_p(char, "rdata"), py_dns_res_rec_get_rdata, py_dns_res_rec_set_rdata }, + { discard_const_p(char, "unexpected"), py_dns_res_rec_get_unexpected, py_dns_res_rec_set_unexpected }, + { NULL } +}; + +static PyObject *py_dns_res_rec_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_res_rec, type); +} + + +static PyTypeObject dns_res_rec_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.res_rec", + .tp_getset = py_dns_res_rec_getsetters, + .tp_methods = NULL, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_res_rec_new, +}; + + +static PyObject *py_dns_name_packet_get_id(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_id; + py_id = PyInt_FromLong(object->id); + return py_id; +} + +static int py_dns_name_packet_set_id(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->id = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_name_packet_get_operation(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_operation; + py_operation = PyInt_FromLong(object->operation); + return py_operation; +} + +static int py_dns_name_packet_set_operation(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + if (PyLong_Check(value)) { + object->operation = PyLong_AsLongLong(value); + } else if (PyInt_Check(value)) { + object->operation = PyInt_AsLong(value); + } else { + PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\ + PyInt_Type.tp_name, PyLong_Type.tp_name); + return -1; + } + return 0; +} + +static PyObject *py_dns_name_packet_get_qdcount(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_qdcount; + py_qdcount = PyInt_FromLong(object->qdcount); + return py_qdcount; +} + +static int py_dns_name_packet_set_qdcount(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->qdcount = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_name_packet_get_ancount(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_ancount; + py_ancount = PyInt_FromLong(object->ancount); + return py_ancount; +} + +static int py_dns_name_packet_set_ancount(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->ancount = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_name_packet_get_nscount(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_nscount; + py_nscount = PyInt_FromLong(object->nscount); + return py_nscount; +} + +static int py_dns_name_packet_set_nscount(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->nscount = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_name_packet_get_arcount(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_arcount; + py_arcount = PyInt_FromLong(object->arcount); + return py_arcount; +} + +static int py_dns_name_packet_set_arcount(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyInt_Type, value, return -1;); + object->arcount = PyInt_AsLong(value); + return 0; +} + +static PyObject *py_dns_name_packet_get_questions(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_questions; + py_questions = PyList_New(object->qdcount); + if (py_questions == NULL) { + return NULL; + } + { + int questions_cntr_0; + for (questions_cntr_0 = 0; questions_cntr_0 < object->qdcount; questions_cntr_0++) { + PyObject *py_questions_0; + py_questions_0 = pytalloc_reference_ex(&dns_name_question_Type, object->questions, &object->questions[questions_cntr_0]); + PyList_SetItem(py_questions, questions_cntr_0, py_questions_0); + } + } + return py_questions; +} + +static int py_dns_name_packet_set_questions(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int questions_cntr_0; + object->questions = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->questions, PyList_GET_SIZE(value)); + if (!object->questions) { return -1;; } + talloc_set_name_const(object->questions, "ARRAY: object->questions"); + for (questions_cntr_0 = 0; questions_cntr_0 < PyList_GET_SIZE(value); questions_cntr_0++) { + PY_CHECK_TYPE(&dns_name_question_Type, PyList_GET_ITEM(value, questions_cntr_0), return -1;); + if (talloc_reference(object->questions, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, questions_cntr_0))) == NULL) { + PyErr_NoMemory(); + return -1; + } + object->questions[questions_cntr_0] = *(struct dns_name_question *)pytalloc_get_ptr(PyList_GET_ITEM(value, questions_cntr_0)); + } + } + return 0; +} + +static PyObject *py_dns_name_packet_get_answers(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_answers; + py_answers = PyList_New(object->ancount); + if (py_answers == NULL) { + return NULL; + } + { + int answers_cntr_0; + for (answers_cntr_0 = 0; answers_cntr_0 < object->ancount; answers_cntr_0++) { + PyObject *py_answers_0; + py_answers_0 = pytalloc_reference_ex(&dns_res_rec_Type, object->answers, &object->answers[answers_cntr_0]); + PyList_SetItem(py_answers, answers_cntr_0, py_answers_0); + } + } + return py_answers; +} + +static int py_dns_name_packet_set_answers(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int answers_cntr_0; + object->answers = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->answers, PyList_GET_SIZE(value)); + if (!object->answers) { return -1;; } + talloc_set_name_const(object->answers, "ARRAY: object->answers"); + for (answers_cntr_0 = 0; answers_cntr_0 < PyList_GET_SIZE(value); answers_cntr_0++) { + PY_CHECK_TYPE(&dns_res_rec_Type, PyList_GET_ITEM(value, answers_cntr_0), return -1;); + if (talloc_reference(object->answers, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, answers_cntr_0))) == NULL) { + PyErr_NoMemory(); + return -1; + } + object->answers[answers_cntr_0] = *(struct dns_res_rec *)pytalloc_get_ptr(PyList_GET_ITEM(value, answers_cntr_0)); + } + } + return 0; +} + +static PyObject *py_dns_name_packet_get_nsrecs(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_nsrecs; + py_nsrecs = PyList_New(object->nscount); + if (py_nsrecs == NULL) { + return NULL; + } + { + int nsrecs_cntr_0; + for (nsrecs_cntr_0 = 0; nsrecs_cntr_0 < object->nscount; nsrecs_cntr_0++) { + PyObject *py_nsrecs_0; + py_nsrecs_0 = pytalloc_reference_ex(&dns_res_rec_Type, object->nsrecs, &object->nsrecs[nsrecs_cntr_0]); + PyList_SetItem(py_nsrecs, nsrecs_cntr_0, py_nsrecs_0); + } + } + return py_nsrecs; +} + +static int py_dns_name_packet_set_nsrecs(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int nsrecs_cntr_0; + object->nsrecs = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->nsrecs, PyList_GET_SIZE(value)); + if (!object->nsrecs) { return -1;; } + talloc_set_name_const(object->nsrecs, "ARRAY: object->nsrecs"); + for (nsrecs_cntr_0 = 0; nsrecs_cntr_0 < PyList_GET_SIZE(value); nsrecs_cntr_0++) { + PY_CHECK_TYPE(&dns_res_rec_Type, PyList_GET_ITEM(value, nsrecs_cntr_0), return -1;); + if (talloc_reference(object->nsrecs, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, nsrecs_cntr_0))) == NULL) { + PyErr_NoMemory(); + return -1; + } + object->nsrecs[nsrecs_cntr_0] = *(struct dns_res_rec *)pytalloc_get_ptr(PyList_GET_ITEM(value, nsrecs_cntr_0)); + } + } + return 0; +} + +static PyObject *py_dns_name_packet_get_additional(PyObject *obj, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(obj); + PyObject *py_additional; + py_additional = PyList_New(object->arcount); + if (py_additional == NULL) { + return NULL; + } + { + int additional_cntr_0; + for (additional_cntr_0 = 0; additional_cntr_0 < object->arcount; additional_cntr_0++) { + PyObject *py_additional_0; + py_additional_0 = pytalloc_reference_ex(&dns_res_rec_Type, object->additional, &object->additional[additional_cntr_0]); + PyList_SetItem(py_additional, additional_cntr_0, py_additional_0); + } + } + return py_additional; +} + +static int py_dns_name_packet_set_additional(PyObject *py_obj, PyObject *value, void *closure) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PY_CHECK_TYPE(&PyList_Type, value, return -1;); + { + int additional_cntr_0; + object->additional = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->additional, PyList_GET_SIZE(value)); + if (!object->additional) { return -1;; } + talloc_set_name_const(object->additional, "ARRAY: object->additional"); + for (additional_cntr_0 = 0; additional_cntr_0 < PyList_GET_SIZE(value); additional_cntr_0++) { + PY_CHECK_TYPE(&dns_res_rec_Type, PyList_GET_ITEM(value, additional_cntr_0), return -1;); + if (talloc_reference(object->additional, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, additional_cntr_0))) == NULL) { + PyErr_NoMemory(); + return -1; + } + object->additional[additional_cntr_0] = *(struct dns_res_rec *)pytalloc_get_ptr(PyList_GET_ITEM(value, additional_cntr_0)); + } + } + return 0; +} + +static PyGetSetDef py_dns_name_packet_getsetters[] = { + { discard_const_p(char, "id"), py_dns_name_packet_get_id, py_dns_name_packet_set_id }, + { discard_const_p(char, "operation"), py_dns_name_packet_get_operation, py_dns_name_packet_set_operation }, + { discard_const_p(char, "qdcount"), py_dns_name_packet_get_qdcount, py_dns_name_packet_set_qdcount }, + { discard_const_p(char, "ancount"), py_dns_name_packet_get_ancount, py_dns_name_packet_set_ancount }, + { discard_const_p(char, "nscount"), py_dns_name_packet_get_nscount, py_dns_name_packet_set_nscount }, + { discard_const_p(char, "arcount"), py_dns_name_packet_get_arcount, py_dns_name_packet_set_arcount }, + { discard_const_p(char, "questions"), py_dns_name_packet_get_questions, py_dns_name_packet_set_questions }, + { discard_const_p(char, "answers"), py_dns_name_packet_get_answers, py_dns_name_packet_set_answers }, + { discard_const_p(char, "nsrecs"), py_dns_name_packet_get_nsrecs, py_dns_name_packet_set_nsrecs }, + { discard_const_p(char, "additional"), py_dns_name_packet_get_additional, py_dns_name_packet_set_additional }, + { NULL } +}; + +static PyObject *py_dns_name_packet_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return pytalloc_new(struct dns_name_packet, type); +} + +static PyObject *py_dns_name_packet_ndr_pack(PyObject *py_obj) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + enum ndr_err_code err; + err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_dns_name_packet); + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + return PyString_FromStringAndSize((char *)blob.data, blob.length); +} + +static PyObject *py_dns_name_packet_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + DATA_BLOB blob; + int blob_length = 0; + enum ndr_err_code err; + const char * const kwnames[] = { "data_blob", "allow_remaining", NULL }; + PyObject *allow_remaining_obj = NULL; + bool allow_remaining = false; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__", + discard_const_p(char *, kwnames), + &blob.data, &blob_length, + &allow_remaining_obj)) { + return NULL; + } + blob.length = blob_length; + + if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) { + allow_remaining = true; + } + + if (allow_remaining) { + err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_name_packet); + } else { + err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_dns_name_packet); + } + if (err != NDR_ERR_SUCCESS) { + PyErr_SetNdrError(err); + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject *py_dns_name_packet_ndr_print(PyObject *py_obj) +{ + struct dns_name_packet *object = (struct dns_name_packet *)pytalloc_get_ptr(py_obj); + PyObject *ret; + char *retstr; + + retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_dns_name_packet, "dns_name_packet", object); + ret = PyString_FromString(retstr); + talloc_free(retstr); + + return ret; +} + +static PyMethodDef py_dns_name_packet_methods[] = { + { "__ndr_pack__", (PyCFunction)py_dns_name_packet_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" }, + { "__ndr_unpack__", (PyCFunction)py_dns_name_packet_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" }, + { "__ndr_print__", (PyCFunction)py_dns_name_packet_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" }, + { NULL, NULL, 0, NULL } +}; + + +static PyTypeObject dns_name_packet_Type = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.name_packet", + .tp_getset = py_dns_name_packet_getsetters, + .tp_methods = py_dns_name_packet_methods, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_basicsize = sizeof(pytalloc_Object), + .tp_new = py_dns_name_packet_new, +}; + + +static bool pack_py_decode_dns_name_packet_args_in(PyObject *args, PyObject *kwargs, struct decode_dns_name_packet *r) +{ + PyObject *py_packet; + const char *kwnames[] = { + "packet", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:decode_dns_name_packet", discard_const_p(char *, kwnames), &py_packet)) { + return false; + } + + PY_CHECK_TYPE(&dns_name_packet_Type, py_packet, return false;); + if (talloc_reference(r, pytalloc_get_mem_ctx(py_packet)) == NULL) { + PyErr_NoMemory(); + return false; + } + r->in.packet = *(struct dns_name_packet *)pytalloc_get_ptr(py_packet); + return true; +} + +static PyObject *unpack_py_decode_dns_name_packet_args_out(struct decode_dns_name_packet *r) +{ + PyObject *result; + result = Py_None; + Py_INCREF(result); + return result; +} + +const struct PyNdrRpcMethodDef py_ndr_dns_methods[] = { + { "decode_dns_name_packet", "S.decode_dns_name_packet(packet) -> None", (py_dcerpc_call_fn)dcerpc_decode_dns_name_packet_r, (py_data_pack_fn)pack_py_decode_dns_name_packet_args_in, (py_data_unpack_fn)unpack_py_decode_dns_name_packet_args_out, 0, &ndr_table_dns }, + { NULL } +}; + +static PyObject *interface_dns_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_dns); +} + +#define PY_DOC_DNS "DNS records" +static PyTypeObject dns_InterfaceType = { + PyObject_HEAD_INIT(NULL) 0, + .tp_name = "dns.dns", + .tp_basicsize = sizeof(dcerpc_InterfaceObject), + .tp_doc = "dns(binding, lp_ctx=None, credentials=None) -> connection\n" +"\n" +"binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n" +"lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n" +"credentials should be a credentials.Credentials object.\n\n"PY_DOC_DNS, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_new = interface_dns_new, +}; + +static PyMethodDef dns_methods[] = { + { NULL, NULL, 0, NULL } +}; + +void initdns(void) +{ + PyObject *m; + PyObject *dep_talloc; + PyObject *dep_samba_dcerpc_misc; + PyObject *dep_samba_dcerpc_base; + + dep_talloc = PyImport_ImportModule("talloc"); + if (dep_talloc == NULL) + return; + + dep_samba_dcerpc_misc = PyImport_ImportModule("samba.dcerpc.misc"); + if (dep_samba_dcerpc_misc == NULL) + return; + + dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base"); + if (dep_samba_dcerpc_base == NULL) + return; + + Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object"); + if (Object_Type == NULL) + return; + + ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection"); + if (ClientConnection_Type == NULL) + return; + + dns_name_question_Type.tp_base = Object_Type; + + dns_rdata_data_Type.tp_base = Object_Type; + + dns_soa_record_Type.tp_base = Object_Type; + + dns_mx_record_Type.tp_base = Object_Type; + + dns_txt_record_Type.tp_base = Object_Type; + + dns_srv_record_Type.tp_base = Object_Type; + + dns_tkey_record_Type.tp_base = Object_Type; + + dns_tsig_record_Type.tp_base = Object_Type; + + dns_fake_tsig_rec_Type.tp_base = Object_Type; + + dns_res_rec_Type.tp_base = Object_Type; + + dns_name_packet_Type.tp_base = Object_Type; + + dns_InterfaceType.tp_base = ClientConnection_Type; + + if (PyType_Ready(&dns_name_question_Type) < 0) + return; + if (PyType_Ready(&dns_rdata_data_Type) < 0) + return; + if (PyType_Ready(&dns_soa_record_Type) < 0) + return; + if (PyType_Ready(&dns_mx_record_Type) < 0) + return; + if (PyType_Ready(&dns_txt_record_Type) < 0) + return; + if (PyType_Ready(&dns_srv_record_Type) < 0) + return; + if (PyType_Ready(&dns_tkey_record_Type) < 0) + return; + if (PyType_Ready(&dns_tsig_record_Type) < 0) + return; + if (PyType_Ready(&dns_fake_tsig_rec_Type) < 0) + return; + if (PyType_Ready(&dns_res_rec_Type) < 0) + return; + if (PyType_Ready(&dns_name_packet_Type) < 0) + return; + if (PyType_Ready(&dns_InterfaceType) < 0) + return; + if (!PyInterface_AddNdrRpcMethods(&dns_InterfaceType, py_ndr_dns_methods)) + return; + +#ifdef PY_NAME_QUESTION_PATCH + PY_NAME_QUESTION_PATCH(&dns_name_question_Type); +#endif +#ifdef PY_RDATA_DATA_PATCH + PY_RDATA_DATA_PATCH(&dns_rdata_data_Type); +#endif +#ifdef PY_SOA_RECORD_PATCH + PY_SOA_RECORD_PATCH(&dns_soa_record_Type); +#endif +#ifdef PY_MX_RECORD_PATCH + PY_MX_RECORD_PATCH(&dns_mx_record_Type); +#endif +#ifdef PY_TXT_RECORD_PATCH + PY_TXT_RECORD_PATCH(&dns_txt_record_Type); +#endif +#ifdef PY_SRV_RECORD_PATCH + PY_SRV_RECORD_PATCH(&dns_srv_record_Type); +#endif +#ifdef PY_TKEY_RECORD_PATCH + PY_TKEY_RECORD_PATCH(&dns_tkey_record_Type); +#endif +#ifdef PY_TSIG_RECORD_PATCH + PY_TSIG_RECORD_PATCH(&dns_tsig_record_Type); +#endif +#ifdef PY_FAKE_TSIG_REC_PATCH + PY_FAKE_TSIG_REC_PATCH(&dns_fake_tsig_rec_Type); +#endif +#ifdef PY_RES_REC_PATCH + PY_RES_REC_PATCH(&dns_res_rec_Type); +#endif +#ifdef PY_NAME_PACKET_PATCH + PY_NAME_PACKET_PATCH(&dns_name_packet_Type); +#endif +#ifdef PY_DNS_PATCH + PY_DNS_PATCH(&dns_InterfaceType); +#endif + + m = Py_InitModule3("dns", dns_methods, "dns DCE/RPC"); + if (m == NULL) + return; + + PyModule_AddObject(m, "DNS_RCODE_FORMERR", PyInt_FromLong(DNS_RCODE_FORMERR)); + PyModule_AddObject(m, "DNS_FLAG_RECURSION_AVAIL", PyInt_FromLong(DNS_FLAG_RECURSION_AVAIL)); + PyModule_AddObject(m, "DNS_OPCODE_UPDATE", PyInt_FromLong(DNS_OPCODE_UPDATE)); + PyModule_AddObject(m, "DNS_QTYPE_MAILB", PyInt_FromLong(DNS_QTYPE_MAILB)); + PyModule_AddObject(m, "DNS_OPCODE", PyInt_FromLong(DNS_OPCODE)); + PyModule_AddObject(m, "DNS_QTYPE_ALL", PyInt_FromLong(DNS_QTYPE_ALL)); + PyModule_AddObject(m, "DNS_QTYPE_TKEY", PyInt_FromLong(DNS_QTYPE_TKEY)); + PyModule_AddObject(m, "DNS_QTYPE_ISDN", PyInt_FromLong(DNS_QTYPE_ISDN)); + PyModule_AddObject(m, "DNS_QTYPE_RP", PyInt_FromLong(DNS_QTYPE_RP)); + PyModule_AddObject(m, "DNS_RCODE_NXDOMAIN", PyInt_FromLong(DNS_RCODE_NXDOMAIN)); + PyModule_AddObject(m, "DNS_RCODE_SERVFAIL", PyInt_FromLong(DNS_RCODE_SERVFAIL)); + PyModule_AddObject(m, "DNS_RCODE_BADKEY", PyInt_FromLong(DNS_RCODE_BADKEY)); + PyModule_AddObject(m, "DNS_OPCODE_REFRESH2", PyInt_FromLong(DNS_OPCODE_REFRESH2)); + PyModule_AddObject(m, "DNS_FLAG_TRUNCATION", PyInt_FromLong(DNS_FLAG_TRUNCATION)); + PyModule_AddObject(m, "DNS_QTYPE_ZERO", PyInt_FromLong(DNS_QTYPE_ZERO)); + PyModule_AddObject(m, "DNS_OPCODE_MULTI_HOME_REG", PyInt_FromLong(DNS_OPCODE_MULTI_HOME_REG)); + PyModule_AddObject(m, "DNS_OPCODE_WACK", PyInt_FromLong(DNS_OPCODE_WACK)); + PyModule_AddObject(m, "DNS_QTYPE_NETBIOS", PyInt_FromLong(DNS_QTYPE_NETBIOS)); + PyModule_AddObject(m, "DNS_TKEY_MODE_LAST", PyInt_FromLong(DNS_TKEY_MODE_LAST)); + PyModule_AddObject(m, "DNS_QTYPE_CNAME", PyInt_FromLong(DNS_QTYPE_CNAME)); + PyModule_AddObject(m, "DNS_QCLASS_ANY", PyInt_FromLong(DNS_QCLASS_ANY)); + PyModule_AddObject(m, "DNS_OPCODE_IQUERY", PyInt_FromLong(DNS_OPCODE_IQUERY)); + PyModule_AddObject(m, "DNS_TKEY_MODE_SERVER", PyInt_FromLong(DNS_TKEY_MODE_SERVER)); + PyModule_AddObject(m, "DNS_QTYPE_NULL", PyInt_FromLong(DNS_QTYPE_NULL)); + PyModule_AddObject(m, "DNS_SERVICE_PORT", PyInt_FromLong(53)); + PyModule_AddObject(m, "DNS_QTYPE_SOA", PyInt_FromLong(DNS_QTYPE_SOA)); + PyModule_AddObject(m, "DNS_QTYPE_TXT", PyInt_FromLong(DNS_QTYPE_TXT)); + PyModule_AddObject(m, "DNS_RCODE_BADTIME", PyInt_FromLong(DNS_RCODE_BADTIME)); + PyModule_AddObject(m, "DNS_RCODE_OK", PyInt_FromLong(DNS_RCODE_OK)); + PyModule_AddObject(m, "DNS_QTYPE_NXT", PyInt_FromLong(DNS_QTYPE_NXT)); + PyModule_AddObject(m, "DNS_RCODE", PyInt_FromLong(DNS_RCODE)); + PyModule_AddObject(m, "DNS_TKEY_MODE_DELETE", PyInt_FromLong(DNS_TKEY_MODE_DELETE)); + PyModule_AddObject(m, "DNS_QTYPE_MINFO", PyInt_FromLong(DNS_QTYPE_MINFO)); + PyModule_AddObject(m, "DNS_RCODE_NOTAUTH", PyInt_FromLong(DNS_RCODE_NOTAUTH)); + PyModule_AddObject(m, "DNS_QTYPE_MG", PyInt_FromLong(DNS_QTYPE_MG)); + PyModule_AddObject(m, "DNS_QTYPE_DNAME", PyInt_FromLong(DNS_QTYPE_DNAME)); + PyModule_AddObject(m, "DNS_QTYPE_WKS", PyInt_FromLong(DNS_QTYPE_WKS)); + PyModule_AddObject(m, "DNS_FLAG_BROADCAST", PyInt_FromLong(DNS_FLAG_BROADCAST)); + PyModule_AddObject(m, "DNS_QTYPE_MR", PyInt_FromLong(DNS_QTYPE_MR)); + PyModule_AddObject(m, "DNS_RCODE_BADMODE", PyInt_FromLong(DNS_RCODE_BADMODE)); + PyModule_AddObject(m, "DNS_QTYPE_NS", PyInt_FromLong(DNS_QTYPE_NS)); + PyModule_AddObject(m, "DNS_QTYPE_MD", PyInt_FromLong(DNS_QTYPE_MD)); + PyModule_AddObject(m, "DNS_TKEY_MODE_CLIENT", PyInt_FromLong(DNS_TKEY_MODE_CLIENT)); + PyModule_AddObject(m, "DNS_TKEY_MODE_DH", PyInt_FromLong(DNS_TKEY_MODE_DH)); + PyModule_AddObject(m, "DNS_OPCODE_QUERY", PyInt_FromLong(DNS_OPCODE_QUERY)); + PyModule_AddObject(m, "DNS_RCODE_BADALG", PyInt_FromLong(DNS_RCODE_BADALG)); + PyModule_AddObject(m, "DNS_QTYPE_DHCID", PyInt_FromLong(DNS_QTYPE_DHCID)); + PyModule_AddObject(m, "DNS_QTYPE_NAPTR", PyInt_FromLong(DNS_QTYPE_NAPTR)); + PyModule_AddObject(m, "DNS_QCLASS_IN", PyInt_FromLong(DNS_QCLASS_IN)); + PyModule_AddObject(m, "DNS_QTYPE_SIG", PyInt_FromLong(DNS_QTYPE_SIG)); + PyModule_AddObject(m, "DNS_QTYPE_PTR", PyInt_FromLong(DNS_QTYPE_PTR)); + PyModule_AddObject(m, "DNS_QTYPE_RT", PyInt_FromLong(DNS_QTYPE_RT)); + PyModule_AddObject(m, "DNS_QTYPE_MB", PyInt_FromLong(DNS_QTYPE_MB)); + PyModule_AddObject(m, "DNS_OPCODE_STATUS", PyInt_FromLong(DNS_OPCODE_STATUS)); + PyModule_AddObject(m, "DNS_QTYPE_RRSIG", PyInt_FromLong(DNS_QTYPE_RRSIG)); + PyModule_AddObject(m, "DNS_RCODE_BADNAME", PyInt_FromLong(DNS_RCODE_BADNAME)); + PyModule_AddObject(m, "DNS_FLAG_REPLY", PyInt_FromLong(DNS_FLAG_REPLY)); + PyModule_AddObject(m, "DNS_RCODE_YXDOMAIN", PyInt_FromLong(DNS_RCODE_YXDOMAIN)); + PyModule_AddObject(m, "DNS_QTYPE_MF", PyInt_FromLong(DNS_QTYPE_MF)); + PyModule_AddObject(m, "DNS_QTYPE_KEY", PyInt_FromLong(DNS_QTYPE_KEY)); + PyModule_AddObject(m, "DNS_RCODE_YXRRSET", PyInt_FromLong(DNS_RCODE_YXRRSET)); + PyModule_AddObject(m, "DNS_QTYPE_ATMA", PyInt_FromLong(DNS_QTYPE_ATMA)); + PyModule_AddObject(m, "DNS_RCODE_NOTIMP", PyInt_FromLong(DNS_RCODE_NOTIMP)); + PyModule_AddObject(m, "DNS_QTYPE_X25", PyInt_FromLong(DNS_QTYPE_X25)); + PyModule_AddObject(m, "DNS_QTYPE_AXFR", PyInt_FromLong(DNS_QTYPE_AXFR)); + PyModule_AddObject(m, "DNS_QTYPE_TSIG", PyInt_FromLong(DNS_QTYPE_TSIG)); + PyModule_AddObject(m, "DNS_QTYPE_AFSDB", PyInt_FromLong(DNS_QTYPE_AFSDB)); + PyModule_AddObject(m, "DNS_QTYPE_LOC", PyInt_FromLong(DNS_QTYPE_LOC)); + PyModule_AddObject(m, "DNS_QTYPE_DNSKEY", PyInt_FromLong(DNS_QTYPE_DNSKEY)); + PyModule_AddObject(m, "DNS_QTYPE_HINFO", PyInt_FromLong(DNS_QTYPE_HINFO)); + PyModule_AddObject(m, "DNS_QTYPE_MAILA", PyInt_FromLong(DNS_QTYPE_MAILA)); + PyModule_AddObject(m, "DNS_FLAG_RECURSION_DESIRED", PyInt_FromLong(DNS_FLAG_RECURSION_DESIRED)); + PyModule_AddObject(m, "DNS_TKEY_MODE_GSSAPI", PyInt_FromLong(DNS_TKEY_MODE_GSSAPI)); + PyModule_AddObject(m, "DNS_QCLASS_NONE", PyInt_FromLong(DNS_QCLASS_NONE)); + PyModule_AddObject(m, "DNS_OPCODE_REFRESH", PyInt_FromLong(DNS_OPCODE_REFRESH)); + PyModule_AddObject(m, "DNS_OPCODE_RELEASE", PyInt_FromLong(DNS_OPCODE_RELEASE)); + PyModule_AddObject(m, "DNS_RCODE_NXRRSET", PyInt_FromLong(DNS_RCODE_NXRRSET)); + PyModule_AddObject(m, "DNS_RCODE_BADSIG", PyInt_FromLong(DNS_RCODE_BADSIG)); + PyModule_AddObject(m, "DNS_QTYPE_A", PyInt_FromLong(DNS_QTYPE_A)); + PyModule_AddObject(m, "DNS_QTYPE_NSEC", PyInt_FromLong(DNS_QTYPE_NSEC)); + PyModule_AddObject(m, "DNS_QTYPE_DS", PyInt_FromLong(DNS_QTYPE_DS)); + PyModule_AddObject(m, "DNS_QTYPE_SRV", PyInt_FromLong(DNS_QTYPE_SRV)); + PyModule_AddObject(m, "DNS_RCODE_REFUSED", PyInt_FromLong(DNS_RCODE_REFUSED)); + PyModule_AddObject(m, "DNS_TKEY_MODE_NULL", PyInt_FromLong(DNS_TKEY_MODE_NULL)); + PyModule_AddObject(m, "DNS_RCODE_NOTZONE", PyInt_FromLong(DNS_RCODE_NOTZONE)); + PyModule_AddObject(m, "DNS_QTYPE_MX", PyInt_FromLong(DNS_QTYPE_MX)); + PyModule_AddObject(m, "DNS_FLAG_AUTHORITATIVE", PyInt_FromLong(DNS_FLAG_AUTHORITATIVE)); + PyModule_AddObject(m, "DNS_QTYPE_AAAA", PyInt_FromLong(DNS_QTYPE_AAAA)); + Py_INCREF((PyObject *)(void *)&dns_name_question_Type); + PyModule_AddObject(m, "name_question", (PyObject *)(void *)&dns_name_question_Type); + Py_INCREF((PyObject *)(void *)&dns_rdata_data_Type); + PyModule_AddObject(m, "rdata_data", (PyObject *)(void *)&dns_rdata_data_Type); + Py_INCREF((PyObject *)(void *)&dns_soa_record_Type); + PyModule_AddObject(m, "soa_record", (PyObject *)(void *)&dns_soa_record_Type); + Py_INCREF((PyObject *)(void *)&dns_mx_record_Type); + PyModule_AddObject(m, "mx_record", (PyObject *)(void *)&dns_mx_record_Type); + Py_INCREF((PyObject *)(void *)&dns_txt_record_Type); + PyModule_AddObject(m, "txt_record", (PyObject *)(void *)&dns_txt_record_Type); + Py_INCREF((PyObject *)(void *)&dns_srv_record_Type); + PyModule_AddObject(m, "srv_record", (PyObject *)(void *)&dns_srv_record_Type); + Py_INCREF((PyObject *)(void *)&dns_tkey_record_Type); + PyModule_AddObject(m, "tkey_record", (PyObject *)(void *)&dns_tkey_record_Type); + Py_INCREF((PyObject *)(void *)&dns_tsig_record_Type); + PyModule_AddObject(m, "tsig_record", (PyObject *)(void *)&dns_tsig_record_Type); + Py_INCREF((PyObject *)(void *)&dns_fake_tsig_rec_Type); + PyModule_AddObject(m, "fake_tsig_rec", (PyObject *)(void *)&dns_fake_tsig_rec_Type); + Py_INCREF((PyObject *)(void *)&dns_res_rec_Type); + PyModule_AddObject(m, "res_rec", (PyObject *)(void *)&dns_res_rec_Type); + Py_INCREF((PyObject *)(void *)&dns_name_packet_Type); + PyModule_AddObject(m, "name_packet", (PyObject *)(void *)&dns_name_packet_Type); + Py_INCREF((PyObject *)(void *)&dns_InterfaceType); + PyModule_AddObject(m, "dns", (PyObject *)(void *)&dns_InterfaceType); +#ifdef PY_MOD_DNS_PATCH + PY_MOD_DNS_PATCH(m); +#endif + +} |