2 /* Python wrapper functions auto-generated by pidl */
6 #include "librpc/rpc/pyrpc.h"
7 #include "librpc/rpc/pyrpc_util.h"
8 #include "bin/default/source4/librpc/gen_ndr/ndr_irpc.h"
9 #include "bin/default/source4/librpc/gen_ndr/ndr_irpc_c.h"
11 #include "librpc/gen_ndr/misc.h"
12 #include "librpc/gen_ndr/security.h"
13 #include "librpc/gen_ndr/nbt.h"
14 #include "librpc/gen_ndr/netlogon.h"
15 #include "librpc/gen_ndr/server_id.h"
16 staticforward PyTypeObject irpc_creds_Type;
17 staticforward PyTypeObject irpc_header_Type;
18 staticforward PyTypeObject irpc_name_record_Type;
19 staticforward PyTypeObject irpc_name_records_Type;
20 staticforward PyTypeObject nbtd_statistics_Type;
21 staticforward PyTypeObject nbtd_proxy_wins_addr_Type;
22 staticforward PyTypeObject smbsrv_session_info_Type;
23 staticforward PyTypeObject smbsrv_sessions_Type;
24 staticforward PyTypeObject smbsrv_tcon_info_Type;
25 staticforward PyTypeObject smbsrv_tcons_Type;
26 staticforward PyTypeObject irpc_InterfaceType;
28 void initirpc(void);static PyTypeObject *dom_sid_Type;
29 static PyTypeObject *GUID_Type;
30 static PyTypeObject *ClientConnection_Type;
31 static PyTypeObject *security_token_Type;
32 static PyTypeObject *server_id_Type;
33 static PyTypeObject *NL_DNS_NAME_INFO_ARRAY_Type;
34 static PyTypeObject *Object_Type;
35 static PyTypeObject *nbt_name_Type;
37 static PyObject *py_irpc_creds_get_token(PyObject *obj, void *closure)
39 struct irpc_creds *object = (struct irpc_creds *)pytalloc_get_ptr(obj);
41 if (object->token == NULL) {
45 py_token = pytalloc_reference_ex(security_token_Type, object->token, object->token);
50 static int py_irpc_creds_set_token(PyObject *py_obj, PyObject *value, void *closure)
52 struct irpc_creds *object = (struct irpc_creds *)pytalloc_get_ptr(py_obj);
53 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->token);
54 if (value == Py_None) {
58 PY_CHECK_TYPE(security_token_Type, value, return -1;);
59 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
63 object->token = (struct security_token *)pytalloc_get_ptr(value);
68 static PyGetSetDef py_irpc_creds_getsetters[] = {
69 { discard_const_p(char, "token"), py_irpc_creds_get_token, py_irpc_creds_set_token },
73 static PyObject *py_irpc_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
75 return pytalloc_new(struct irpc_creds, type);
79 static PyTypeObject irpc_creds_Type = {
80 PyObject_HEAD_INIT(NULL) 0,
81 .tp_name = "irpc.creds",
82 .tp_getset = py_irpc_creds_getsetters,
84 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
85 .tp_basicsize = sizeof(pytalloc_Object),
86 .tp_new = py_irpc_creds_new,
90 static PyObject *py_irpc_header_get_uuid(PyObject *obj, void *closure)
92 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
94 py_uuid = pytalloc_reference_ex(GUID_Type, pytalloc_get_mem_ctx(obj), &object->uuid);
98 static int py_irpc_header_set_uuid(PyObject *py_obj, PyObject *value, void *closure)
100 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
101 PY_CHECK_TYPE(GUID_Type, value, return -1;);
102 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
106 object->uuid = *(struct GUID *)pytalloc_get_ptr(value);
110 static PyObject *py_irpc_header_get_if_version(PyObject *obj, void *closure)
112 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
113 PyObject *py_if_version;
114 py_if_version = PyInt_FromLong(object->if_version);
115 return py_if_version;
118 static int py_irpc_header_set_if_version(PyObject *py_obj, PyObject *value, void *closure)
120 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
121 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
122 object->if_version = PyInt_AsLong(value);
126 static PyObject *py_irpc_header_get_callnum(PyObject *obj, void *closure)
128 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
129 PyObject *py_callnum;
130 py_callnum = PyInt_FromLong(object->callnum);
134 static int py_irpc_header_set_callnum(PyObject *py_obj, PyObject *value, void *closure)
136 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
137 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
138 object->callnum = PyInt_AsLong(value);
142 static PyObject *py_irpc_header_get_callid(PyObject *obj, void *closure)
144 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
146 py_callid = PyInt_FromLong(object->callid);
150 static int py_irpc_header_set_callid(PyObject *py_obj, PyObject *value, void *closure)
152 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
153 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
154 object->callid = PyInt_AsLong(value);
158 static PyObject *py_irpc_header_get_flags(PyObject *obj, void *closure)
160 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
162 py_flags = PyInt_FromLong(object->flags);
166 static int py_irpc_header_set_flags(PyObject *py_obj, PyObject *value, void *closure)
168 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
169 if (PyLong_Check(value)) {
170 object->flags = PyLong_AsLongLong(value);
171 } else if (PyInt_Check(value)) {
172 object->flags = PyInt_AsLong(value);
174 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
175 PyInt_Type.tp_name, PyLong_Type.tp_name);
181 static PyObject *py_irpc_header_get_status(PyObject *obj, void *closure)
183 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
185 py_status = PyErr_FromNTSTATUS(object->status);
189 static int py_irpc_header_set_status(PyObject *py_obj, PyObject *value, void *closure)
191 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
192 object->status = NT_STATUS(PyInt_AsLong(value));
196 static PyObject *py_irpc_header_get_creds(PyObject *obj, void *closure)
198 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
200 py_creds = pytalloc_reference_ex(&irpc_creds_Type, pytalloc_get_mem_ctx(obj), &object->creds);
204 static int py_irpc_header_set_creds(PyObject *py_obj, PyObject *value, void *closure)
206 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
207 PY_CHECK_TYPE(&irpc_creds_Type, value, return -1;);
208 if (talloc_reference(pytalloc_get_mem_ctx(py_obj), pytalloc_get_mem_ctx(value)) == NULL) {
212 object->creds = *(struct irpc_creds *)pytalloc_get_ptr(value);
216 static PyObject *py_irpc_header_get__pad(PyObject *obj, void *closure)
218 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(obj);
220 py__pad = PyString_FromStringAndSize((char *)(object->_pad).data, (object->_pad).length);
224 static int py_irpc_header_set__pad(PyObject *py_obj, PyObject *value, void *closure)
226 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
227 object->_pad = data_blob_talloc(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value), PyString_GET_SIZE(value));
231 static PyGetSetDef py_irpc_header_getsetters[] = {
232 { discard_const_p(char, "uuid"), py_irpc_header_get_uuid, py_irpc_header_set_uuid },
233 { discard_const_p(char, "if_version"), py_irpc_header_get_if_version, py_irpc_header_set_if_version },
234 { discard_const_p(char, "callnum"), py_irpc_header_get_callnum, py_irpc_header_set_callnum },
235 { discard_const_p(char, "callid"), py_irpc_header_get_callid, py_irpc_header_set_callid },
236 { discard_const_p(char, "flags"), py_irpc_header_get_flags, py_irpc_header_set_flags },
237 { discard_const_p(char, "status"), py_irpc_header_get_status, py_irpc_header_set_status },
238 { discard_const_p(char, "creds"), py_irpc_header_get_creds, py_irpc_header_set_creds },
239 { discard_const_p(char, "_pad"), py_irpc_header_get__pad, py_irpc_header_set__pad },
243 static PyObject *py_irpc_header_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
245 return pytalloc_new(struct irpc_header, type);
248 static PyObject *py_irpc_header_ndr_pack(PyObject *py_obj)
250 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
252 enum ndr_err_code err;
253 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_irpc_header);
254 if (err != NDR_ERR_SUCCESS) {
255 PyErr_SetNdrError(err);
259 return PyString_FromStringAndSize((char *)blob.data, blob.length);
262 static PyObject *py_irpc_header_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
264 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
267 enum ndr_err_code err;
268 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
269 PyObject *allow_remaining_obj = NULL;
270 bool allow_remaining = false;
272 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
273 discard_const_p(char *, kwnames),
274 &blob.data, &blob_length,
275 &allow_remaining_obj)) {
278 blob.length = blob_length;
280 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
281 allow_remaining = true;
284 if (allow_remaining) {
285 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_header);
287 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_header);
289 if (err != NDR_ERR_SUCCESS) {
290 PyErr_SetNdrError(err);
297 static PyObject *py_irpc_header_ndr_print(PyObject *py_obj)
299 struct irpc_header *object = (struct irpc_header *)pytalloc_get_ptr(py_obj);
303 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_irpc_header, "irpc_header", object);
304 ret = PyString_FromString(retstr);
310 static PyMethodDef py_irpc_header_methods[] = {
311 { "__ndr_pack__", (PyCFunction)py_irpc_header_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
312 { "__ndr_unpack__", (PyCFunction)py_irpc_header_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
313 { "__ndr_print__", (PyCFunction)py_irpc_header_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
314 { NULL, NULL, 0, NULL }
318 static PyTypeObject irpc_header_Type = {
319 PyObject_HEAD_INIT(NULL) 0,
320 .tp_name = "irpc.header",
321 .tp_getset = py_irpc_header_getsetters,
322 .tp_methods = py_irpc_header_methods,
323 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
324 .tp_basicsize = sizeof(pytalloc_Object),
325 .tp_new = py_irpc_header_new,
329 static PyObject *py_irpc_name_record_get_name(PyObject *obj, void *closure)
331 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(obj);
333 py_name = PyString_FromStringOrNULL(object->name);
337 static int py_irpc_name_record_set_name(PyObject *py_obj, PyObject *value, void *closure)
339 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
340 object->name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
344 static PyObject *py_irpc_name_record_get_count(PyObject *obj, void *closure)
346 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(obj);
348 py_count = PyInt_FromLong(object->count);
352 static int py_irpc_name_record_set_count(PyObject *py_obj, PyObject *value, void *closure)
354 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
355 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
356 object->count = PyInt_AsLong(value);
360 static PyObject *py_irpc_name_record_get_ids(PyObject *obj, void *closure)
362 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(obj);
364 py_ids = PyList_New(object->count);
365 if (py_ids == NULL) {
370 for (ids_cntr_0 = 0; ids_cntr_0 < object->count; ids_cntr_0++) {
372 py_ids_0 = pytalloc_reference_ex(server_id_Type, object->ids, &object->ids[ids_cntr_0]);
373 PyList_SetItem(py_ids, ids_cntr_0, py_ids_0);
379 static int py_irpc_name_record_set_ids(PyObject *py_obj, PyObject *value, void *closure)
381 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
382 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
385 object->ids = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->ids, PyList_GET_SIZE(value));
386 if (!object->ids) { return -1;; }
387 talloc_set_name_const(object->ids, "ARRAY: object->ids");
388 for (ids_cntr_0 = 0; ids_cntr_0 < PyList_GET_SIZE(value); ids_cntr_0++) {
389 PY_CHECK_TYPE(server_id_Type, PyList_GET_ITEM(value, ids_cntr_0), return -1;);
390 if (talloc_reference(object->ids, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, ids_cntr_0))) == NULL) {
394 object->ids[ids_cntr_0] = *(struct server_id *)pytalloc_get_ptr(PyList_GET_ITEM(value, ids_cntr_0));
400 static PyGetSetDef py_irpc_name_record_getsetters[] = {
401 { discard_const_p(char, "name"), py_irpc_name_record_get_name, py_irpc_name_record_set_name },
402 { discard_const_p(char, "count"), py_irpc_name_record_get_count, py_irpc_name_record_set_count },
403 { discard_const_p(char, "ids"), py_irpc_name_record_get_ids, py_irpc_name_record_set_ids },
407 static PyObject *py_irpc_name_record_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
409 return pytalloc_new(struct irpc_name_record, type);
412 static PyObject *py_irpc_name_record_ndr_pack(PyObject *py_obj)
414 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
416 enum ndr_err_code err;
417 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_irpc_name_record);
418 if (err != NDR_ERR_SUCCESS) {
419 PyErr_SetNdrError(err);
423 return PyString_FromStringAndSize((char *)blob.data, blob.length);
426 static PyObject *py_irpc_name_record_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
428 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
431 enum ndr_err_code err;
432 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
433 PyObject *allow_remaining_obj = NULL;
434 bool allow_remaining = false;
436 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
437 discard_const_p(char *, kwnames),
438 &blob.data, &blob_length,
439 &allow_remaining_obj)) {
442 blob.length = blob_length;
444 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
445 allow_remaining = true;
448 if (allow_remaining) {
449 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_name_record);
451 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_name_record);
453 if (err != NDR_ERR_SUCCESS) {
454 PyErr_SetNdrError(err);
461 static PyObject *py_irpc_name_record_ndr_print(PyObject *py_obj)
463 struct irpc_name_record *object = (struct irpc_name_record *)pytalloc_get_ptr(py_obj);
467 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_irpc_name_record, "irpc_name_record", object);
468 ret = PyString_FromString(retstr);
474 static PyMethodDef py_irpc_name_record_methods[] = {
475 { "__ndr_pack__", (PyCFunction)py_irpc_name_record_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
476 { "__ndr_unpack__", (PyCFunction)py_irpc_name_record_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
477 { "__ndr_print__", (PyCFunction)py_irpc_name_record_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
478 { NULL, NULL, 0, NULL }
482 static PyTypeObject irpc_name_record_Type = {
483 PyObject_HEAD_INIT(NULL) 0,
484 .tp_name = "irpc.name_record",
485 .tp_getset = py_irpc_name_record_getsetters,
486 .tp_methods = py_irpc_name_record_methods,
487 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
488 .tp_basicsize = sizeof(pytalloc_Object),
489 .tp_new = py_irpc_name_record_new,
493 static PyObject *py_irpc_name_records_get_names(PyObject *obj, void *closure)
495 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(obj);
497 py_names = PyList_New(object->num_records);
498 if (py_names == NULL) {
503 for (names_cntr_0 = 0; names_cntr_0 < object->num_records; names_cntr_0++) {
504 PyObject *py_names_0;
505 if (object->names[names_cntr_0] == NULL) {
506 py_names_0 = Py_None;
507 Py_INCREF(py_names_0);
509 py_names_0 = pytalloc_reference_ex(&irpc_name_record_Type, object->names[names_cntr_0], object->names[names_cntr_0]);
511 PyList_SetItem(py_names, names_cntr_0, py_names_0);
517 static int py_irpc_name_records_set_names(PyObject *py_obj, PyObject *value, void *closure)
519 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(py_obj);
520 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
523 object->names = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->names, PyList_GET_SIZE(value));
524 if (!object->names) { return -1;; }
525 talloc_set_name_const(object->names, "ARRAY: object->names");
526 for (names_cntr_0 = 0; names_cntr_0 < PyList_GET_SIZE(value); names_cntr_0++) {
527 if (PyList_GET_ITEM(value, names_cntr_0) == Py_None) {
528 object->names[names_cntr_0] = NULL;
530 object->names[names_cntr_0] = NULL;
531 PY_CHECK_TYPE(&irpc_name_record_Type, PyList_GET_ITEM(value, names_cntr_0), return -1;);
532 if (talloc_reference(object->names, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, names_cntr_0))) == NULL) {
536 object->names[names_cntr_0] = (struct irpc_name_record *)pytalloc_get_ptr(PyList_GET_ITEM(value, names_cntr_0));
543 static PyObject *py_irpc_name_records_get_num_records(PyObject *obj, void *closure)
545 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(obj);
546 PyObject *py_num_records;
547 py_num_records = PyInt_FromLong(object->num_records);
548 return py_num_records;
551 static int py_irpc_name_records_set_num_records(PyObject *py_obj, PyObject *value, void *closure)
553 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(py_obj);
554 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
555 object->num_records = PyInt_AsLong(value);
559 static PyGetSetDef py_irpc_name_records_getsetters[] = {
560 { discard_const_p(char, "names"), py_irpc_name_records_get_names, py_irpc_name_records_set_names },
561 { discard_const_p(char, "num_records"), py_irpc_name_records_get_num_records, py_irpc_name_records_set_num_records },
565 static PyObject *py_irpc_name_records_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
567 return pytalloc_new(struct irpc_name_records, type);
570 static PyObject *py_irpc_name_records_ndr_pack(PyObject *py_obj)
572 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(py_obj);
574 enum ndr_err_code err;
575 err = ndr_push_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_irpc_name_records);
576 if (err != NDR_ERR_SUCCESS) {
577 PyErr_SetNdrError(err);
581 return PyString_FromStringAndSize((char *)blob.data, blob.length);
584 static PyObject *py_irpc_name_records_ndr_unpack(PyObject *py_obj, PyObject *args, PyObject *kwargs)
586 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(py_obj);
589 enum ndr_err_code err;
590 const char * const kwnames[] = { "data_blob", "allow_remaining", NULL };
591 PyObject *allow_remaining_obj = NULL;
592 bool allow_remaining = false;
594 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|O:__ndr_unpack__",
595 discard_const_p(char *, kwnames),
596 &blob.data, &blob_length,
597 &allow_remaining_obj)) {
600 blob.length = blob_length;
602 if (allow_remaining_obj && PyObject_IsTrue(allow_remaining_obj)) {
603 allow_remaining = true;
606 if (allow_remaining) {
607 err = ndr_pull_struct_blob(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_name_records);
609 err = ndr_pull_struct_blob_all(&blob, pytalloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_irpc_name_records);
611 if (err != NDR_ERR_SUCCESS) {
612 PyErr_SetNdrError(err);
619 static PyObject *py_irpc_name_records_ndr_print(PyObject *py_obj)
621 struct irpc_name_records *object = (struct irpc_name_records *)pytalloc_get_ptr(py_obj);
625 retstr = ndr_print_struct_string(pytalloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_irpc_name_records, "irpc_name_records", object);
626 ret = PyString_FromString(retstr);
632 static PyMethodDef py_irpc_name_records_methods[] = {
633 { "__ndr_pack__", (PyCFunction)py_irpc_name_records_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
634 { "__ndr_unpack__", (PyCFunction)py_irpc_name_records_ndr_unpack, METH_VARARGS|METH_KEYWORDS, "S.ndr_unpack(class, blob, allow_remaining=False) -> None\nNDR unpack" },
635 { "__ndr_print__", (PyCFunction)py_irpc_name_records_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
636 { NULL, NULL, 0, NULL }
640 static PyTypeObject irpc_name_records_Type = {
641 PyObject_HEAD_INIT(NULL) 0,
642 .tp_name = "irpc.name_records",
643 .tp_getset = py_irpc_name_records_getsetters,
644 .tp_methods = py_irpc_name_records_methods,
645 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
646 .tp_basicsize = sizeof(pytalloc_Object),
647 .tp_new = py_irpc_name_records_new,
651 static PyObject *py_nbtd_statistics_get_total_received(PyObject *obj, void *closure)
653 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(obj);
654 PyObject *py_total_received;
655 py_total_received = PyLong_FromLongLong(object->total_received);
656 return py_total_received;
659 static int py_nbtd_statistics_set_total_received(PyObject *py_obj, PyObject *value, void *closure)
661 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(py_obj);
662 if (PyLong_Check(value)) {
663 object->total_received = PyLong_AsLongLong(value);
664 } else if (PyInt_Check(value)) {
665 object->total_received = PyInt_AsLong(value);
667 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
668 PyInt_Type.tp_name, PyLong_Type.tp_name);
674 static PyObject *py_nbtd_statistics_get_total_sent(PyObject *obj, void *closure)
676 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(obj);
677 PyObject *py_total_sent;
678 py_total_sent = PyLong_FromLongLong(object->total_sent);
679 return py_total_sent;
682 static int py_nbtd_statistics_set_total_sent(PyObject *py_obj, PyObject *value, void *closure)
684 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(py_obj);
685 if (PyLong_Check(value)) {
686 object->total_sent = PyLong_AsLongLong(value);
687 } else if (PyInt_Check(value)) {
688 object->total_sent = PyInt_AsLong(value);
690 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
691 PyInt_Type.tp_name, PyLong_Type.tp_name);
697 static PyObject *py_nbtd_statistics_get_query_count(PyObject *obj, void *closure)
699 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(obj);
700 PyObject *py_query_count;
701 py_query_count = PyLong_FromLongLong(object->query_count);
702 return py_query_count;
705 static int py_nbtd_statistics_set_query_count(PyObject *py_obj, PyObject *value, void *closure)
707 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(py_obj);
708 if (PyLong_Check(value)) {
709 object->query_count = PyLong_AsLongLong(value);
710 } else if (PyInt_Check(value)) {
711 object->query_count = PyInt_AsLong(value);
713 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
714 PyInt_Type.tp_name, PyLong_Type.tp_name);
720 static PyObject *py_nbtd_statistics_get_register_count(PyObject *obj, void *closure)
722 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(obj);
723 PyObject *py_register_count;
724 py_register_count = PyLong_FromLongLong(object->register_count);
725 return py_register_count;
728 static int py_nbtd_statistics_set_register_count(PyObject *py_obj, PyObject *value, void *closure)
730 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(py_obj);
731 if (PyLong_Check(value)) {
732 object->register_count = PyLong_AsLongLong(value);
733 } else if (PyInt_Check(value)) {
734 object->register_count = PyInt_AsLong(value);
736 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
737 PyInt_Type.tp_name, PyLong_Type.tp_name);
743 static PyObject *py_nbtd_statistics_get_release_count(PyObject *obj, void *closure)
745 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(obj);
746 PyObject *py_release_count;
747 py_release_count = PyLong_FromLongLong(object->release_count);
748 return py_release_count;
751 static int py_nbtd_statistics_set_release_count(PyObject *py_obj, PyObject *value, void *closure)
753 struct nbtd_statistics *object = (struct nbtd_statistics *)pytalloc_get_ptr(py_obj);
754 if (PyLong_Check(value)) {
755 object->release_count = PyLong_AsLongLong(value);
756 } else if (PyInt_Check(value)) {
757 object->release_count = PyInt_AsLong(value);
759 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
760 PyInt_Type.tp_name, PyLong_Type.tp_name);
766 static PyGetSetDef py_nbtd_statistics_getsetters[] = {
767 { discard_const_p(char, "total_received"), py_nbtd_statistics_get_total_received, py_nbtd_statistics_set_total_received },
768 { discard_const_p(char, "total_sent"), py_nbtd_statistics_get_total_sent, py_nbtd_statistics_set_total_sent },
769 { discard_const_p(char, "query_count"), py_nbtd_statistics_get_query_count, py_nbtd_statistics_set_query_count },
770 { discard_const_p(char, "register_count"), py_nbtd_statistics_get_register_count, py_nbtd_statistics_set_register_count },
771 { discard_const_p(char, "release_count"), py_nbtd_statistics_get_release_count, py_nbtd_statistics_set_release_count },
775 static PyObject *py_nbtd_statistics_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
777 return pytalloc_new(struct nbtd_statistics, type);
781 static PyTypeObject nbtd_statistics_Type = {
782 PyObject_HEAD_INIT(NULL) 0,
783 .tp_name = "irpc.nbtd_statistics",
784 .tp_getset = py_nbtd_statistics_getsetters,
786 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
787 .tp_basicsize = sizeof(pytalloc_Object),
788 .tp_new = py_nbtd_statistics_new,
791 PyObject *py_import_nbtd_info(TALLOC_CTX *mem_ctx, int level, union nbtd_info *in)
796 case NBTD_INFO_STATISTICS:
797 if (in->stats == NULL) {
801 ret = pytalloc_reference_ex(&nbtd_statistics_Type, in->stats, in->stats);
806 PyErr_SetString(PyExc_TypeError, "unknown union level");
810 union nbtd_info *py_export_nbtd_info(TALLOC_CTX *mem_ctx, int level, PyObject *in)
812 union nbtd_info *ret = talloc_zero(mem_ctx, union nbtd_info);
814 case NBTD_INFO_STATISTICS:
819 PY_CHECK_TYPE(&nbtd_statistics_Type, in, talloc_free(ret); return NULL;);
820 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
822 talloc_free(ret); return NULL;
824 ret->stats = (struct nbtd_statistics *)pytalloc_get_ptr(in);
829 PyErr_SetString(PyExc_TypeError, "invalid union level value");
838 static PyObject *py_nbtd_proxy_wins_addr_get_addr(PyObject *obj, void *closure)
840 struct nbtd_proxy_wins_addr *object = (struct nbtd_proxy_wins_addr *)pytalloc_get_ptr(obj);
842 py_addr = PyString_FromStringOrNULL(object->addr);
846 static int py_nbtd_proxy_wins_addr_set_addr(PyObject *py_obj, PyObject *value, void *closure)
848 struct nbtd_proxy_wins_addr *object = (struct nbtd_proxy_wins_addr *)pytalloc_get_ptr(py_obj);
849 object->addr = PyString_AS_STRING(value);
853 static PyGetSetDef py_nbtd_proxy_wins_addr_getsetters[] = {
854 { discard_const_p(char, "addr"), py_nbtd_proxy_wins_addr_get_addr, py_nbtd_proxy_wins_addr_set_addr },
858 static PyObject *py_nbtd_proxy_wins_addr_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
860 return pytalloc_new(struct nbtd_proxy_wins_addr, type);
864 static PyTypeObject nbtd_proxy_wins_addr_Type = {
865 PyObject_HEAD_INIT(NULL) 0,
866 .tp_name = "irpc.nbtd_proxy_wins_addr",
867 .tp_getset = py_nbtd_proxy_wins_addr_getsetters,
869 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
870 .tp_basicsize = sizeof(pytalloc_Object),
871 .tp_new = py_nbtd_proxy_wins_addr_new,
875 static PyObject *py_smbsrv_session_info_get_vuid(PyObject *obj, void *closure)
877 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
879 py_vuid = PyLong_FromLongLong(object->vuid);
883 static int py_smbsrv_session_info_set_vuid(PyObject *py_obj, PyObject *value, void *closure)
885 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
886 if (PyLong_Check(value)) {
887 object->vuid = PyLong_AsLongLong(value);
888 } else if (PyInt_Check(value)) {
889 object->vuid = PyInt_AsLong(value);
891 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
892 PyInt_Type.tp_name, PyLong_Type.tp_name);
898 static PyObject *py_smbsrv_session_info_get_account_name(PyObject *obj, void *closure)
900 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
901 PyObject *py_account_name;
902 py_account_name = PyString_FromStringOrNULL(object->account_name);
903 return py_account_name;
906 static int py_smbsrv_session_info_set_account_name(PyObject *py_obj, PyObject *value, void *closure)
908 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
909 object->account_name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
913 static PyObject *py_smbsrv_session_info_get_domain_name(PyObject *obj, void *closure)
915 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
916 PyObject *py_domain_name;
917 py_domain_name = PyString_FromStringOrNULL(object->domain_name);
918 return py_domain_name;
921 static int py_smbsrv_session_info_set_domain_name(PyObject *py_obj, PyObject *value, void *closure)
923 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
924 object->domain_name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
928 static PyObject *py_smbsrv_session_info_get_client_ip(PyObject *obj, void *closure)
930 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
931 PyObject *py_client_ip;
932 py_client_ip = PyString_FromStringOrNULL(object->client_ip);
936 static int py_smbsrv_session_info_set_client_ip(PyObject *py_obj, PyObject *value, void *closure)
938 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
939 object->client_ip = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
943 static PyObject *py_smbsrv_session_info_get_connect_time(PyObject *obj, void *closure)
945 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
946 PyObject *py_connect_time;
947 py_connect_time = PyLong_FromLongLong(object->connect_time);
948 return py_connect_time;
951 static int py_smbsrv_session_info_set_connect_time(PyObject *py_obj, PyObject *value, void *closure)
953 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
954 if (PyLong_Check(value)) {
955 object->connect_time = PyLong_AsLongLong(value);
956 } else if (PyInt_Check(value)) {
957 object->connect_time = PyInt_AsLong(value);
959 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
960 PyInt_Type.tp_name, PyLong_Type.tp_name);
966 static PyObject *py_smbsrv_session_info_get_auth_time(PyObject *obj, void *closure)
968 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
969 PyObject *py_auth_time;
970 py_auth_time = PyLong_FromLongLong(object->auth_time);
974 static int py_smbsrv_session_info_set_auth_time(PyObject *py_obj, PyObject *value, void *closure)
976 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
977 if (PyLong_Check(value)) {
978 object->auth_time = PyLong_AsLongLong(value);
979 } else if (PyInt_Check(value)) {
980 object->auth_time = PyInt_AsLong(value);
982 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
983 PyInt_Type.tp_name, PyLong_Type.tp_name);
989 static PyObject *py_smbsrv_session_info_get_last_use_time(PyObject *obj, void *closure)
991 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(obj);
992 PyObject *py_last_use_time;
993 py_last_use_time = PyLong_FromLongLong(object->last_use_time);
994 return py_last_use_time;
997 static int py_smbsrv_session_info_set_last_use_time(PyObject *py_obj, PyObject *value, void *closure)
999 struct smbsrv_session_info *object = (struct smbsrv_session_info *)pytalloc_get_ptr(py_obj);
1000 if (PyLong_Check(value)) {
1001 object->last_use_time = PyLong_AsLongLong(value);
1002 } else if (PyInt_Check(value)) {
1003 object->last_use_time = PyInt_AsLong(value);
1005 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1006 PyInt_Type.tp_name, PyLong_Type.tp_name);
1012 static PyGetSetDef py_smbsrv_session_info_getsetters[] = {
1013 { discard_const_p(char, "vuid"), py_smbsrv_session_info_get_vuid, py_smbsrv_session_info_set_vuid },
1014 { discard_const_p(char, "account_name"), py_smbsrv_session_info_get_account_name, py_smbsrv_session_info_set_account_name },
1015 { discard_const_p(char, "domain_name"), py_smbsrv_session_info_get_domain_name, py_smbsrv_session_info_set_domain_name },
1016 { discard_const_p(char, "client_ip"), py_smbsrv_session_info_get_client_ip, py_smbsrv_session_info_set_client_ip },
1017 { discard_const_p(char, "connect_time"), py_smbsrv_session_info_get_connect_time, py_smbsrv_session_info_set_connect_time },
1018 { discard_const_p(char, "auth_time"), py_smbsrv_session_info_get_auth_time, py_smbsrv_session_info_set_auth_time },
1019 { discard_const_p(char, "last_use_time"), py_smbsrv_session_info_get_last_use_time, py_smbsrv_session_info_set_last_use_time },
1023 static PyObject *py_smbsrv_session_info_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1025 return pytalloc_new(struct smbsrv_session_info, type);
1029 static PyTypeObject smbsrv_session_info_Type = {
1030 PyObject_HEAD_INIT(NULL) 0,
1031 .tp_name = "irpc.smbsrv_session_info",
1032 .tp_getset = py_smbsrv_session_info_getsetters,
1034 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1035 .tp_basicsize = sizeof(pytalloc_Object),
1036 .tp_new = py_smbsrv_session_info_new,
1040 static PyObject *py_smbsrv_sessions_get_num_sessions(PyObject *obj, void *closure)
1042 struct smbsrv_sessions *object = (struct smbsrv_sessions *)pytalloc_get_ptr(obj);
1043 PyObject *py_num_sessions;
1044 py_num_sessions = PyInt_FromLong(object->num_sessions);
1045 return py_num_sessions;
1048 static int py_smbsrv_sessions_set_num_sessions(PyObject *py_obj, PyObject *value, void *closure)
1050 struct smbsrv_sessions *object = (struct smbsrv_sessions *)pytalloc_get_ptr(py_obj);
1051 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1052 object->num_sessions = PyInt_AsLong(value);
1056 static PyObject *py_smbsrv_sessions_get_sessions(PyObject *obj, void *closure)
1058 struct smbsrv_sessions *object = (struct smbsrv_sessions *)pytalloc_get_ptr(obj);
1059 PyObject *py_sessions;
1060 if (object->sessions == NULL) {
1061 py_sessions = Py_None;
1062 Py_INCREF(py_sessions);
1064 py_sessions = PyList_New(object->num_sessions);
1065 if (py_sessions == NULL) {
1069 int sessions_cntr_1;
1070 for (sessions_cntr_1 = 0; sessions_cntr_1 < object->num_sessions; sessions_cntr_1++) {
1071 PyObject *py_sessions_1;
1072 py_sessions_1 = pytalloc_reference_ex(&smbsrv_session_info_Type, object->sessions, &object->sessions[sessions_cntr_1]);
1073 PyList_SetItem(py_sessions, sessions_cntr_1, py_sessions_1);
1080 static int py_smbsrv_sessions_set_sessions(PyObject *py_obj, PyObject *value, void *closure)
1082 struct smbsrv_sessions *object = (struct smbsrv_sessions *)pytalloc_get_ptr(py_obj);
1083 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->sessions);
1084 if (value == Py_None) {
1085 object->sessions = NULL;
1087 object->sessions = NULL;
1088 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
1090 int sessions_cntr_1;
1091 object->sessions = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->sessions, PyList_GET_SIZE(value));
1092 if (!object->sessions) { return -1;; }
1093 talloc_set_name_const(object->sessions, "ARRAY: object->sessions");
1094 for (sessions_cntr_1 = 0; sessions_cntr_1 < PyList_GET_SIZE(value); sessions_cntr_1++) {
1095 PY_CHECK_TYPE(&smbsrv_session_info_Type, PyList_GET_ITEM(value, sessions_cntr_1), return -1;);
1096 if (talloc_reference(object->sessions, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, sessions_cntr_1))) == NULL) {
1100 object->sessions[sessions_cntr_1] = *(struct smbsrv_session_info *)pytalloc_get_ptr(PyList_GET_ITEM(value, sessions_cntr_1));
1107 static PyGetSetDef py_smbsrv_sessions_getsetters[] = {
1108 { discard_const_p(char, "num_sessions"), py_smbsrv_sessions_get_num_sessions, py_smbsrv_sessions_set_num_sessions },
1109 { discard_const_p(char, "sessions"), py_smbsrv_sessions_get_sessions, py_smbsrv_sessions_set_sessions },
1113 static PyObject *py_smbsrv_sessions_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1115 return pytalloc_new(struct smbsrv_sessions, type);
1119 static PyTypeObject smbsrv_sessions_Type = {
1120 PyObject_HEAD_INIT(NULL) 0,
1121 .tp_name = "irpc.smbsrv_sessions",
1122 .tp_getset = py_smbsrv_sessions_getsetters,
1124 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1125 .tp_basicsize = sizeof(pytalloc_Object),
1126 .tp_new = py_smbsrv_sessions_new,
1130 static PyObject *py_smbsrv_tcon_info_get_tid(PyObject *obj, void *closure)
1132 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(obj);
1134 py_tid = PyInt_FromLong(object->tid);
1138 static int py_smbsrv_tcon_info_set_tid(PyObject *py_obj, PyObject *value, void *closure)
1140 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(py_obj);
1141 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1142 object->tid = PyInt_AsLong(value);
1146 static PyObject *py_smbsrv_tcon_info_get_share_name(PyObject *obj, void *closure)
1148 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(obj);
1149 PyObject *py_share_name;
1150 py_share_name = PyString_FromStringOrNULL(object->share_name);
1151 return py_share_name;
1154 static int py_smbsrv_tcon_info_set_share_name(PyObject *py_obj, PyObject *value, void *closure)
1156 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(py_obj);
1157 object->share_name = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
1161 static PyObject *py_smbsrv_tcon_info_get_client_ip(PyObject *obj, void *closure)
1163 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(obj);
1164 PyObject *py_client_ip;
1165 py_client_ip = PyString_FromStringOrNULL(object->client_ip);
1166 return py_client_ip;
1169 static int py_smbsrv_tcon_info_set_client_ip(PyObject *py_obj, PyObject *value, void *closure)
1171 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(py_obj);
1172 object->client_ip = talloc_strdup(pytalloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
1176 static PyObject *py_smbsrv_tcon_info_get_connect_time(PyObject *obj, void *closure)
1178 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(obj);
1179 PyObject *py_connect_time;
1180 py_connect_time = PyLong_FromLongLong(object->connect_time);
1181 return py_connect_time;
1184 static int py_smbsrv_tcon_info_set_connect_time(PyObject *py_obj, PyObject *value, void *closure)
1186 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(py_obj);
1187 if (PyLong_Check(value)) {
1188 object->connect_time = PyLong_AsLongLong(value);
1189 } else if (PyInt_Check(value)) {
1190 object->connect_time = PyInt_AsLong(value);
1192 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1193 PyInt_Type.tp_name, PyLong_Type.tp_name);
1199 static PyObject *py_smbsrv_tcon_info_get_last_use_time(PyObject *obj, void *closure)
1201 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(obj);
1202 PyObject *py_last_use_time;
1203 py_last_use_time = PyLong_FromLongLong(object->last_use_time);
1204 return py_last_use_time;
1207 static int py_smbsrv_tcon_info_set_last_use_time(PyObject *py_obj, PyObject *value, void *closure)
1209 struct smbsrv_tcon_info *object = (struct smbsrv_tcon_info *)pytalloc_get_ptr(py_obj);
1210 if (PyLong_Check(value)) {
1211 object->last_use_time = PyLong_AsLongLong(value);
1212 } else if (PyInt_Check(value)) {
1213 object->last_use_time = PyInt_AsLong(value);
1215 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1216 PyInt_Type.tp_name, PyLong_Type.tp_name);
1222 static PyGetSetDef py_smbsrv_tcon_info_getsetters[] = {
1223 { discard_const_p(char, "tid"), py_smbsrv_tcon_info_get_tid, py_smbsrv_tcon_info_set_tid },
1224 { discard_const_p(char, "share_name"), py_smbsrv_tcon_info_get_share_name, py_smbsrv_tcon_info_set_share_name },
1225 { discard_const_p(char, "client_ip"), py_smbsrv_tcon_info_get_client_ip, py_smbsrv_tcon_info_set_client_ip },
1226 { discard_const_p(char, "connect_time"), py_smbsrv_tcon_info_get_connect_time, py_smbsrv_tcon_info_set_connect_time },
1227 { discard_const_p(char, "last_use_time"), py_smbsrv_tcon_info_get_last_use_time, py_smbsrv_tcon_info_set_last_use_time },
1231 static PyObject *py_smbsrv_tcon_info_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1233 return pytalloc_new(struct smbsrv_tcon_info, type);
1237 static PyTypeObject smbsrv_tcon_info_Type = {
1238 PyObject_HEAD_INIT(NULL) 0,
1239 .tp_name = "irpc.smbsrv_tcon_info",
1240 .tp_getset = py_smbsrv_tcon_info_getsetters,
1242 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1243 .tp_basicsize = sizeof(pytalloc_Object),
1244 .tp_new = py_smbsrv_tcon_info_new,
1248 static PyObject *py_smbsrv_tcons_get_num_tcons(PyObject *obj, void *closure)
1250 struct smbsrv_tcons *object = (struct smbsrv_tcons *)pytalloc_get_ptr(obj);
1251 PyObject *py_num_tcons;
1252 py_num_tcons = PyInt_FromLong(object->num_tcons);
1253 return py_num_tcons;
1256 static int py_smbsrv_tcons_set_num_tcons(PyObject *py_obj, PyObject *value, void *closure)
1258 struct smbsrv_tcons *object = (struct smbsrv_tcons *)pytalloc_get_ptr(py_obj);
1259 PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
1260 object->num_tcons = PyInt_AsLong(value);
1264 static PyObject *py_smbsrv_tcons_get_tcons(PyObject *obj, void *closure)
1266 struct smbsrv_tcons *object = (struct smbsrv_tcons *)pytalloc_get_ptr(obj);
1268 if (object->tcons == NULL) {
1270 Py_INCREF(py_tcons);
1272 py_tcons = PyList_New(object->num_tcons);
1273 if (py_tcons == NULL) {
1278 for (tcons_cntr_1 = 0; tcons_cntr_1 < object->num_tcons; tcons_cntr_1++) {
1279 PyObject *py_tcons_1;
1280 py_tcons_1 = pytalloc_reference_ex(&smbsrv_tcon_info_Type, object->tcons, &object->tcons[tcons_cntr_1]);
1281 PyList_SetItem(py_tcons, tcons_cntr_1, py_tcons_1);
1288 static int py_smbsrv_tcons_set_tcons(PyObject *py_obj, PyObject *value, void *closure)
1290 struct smbsrv_tcons *object = (struct smbsrv_tcons *)pytalloc_get_ptr(py_obj);
1291 talloc_unlink(pytalloc_get_mem_ctx(py_obj), object->tcons);
1292 if (value == Py_None) {
1293 object->tcons = NULL;
1295 object->tcons = NULL;
1296 PY_CHECK_TYPE(&PyList_Type, value, return -1;);
1299 object->tcons = talloc_array_ptrtype(pytalloc_get_mem_ctx(py_obj), object->tcons, PyList_GET_SIZE(value));
1300 if (!object->tcons) { return -1;; }
1301 talloc_set_name_const(object->tcons, "ARRAY: object->tcons");
1302 for (tcons_cntr_1 = 0; tcons_cntr_1 < PyList_GET_SIZE(value); tcons_cntr_1++) {
1303 PY_CHECK_TYPE(&smbsrv_tcon_info_Type, PyList_GET_ITEM(value, tcons_cntr_1), return -1;);
1304 if (talloc_reference(object->tcons, pytalloc_get_mem_ctx(PyList_GET_ITEM(value, tcons_cntr_1))) == NULL) {
1308 object->tcons[tcons_cntr_1] = *(struct smbsrv_tcon_info *)pytalloc_get_ptr(PyList_GET_ITEM(value, tcons_cntr_1));
1315 static PyGetSetDef py_smbsrv_tcons_getsetters[] = {
1316 { discard_const_p(char, "num_tcons"), py_smbsrv_tcons_get_num_tcons, py_smbsrv_tcons_set_num_tcons },
1317 { discard_const_p(char, "tcons"), py_smbsrv_tcons_get_tcons, py_smbsrv_tcons_set_tcons },
1321 static PyObject *py_smbsrv_tcons_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1323 return pytalloc_new(struct smbsrv_tcons, type);
1327 static PyTypeObject smbsrv_tcons_Type = {
1328 PyObject_HEAD_INIT(NULL) 0,
1329 .tp_name = "irpc.smbsrv_tcons",
1330 .tp_getset = py_smbsrv_tcons_getsetters,
1332 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1333 .tp_basicsize = sizeof(pytalloc_Object),
1334 .tp_new = py_smbsrv_tcons_new,
1337 PyObject *py_import_smbsrv_info(TALLOC_CTX *mem_ctx, int level, union smbsrv_info *in)
1342 case SMBSRV_INFO_SESSIONS:
1343 ret = pytalloc_reference_ex(&smbsrv_sessions_Type, mem_ctx, &in->sessions);
1346 case SMBSRV_INFO_TCONS:
1347 ret = pytalloc_reference_ex(&smbsrv_tcons_Type, mem_ctx, &in->tcons);
1351 PyErr_SetString(PyExc_TypeError, "unknown union level");
1355 union smbsrv_info *py_export_smbsrv_info(TALLOC_CTX *mem_ctx, int level, PyObject *in)
1357 union smbsrv_info *ret = talloc_zero(mem_ctx, union smbsrv_info);
1359 case SMBSRV_INFO_SESSIONS:
1360 PY_CHECK_TYPE(&smbsrv_sessions_Type, in, talloc_free(ret); return NULL;);
1361 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
1363 talloc_free(ret); return NULL;
1365 ret->sessions = *(struct smbsrv_sessions *)pytalloc_get_ptr(in);
1368 case SMBSRV_INFO_TCONS:
1369 PY_CHECK_TYPE(&smbsrv_tcons_Type, in, talloc_free(ret); return NULL;);
1370 if (talloc_reference(mem_ctx, pytalloc_get_mem_ctx(in)) == NULL) {
1372 talloc_free(ret); return NULL;
1374 ret->tcons = *(struct smbsrv_tcons *)pytalloc_get_ptr(in);
1378 PyErr_SetString(PyExc_TypeError, "invalid union level value");
1387 static bool pack_py_irpc_uptime_args_in(PyObject *args, PyObject *kwargs, struct irpc_uptime *r)
1389 const char *kwnames[] = {
1393 if (!PyArg_ParseTupleAndKeywords(args, kwargs, ":irpc_uptime", discard_const_p(char *, kwnames))) {
1400 static PyObject *unpack_py_irpc_uptime_args_out(struct irpc_uptime *r)
1403 PyObject *py_start_time;
1404 py_start_time = PyLong_FromLongLong(*r->out.start_time);
1405 result = py_start_time;
1409 static bool pack_py_nbtd_information_args_in(PyObject *args, PyObject *kwargs, struct nbtd_information *r)
1412 const char *kwnames[] = {
1416 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:nbtd_information", discard_const_p(char *, kwnames), &py_level)) {
1420 if (PyLong_Check(py_level)) {
1421 r->in.level = PyLong_AsLongLong(py_level);
1422 } else if (PyInt_Check(py_level)) {
1423 r->in.level = PyInt_AsLong(py_level);
1425 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1426 PyInt_Type.tp_name, PyLong_Type.tp_name);
1432 static PyObject *unpack_py_nbtd_information_args_out(struct nbtd_information *r)
1436 py_info = py_import_nbtd_info(r, r->in.level, &r->out.info);
1437 if (py_info == NULL) {
1444 static bool pack_py_nbtd_getdcname_args_in(PyObject *args, PyObject *kwargs, struct nbtd_getdcname *r)
1446 PyObject *py_domainname;
1447 PyObject *py_ip_address;
1448 PyObject *py_my_computername;
1449 PyObject *py_my_accountname;
1450 PyObject *py_account_control;
1451 PyObject *py_domain_sid;
1452 const char *kwnames[] = {
1453 "domainname", "ip_address", "my_computername", "my_accountname", "account_control", "domain_sid", NULL
1456 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO:nbtd_getdcname", discard_const_p(char *, kwnames), &py_domainname, &py_ip_address, &py_my_computername, &py_my_accountname, &py_account_control, &py_domain_sid)) {
1460 r->in.domainname = talloc_strdup(r, PyString_AS_STRING(py_domainname));
1461 r->in.ip_address = talloc_strdup(r, PyString_AS_STRING(py_ip_address));
1462 r->in.my_computername = talloc_strdup(r, PyString_AS_STRING(py_my_computername));
1463 r->in.my_accountname = talloc_strdup(r, PyString_AS_STRING(py_my_accountname));
1464 PY_CHECK_TYPE(&PyInt_Type, py_account_control, return false;);
1465 r->in.account_control = PyInt_AsLong(py_account_control);
1466 r->in.domain_sid = talloc_ptrtype(r, r->in.domain_sid);
1467 PY_CHECK_TYPE(dom_sid_Type, py_domain_sid, return false;);
1468 if (talloc_reference(r, pytalloc_get_mem_ctx(py_domain_sid)) == NULL) {
1472 r->in.domain_sid = (struct dom_sid *)pytalloc_get_ptr(py_domain_sid);
1476 static PyObject *unpack_py_nbtd_getdcname_args_out(struct nbtd_getdcname *r)
1479 PyObject *py_dcname;
1480 if (r->out.dcname == NULL) {
1481 py_dcname = Py_None;
1482 Py_INCREF(py_dcname);
1484 py_dcname = PyString_FromStringOrNULL(r->out.dcname);
1490 static bool pack_py_nbtd_proxy_wins_challenge_args_in(PyObject *args, PyObject *kwargs, struct nbtd_proxy_wins_challenge *r)
1493 PyObject *py_num_addrs;
1495 const char *kwnames[] = {
1496 "name", "num_addrs", "addrs", NULL
1499 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:nbtd_proxy_wins_challenge", discard_const_p(char *, kwnames), &py_name, &py_num_addrs, &py_addrs)) {
1503 PY_CHECK_TYPE(nbt_name_Type, py_name, return false;);
1504 if (talloc_reference(r, pytalloc_get_mem_ctx(py_name)) == NULL) {
1508 r->in.name = *(struct nbt_name *)pytalloc_get_ptr(py_name);
1509 PY_CHECK_TYPE(&PyInt_Type, py_num_addrs, return false;);
1510 r->in.num_addrs = PyInt_AsLong(py_num_addrs);
1511 PY_CHECK_TYPE(&PyList_Type, py_addrs, return false;);
1514 r->in.addrs = talloc_array_ptrtype(r, r->in.addrs, PyList_GET_SIZE(py_addrs));
1515 if (!r->in.addrs) { return false;; }
1516 talloc_set_name_const(r->in.addrs, "ARRAY: r->in.addrs");
1517 for (addrs_cntr_0 = 0; addrs_cntr_0 < PyList_GET_SIZE(py_addrs); addrs_cntr_0++) {
1518 PY_CHECK_TYPE(&nbtd_proxy_wins_addr_Type, PyList_GET_ITEM(py_addrs, addrs_cntr_0), return false;);
1519 if (talloc_reference(r->in.addrs, pytalloc_get_mem_ctx(PyList_GET_ITEM(py_addrs, addrs_cntr_0))) == NULL) {
1523 r->in.addrs[addrs_cntr_0] = *(struct nbtd_proxy_wins_addr *)pytalloc_get_ptr(PyList_GET_ITEM(py_addrs, addrs_cntr_0));
1529 static PyObject *unpack_py_nbtd_proxy_wins_challenge_args_out(struct nbtd_proxy_wins_challenge *r)
1532 PyObject *py_num_addrs;
1534 result = PyTuple_New(2);
1535 py_num_addrs = PyInt_FromLong(r->out.num_addrs);
1536 PyTuple_SetItem(result, 0, py_num_addrs);
1537 py_addrs = PyList_New(r->out.num_addrs);
1538 if (py_addrs == NULL) {
1543 for (addrs_cntr_0 = 0; addrs_cntr_0 < r->out.num_addrs; addrs_cntr_0++) {
1544 PyObject *py_addrs_0;
1545 py_addrs_0 = pytalloc_reference_ex(&nbtd_proxy_wins_addr_Type, r->out.addrs, &r->out.addrs[addrs_cntr_0]);
1546 PyList_SetItem(py_addrs, addrs_cntr_0, py_addrs_0);
1549 PyTuple_SetItem(result, 1, py_addrs);
1553 static bool pack_py_nbtd_proxy_wins_release_demand_args_in(PyObject *args, PyObject *kwargs, struct nbtd_proxy_wins_release_demand *r)
1556 PyObject *py_num_addrs;
1558 const char *kwnames[] = {
1559 "name", "num_addrs", "addrs", NULL
1562 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:nbtd_proxy_wins_release_demand", discard_const_p(char *, kwnames), &py_name, &py_num_addrs, &py_addrs)) {
1566 PY_CHECK_TYPE(nbt_name_Type, py_name, return false;);
1567 if (talloc_reference(r, pytalloc_get_mem_ctx(py_name)) == NULL) {
1571 r->in.name = *(struct nbt_name *)pytalloc_get_ptr(py_name);
1572 PY_CHECK_TYPE(&PyInt_Type, py_num_addrs, return false;);
1573 r->in.num_addrs = PyInt_AsLong(py_num_addrs);
1574 PY_CHECK_TYPE(&PyList_Type, py_addrs, return false;);
1577 r->in.addrs = talloc_array_ptrtype(r, r->in.addrs, PyList_GET_SIZE(py_addrs));
1578 if (!r->in.addrs) { return false;; }
1579 talloc_set_name_const(r->in.addrs, "ARRAY: r->in.addrs");
1580 for (addrs_cntr_0 = 0; addrs_cntr_0 < PyList_GET_SIZE(py_addrs); addrs_cntr_0++) {
1581 PY_CHECK_TYPE(&nbtd_proxy_wins_addr_Type, PyList_GET_ITEM(py_addrs, addrs_cntr_0), return false;);
1582 if (talloc_reference(r->in.addrs, pytalloc_get_mem_ctx(PyList_GET_ITEM(py_addrs, addrs_cntr_0))) == NULL) {
1586 r->in.addrs[addrs_cntr_0] = *(struct nbtd_proxy_wins_addr *)pytalloc_get_ptr(PyList_GET_ITEM(py_addrs, addrs_cntr_0));
1592 static PyObject *unpack_py_nbtd_proxy_wins_release_demand_args_out(struct nbtd_proxy_wins_release_demand *r)
1600 static bool pack_py_kdc_check_generic_kerberos_args_in(PyObject *args, PyObject *kwargs, struct kdc_check_generic_kerberos *r)
1602 PyObject *py_generic_request;
1603 const char *kwnames[] = {
1604 "generic_request", NULL
1607 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:kdc_check_generic_kerberos", discard_const_p(char *, kwnames), &py_generic_request)) {
1611 r->in.generic_request = data_blob_talloc(r, PyString_AS_STRING(py_generic_request), PyString_GET_SIZE(py_generic_request));
1615 static PyObject *unpack_py_kdc_check_generic_kerberos_args_out(struct kdc_check_generic_kerberos *r)
1618 PyObject *py_generic_reply;
1619 py_generic_reply = PyString_FromStringAndSize((char *)(r->out.generic_reply).data, (r->out.generic_reply).length);
1620 result = py_generic_reply;
1624 static bool pack_py_smbsrv_information_args_in(PyObject *args, PyObject *kwargs, struct smbsrv_information *r)
1627 const char *kwnames[] = {
1631 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:smbsrv_information", discard_const_p(char *, kwnames), &py_level)) {
1635 if (PyLong_Check(py_level)) {
1636 r->in.level = PyLong_AsLongLong(py_level);
1637 } else if (PyInt_Check(py_level)) {
1638 r->in.level = PyInt_AsLong(py_level);
1640 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1641 PyInt_Type.tp_name, PyLong_Type.tp_name);
1647 static PyObject *unpack_py_smbsrv_information_args_out(struct smbsrv_information *r)
1651 py_info = py_import_smbsrv_info(r, r->in.level, &r->out.info);
1652 if (py_info == NULL) {
1659 static bool pack_py_samba_terminate_args_in(PyObject *args, PyObject *kwargs, struct samba_terminate *r)
1661 PyObject *py_reason;
1662 const char *kwnames[] = {
1666 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:samba_terminate", discard_const_p(char *, kwnames), &py_reason)) {
1670 r->in.reason = talloc_strdup(r, PyString_AS_STRING(py_reason));
1674 static PyObject *unpack_py_samba_terminate_args_out(struct samba_terminate *r)
1682 static bool pack_py_dreplsrv_refresh_args_in(PyObject *args, PyObject *kwargs, struct dreplsrv_refresh *r)
1684 const char *kwnames[] = {
1688 if (!PyArg_ParseTupleAndKeywords(args, kwargs, ":dreplsrv_refresh", discard_const_p(char *, kwnames))) {
1695 static PyObject *unpack_py_dreplsrv_refresh_args_out(struct dreplsrv_refresh *r)
1700 if (!W_ERROR_IS_OK(r->out.result)) {
1701 PyErr_SetWERROR(r->out.result);
1708 static bool pack_py_drepl_takeFSMORole_args_in(PyObject *args, PyObject *kwargs, struct drepl_takeFSMORole *r)
1711 const char *kwnames[] = {
1715 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:drepl_takeFSMORole", discard_const_p(char *, kwnames), &py_role)) {
1719 if (PyLong_Check(py_role)) {
1720 r->in.role = PyLong_AsLongLong(py_role);
1721 } else if (PyInt_Check(py_role)) {
1722 r->in.role = PyInt_AsLong(py_role);
1724 PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
1725 PyInt_Type.tp_name, PyLong_Type.tp_name);
1731 static PyObject *unpack_py_drepl_takeFSMORole_args_out(struct drepl_takeFSMORole *r)
1736 if (!W_ERROR_IS_OK(r->out.result)) {
1737 PyErr_SetWERROR(r->out.result);
1744 static bool pack_py_drepl_trigger_repl_secret_args_in(PyObject *args, PyObject *kwargs, struct drepl_trigger_repl_secret *r)
1746 PyObject *py_user_dn;
1747 const char *kwnames[] = {
1751 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:drepl_trigger_repl_secret", discard_const_p(char *, kwnames), &py_user_dn)) {
1755 r->in.user_dn = talloc_strdup(r, PyString_AS_STRING(py_user_dn));
1759 static PyObject *unpack_py_drepl_trigger_repl_secret_args_out(struct drepl_trigger_repl_secret *r)
1767 static bool pack_py_dnsupdate_RODC_args_in(PyObject *args, PyObject *kwargs, struct dnsupdate_RODC *r)
1769 PyObject *py_dom_sid;
1770 PyObject *py_site_name;
1771 PyObject *py_dns_ttl;
1772 PyObject *py_dns_names;
1773 const char *kwnames[] = {
1774 "dom_sid", "site_name", "dns_ttl", "dns_names", NULL
1777 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:dnsupdate_RODC", discard_const_p(char *, kwnames), &py_dom_sid, &py_site_name, &py_dns_ttl, &py_dns_names)) {
1781 if (py_dom_sid == Py_None) {
1782 r->in.dom_sid = NULL;
1784 r->in.dom_sid = NULL;
1785 PY_CHECK_TYPE(dom_sid_Type, py_dom_sid, return false;);
1786 if (talloc_reference(r, pytalloc_get_mem_ctx(py_dom_sid)) == NULL) {
1790 r->in.dom_sid = (struct dom_sid *)pytalloc_get_ptr(py_dom_sid);
1792 if (py_site_name == Py_None) {
1793 r->in.site_name = NULL;
1795 r->in.site_name = NULL;
1796 if (PyUnicode_Check(py_site_name)) {
1797 r->in.site_name = PyString_AS_STRING(PyUnicode_AsEncodedString(py_site_name, "utf-8", "ignore"));
1798 } else if (PyString_Check(py_site_name)) {
1799 r->in.site_name = PyString_AS_STRING(py_site_name);
1801 PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(py_site_name)->tp_name);
1805 PY_CHECK_TYPE(&PyInt_Type, py_dns_ttl, return false;);
1806 r->in.dns_ttl = PyInt_AsLong(py_dns_ttl);
1807 r->in.dns_names = talloc_ptrtype(r, r->in.dns_names);
1808 PY_CHECK_TYPE(NL_DNS_NAME_INFO_ARRAY_Type, py_dns_names, return false;);
1809 if (talloc_reference(r, pytalloc_get_mem_ctx(py_dns_names)) == NULL) {
1813 r->in.dns_names = (struct NL_DNS_NAME_INFO_ARRAY *)pytalloc_get_ptr(py_dns_names);
1817 static PyObject *unpack_py_dnsupdate_RODC_args_out(struct dnsupdate_RODC *r)
1820 PyObject *py_dns_names;
1821 py_dns_names = pytalloc_reference_ex(NL_DNS_NAME_INFO_ARRAY_Type, r->out.dns_names, r->out.dns_names);
1822 result = py_dns_names;
1823 if (NT_STATUS_IS_ERR(r->out.result)) {
1824 PyErr_SetNTSTATUS(r->out.result);
1831 const struct PyNdrRpcMethodDef py_ndr_irpc_methods[] = {
1832 { "uptime", "S.uptime() -> start_time", (py_dcerpc_call_fn)dcerpc_irpc_uptime_r, (py_data_pack_fn)pack_py_irpc_uptime_args_in, (py_data_unpack_fn)unpack_py_irpc_uptime_args_out, 0, &ndr_table_irpc },
1833 { "nbtd_information", "S.nbtd_information(level) -> info", (py_dcerpc_call_fn)dcerpc_nbtd_information_r, (py_data_pack_fn)pack_py_nbtd_information_args_in, (py_data_unpack_fn)unpack_py_nbtd_information_args_out, 1, &ndr_table_irpc },
1834 { "nbtd_getdcname", "S.nbtd_getdcname(domainname, ip_address, my_computername, my_accountname, account_control, domain_sid) -> dcname", (py_dcerpc_call_fn)dcerpc_nbtd_getdcname_r, (py_data_pack_fn)pack_py_nbtd_getdcname_args_in, (py_data_unpack_fn)unpack_py_nbtd_getdcname_args_out, 2, &ndr_table_irpc },
1835 { "nbtd_proxy_wins_challenge", "S.nbtd_proxy_wins_challenge(name, num_addrs, addrs) -> (num_addrs, addrs)", (py_dcerpc_call_fn)dcerpc_nbtd_proxy_wins_challenge_r, (py_data_pack_fn)pack_py_nbtd_proxy_wins_challenge_args_in, (py_data_unpack_fn)unpack_py_nbtd_proxy_wins_challenge_args_out, 3, &ndr_table_irpc },
1836 { "nbtd_proxy_wins_release_demand", "S.nbtd_proxy_wins_release_demand(name, num_addrs, addrs) -> None", (py_dcerpc_call_fn)dcerpc_nbtd_proxy_wins_release_demand_r, (py_data_pack_fn)pack_py_nbtd_proxy_wins_release_demand_args_in, (py_data_unpack_fn)unpack_py_nbtd_proxy_wins_release_demand_args_out, 4, &ndr_table_irpc },
1837 { "kdc_check_generic_kerberos", "S.kdc_check_generic_kerberos(generic_request) -> generic_reply", (py_dcerpc_call_fn)dcerpc_kdc_check_generic_kerberos_r, (py_data_pack_fn)pack_py_kdc_check_generic_kerberos_args_in, (py_data_unpack_fn)unpack_py_kdc_check_generic_kerberos_args_out, 5, &ndr_table_irpc },
1838 { "smbsrv_information", "S.smbsrv_information(level) -> info", (py_dcerpc_call_fn)dcerpc_smbsrv_information_r, (py_data_pack_fn)pack_py_smbsrv_information_args_in, (py_data_unpack_fn)unpack_py_smbsrv_information_args_out, 6, &ndr_table_irpc },
1839 { "samba_terminate", "S.samba_terminate(reason) -> None", (py_dcerpc_call_fn)dcerpc_samba_terminate_r, (py_data_pack_fn)pack_py_samba_terminate_args_in, (py_data_unpack_fn)unpack_py_samba_terminate_args_out, 7, &ndr_table_irpc },
1840 { "dreplsrv_refresh", "S.dreplsrv_refresh() -> None", (py_dcerpc_call_fn)dcerpc_dreplsrv_refresh_r, (py_data_pack_fn)pack_py_dreplsrv_refresh_args_in, (py_data_unpack_fn)unpack_py_dreplsrv_refresh_args_out, 8, &ndr_table_irpc },
1841 { "drepl_takeFSMORole", "S.drepl_takeFSMORole(role) -> None", (py_dcerpc_call_fn)dcerpc_drepl_takeFSMORole_r, (py_data_pack_fn)pack_py_drepl_takeFSMORole_args_in, (py_data_unpack_fn)unpack_py_drepl_takeFSMORole_args_out, 9, &ndr_table_irpc },
1842 { "drepl_trigger_repl_secret", "S.drepl_trigger_repl_secret(user_dn) -> None", (py_dcerpc_call_fn)dcerpc_drepl_trigger_repl_secret_r, (py_data_pack_fn)pack_py_drepl_trigger_repl_secret_args_in, (py_data_unpack_fn)unpack_py_drepl_trigger_repl_secret_args_out, 10, &ndr_table_irpc },
1843 { "dnsupdate_RODC", "S.dnsupdate_RODC(dom_sid, site_name, dns_ttl, dns_names) -> dns_names", (py_dcerpc_call_fn)dcerpc_dnsupdate_RODC_r, (py_data_pack_fn)pack_py_dnsupdate_RODC_args_in, (py_data_unpack_fn)unpack_py_dnsupdate_RODC_args_out, 11, &ndr_table_irpc },
1847 static PyObject *interface_irpc_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
1849 return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_irpc);
1852 static PyTypeObject irpc_InterfaceType = {
1853 PyObject_HEAD_INIT(NULL) 0,
1854 .tp_name = "irpc.irpc",
1855 .tp_basicsize = sizeof(dcerpc_InterfaceObject),
1856 .tp_doc = "irpc(binding, lp_ctx=None, credentials=None) -> connection\n"
1858 "binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n"
1859 "lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n"
1860 "credentials should be a credentials.Credentials object.\n\n",
1861 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1862 .tp_new = interface_irpc_new,
1865 static PyMethodDef irpc_methods[] = {
1866 { NULL, NULL, 0, NULL }
1872 PyObject *dep_samba_dcerpc_nbt;
1873 PyObject *dep_samba_dcerpc_security;
1874 PyObject *dep_talloc;
1875 PyObject *dep_samba_dcerpc_misc;
1876 PyObject *dep_samba_dcerpc_base;
1877 PyObject *dep_samba_dcerpc_netlogon;
1878 PyObject *dep_samba_dcerpc_server_id;
1880 dep_samba_dcerpc_nbt = PyImport_ImportModule("samba.dcerpc.nbt");
1881 if (dep_samba_dcerpc_nbt == NULL)
1884 dep_samba_dcerpc_security = PyImport_ImportModule("samba.dcerpc.security");
1885 if (dep_samba_dcerpc_security == NULL)
1888 dep_talloc = PyImport_ImportModule("talloc");
1889 if (dep_talloc == NULL)
1892 dep_samba_dcerpc_misc = PyImport_ImportModule("samba.dcerpc.misc");
1893 if (dep_samba_dcerpc_misc == NULL)
1896 dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base");
1897 if (dep_samba_dcerpc_base == NULL)
1900 dep_samba_dcerpc_netlogon = PyImport_ImportModule("samba.dcerpc.netlogon");
1901 if (dep_samba_dcerpc_netlogon == NULL)
1904 dep_samba_dcerpc_server_id = PyImport_ImportModule("samba.dcerpc.server_id");
1905 if (dep_samba_dcerpc_server_id == NULL)
1908 dom_sid_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_security, "dom_sid");
1909 if (dom_sid_Type == NULL)
1912 GUID_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_misc, "GUID");
1913 if (GUID_Type == NULL)
1916 ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection");
1917 if (ClientConnection_Type == NULL)
1920 security_token_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_security, "token");
1921 if (security_token_Type == NULL)
1924 server_id_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_server_id, "server_id");
1925 if (server_id_Type == NULL)
1928 NL_DNS_NAME_INFO_ARRAY_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_netlogon, "NL_DNS_NAME_INFO_ARRAY");
1929 if (NL_DNS_NAME_INFO_ARRAY_Type == NULL)
1932 Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object");
1933 if (Object_Type == NULL)
1936 nbt_name_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_nbt, "name");
1937 if (nbt_name_Type == NULL)
1940 irpc_creds_Type.tp_base = Object_Type;
1942 irpc_header_Type.tp_base = Object_Type;
1944 irpc_name_record_Type.tp_base = Object_Type;
1946 irpc_name_records_Type.tp_base = Object_Type;
1948 nbtd_statistics_Type.tp_base = Object_Type;
1950 nbtd_proxy_wins_addr_Type.tp_base = Object_Type;
1952 smbsrv_session_info_Type.tp_base = Object_Type;
1954 smbsrv_sessions_Type.tp_base = Object_Type;
1956 smbsrv_tcon_info_Type.tp_base = Object_Type;
1958 smbsrv_tcons_Type.tp_base = Object_Type;
1960 irpc_InterfaceType.tp_base = ClientConnection_Type;
1962 if (PyType_Ready(&irpc_creds_Type) < 0)
1964 if (PyType_Ready(&irpc_header_Type) < 0)
1966 if (PyType_Ready(&irpc_name_record_Type) < 0)
1968 if (PyType_Ready(&irpc_name_records_Type) < 0)
1970 if (PyType_Ready(&nbtd_statistics_Type) < 0)
1972 if (PyType_Ready(&nbtd_proxy_wins_addr_Type) < 0)
1974 if (PyType_Ready(&smbsrv_session_info_Type) < 0)
1976 if (PyType_Ready(&smbsrv_sessions_Type) < 0)
1978 if (PyType_Ready(&smbsrv_tcon_info_Type) < 0)
1980 if (PyType_Ready(&smbsrv_tcons_Type) < 0)
1982 if (PyType_Ready(&irpc_InterfaceType) < 0)
1984 if (!PyInterface_AddNdrRpcMethods(&irpc_InterfaceType, py_ndr_irpc_methods))
1987 #ifdef PY_CREDS_PATCH
1988 PY_CREDS_PATCH(&irpc_creds_Type);
1990 #ifdef PY_HEADER_PATCH
1991 PY_HEADER_PATCH(&irpc_header_Type);
1993 #ifdef PY_NAME_RECORD_PATCH
1994 PY_NAME_RECORD_PATCH(&irpc_name_record_Type);
1996 #ifdef PY_NAME_RECORDS_PATCH
1997 PY_NAME_RECORDS_PATCH(&irpc_name_records_Type);
1999 #ifdef PY_NBTD_STATISTICS_PATCH
2000 PY_NBTD_STATISTICS_PATCH(&nbtd_statistics_Type);
2002 #ifdef PY_NBTD_PROXY_WINS_ADDR_PATCH
2003 PY_NBTD_PROXY_WINS_ADDR_PATCH(&nbtd_proxy_wins_addr_Type);
2005 #ifdef PY_SMBSRV_SESSION_INFO_PATCH
2006 PY_SMBSRV_SESSION_INFO_PATCH(&smbsrv_session_info_Type);
2008 #ifdef PY_SMBSRV_SESSIONS_PATCH
2009 PY_SMBSRV_SESSIONS_PATCH(&smbsrv_sessions_Type);
2011 #ifdef PY_SMBSRV_TCON_INFO_PATCH
2012 PY_SMBSRV_TCON_INFO_PATCH(&smbsrv_tcon_info_Type);
2014 #ifdef PY_SMBSRV_TCONS_PATCH
2015 PY_SMBSRV_TCONS_PATCH(&smbsrv_tcons_Type);
2017 #ifdef PY_IRPC_PATCH
2018 PY_IRPC_PATCH(&irpc_InterfaceType);
2021 m = Py_InitModule3("irpc", irpc_methods, "irpc DCE/RPC");
2025 PyModule_AddObject(m, "DREPL_INFRASTRUCTURE_MASTER", PyInt_FromLong(DREPL_INFRASTRUCTURE_MASTER));
2026 PyModule_AddObject(m, "NBTD_INFO_STATISTICS", PyInt_FromLong(NBTD_INFO_STATISTICS));
2027 PyModule_AddObject(m, "DREPL_PDC_MASTER", PyInt_FromLong(DREPL_PDC_MASTER));
2028 PyModule_AddObject(m, "DREPL_SCHEMA_MASTER", PyInt_FromLong(DREPL_SCHEMA_MASTER));
2029 PyModule_AddObject(m, "DREPL_NAMING_MASTER", PyInt_FromLong(DREPL_NAMING_MASTER));
2030 PyModule_AddObject(m, "SMBSRV_INFO_TCONS", PyInt_FromLong(SMBSRV_INFO_TCONS));
2031 PyModule_AddObject(m, "SMBSRV_INFO_SESSIONS", PyInt_FromLong(SMBSRV_INFO_SESSIONS));
2032 PyModule_AddObject(m, "IRPC_FLAG_REPLY", PyInt_FromLong(IRPC_FLAG_REPLY));
2033 PyModule_AddObject(m, "DREPL_RID_MASTER", PyInt_FromLong(DREPL_RID_MASTER));
2034 Py_INCREF((PyObject *)(void *)&irpc_creds_Type);
2035 PyModule_AddObject(m, "creds", (PyObject *)(void *)&irpc_creds_Type);
2036 Py_INCREF((PyObject *)(void *)&irpc_header_Type);
2037 PyModule_AddObject(m, "header", (PyObject *)(void *)&irpc_header_Type);
2038 Py_INCREF((PyObject *)(void *)&irpc_name_record_Type);
2039 PyModule_AddObject(m, "name_record", (PyObject *)(void *)&irpc_name_record_Type);
2040 Py_INCREF((PyObject *)(void *)&irpc_name_records_Type);
2041 PyModule_AddObject(m, "name_records", (PyObject *)(void *)&irpc_name_records_Type);
2042 Py_INCREF((PyObject *)(void *)&nbtd_statistics_Type);
2043 PyModule_AddObject(m, "nbtd_statistics", (PyObject *)(void *)&nbtd_statistics_Type);
2044 Py_INCREF((PyObject *)(void *)&nbtd_proxy_wins_addr_Type);
2045 PyModule_AddObject(m, "nbtd_proxy_wins_addr", (PyObject *)(void *)&nbtd_proxy_wins_addr_Type);
2046 Py_INCREF((PyObject *)(void *)&smbsrv_session_info_Type);
2047 PyModule_AddObject(m, "smbsrv_session_info", (PyObject *)(void *)&smbsrv_session_info_Type);
2048 Py_INCREF((PyObject *)(void *)&smbsrv_sessions_Type);
2049 PyModule_AddObject(m, "smbsrv_sessions", (PyObject *)(void *)&smbsrv_sessions_Type);
2050 Py_INCREF((PyObject *)(void *)&smbsrv_tcon_info_Type);
2051 PyModule_AddObject(m, "smbsrv_tcon_info", (PyObject *)(void *)&smbsrv_tcon_info_Type);
2052 Py_INCREF((PyObject *)(void *)&smbsrv_tcons_Type);
2053 PyModule_AddObject(m, "smbsrv_tcons", (PyObject *)(void *)&smbsrv_tcons_Type);
2054 Py_INCREF((PyObject *)(void *)&irpc_InterfaceType);
2055 PyModule_AddObject(m, "irpc", (PyObject *)(void *)&irpc_InterfaceType);
2056 #ifdef PY_MOD_IRPC_PATCH
2057 PY_MOD_IRPC_PATCH(m);