~lefteris-nikoltsios/+junk/samba-lp1016895

« back to all changes in this revision

Viewing changes to source3/librpc/gen_ndr/py_preg.c

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/* Python wrapper functions auto-generated by pidl */
 
3
#include <Python.h>
 
4
#include "includes.h"
 
5
#include <pytalloc.h>
 
6
#include "librpc/rpc/pyrpc.h"
 
7
#include "librpc/rpc/pyrpc_util.h"
 
8
#include "librpc/gen_ndr/ndr_preg.h"
 
9
#include "librpc/gen_ndr/ndr_preg_c.h"
 
10
 
 
11
#include "librpc/gen_ndr/misc.h"
 
12
staticforward PyTypeObject preg_entry_Type;
 
13
staticforward PyTypeObject preg_header_Type;
 
14
staticforward PyTypeObject preg_file_Type;
 
15
staticforward PyTypeObject preg_InterfaceType;
 
16
 
 
17
void initpreg(void);static PyTypeObject *Object_Type;
 
18
static PyTypeObject *ClientConnection_Type;
 
19
 
 
20
static PyObject *py_preg_entry_get__opening_bracket(PyObject *obj, void *closure)
 
21
{
 
22
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
23
        PyObject *py__opening_bracket;
 
24
        if (object->_opening_bracket == NULL) {
 
25
                py__opening_bracket = Py_None;
 
26
                Py_INCREF(py__opening_bracket);
 
27
        } else {
 
28
                py__opening_bracket = PyUnicode_Decode(object->_opening_bracket, strlen(object->_opening_bracket), "utf-8", "ignore");
 
29
        }
 
30
        return py__opening_bracket;
 
31
}
 
32
 
 
33
static int py_preg_entry_set__opening_bracket(PyObject *py_obj, PyObject *value, void *closure)
 
34
{
 
35
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
36
        if (PyUnicode_Check(value)) {
 
37
                object->_opening_bracket = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
38
        } else if (PyString_Check(value)) {
 
39
                object->_opening_bracket = PyString_AS_STRING(value);
 
40
        } else {
 
41
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
42
                return -1;
 
43
        }
 
44
        return 0;
 
45
}
 
46
 
 
47
static PyObject *py_preg_entry_get_keyname(PyObject *obj, void *closure)
 
48
{
 
49
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
50
        PyObject *py_keyname;
 
51
        py_keyname = PyString_FromStringOrNULL(object->keyname);
 
52
        return py_keyname;
 
53
}
 
54
 
 
55
static int py_preg_entry_set_keyname(PyObject *py_obj, PyObject *value, void *closure)
 
56
{
 
57
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
58
        object->keyname = talloc_strdup(py_talloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
 
59
        return 0;
 
60
}
 
61
 
 
62
static PyObject *py_preg_entry_get__sep1(PyObject *obj, void *closure)
 
63
{
 
64
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
65
        PyObject *py__sep1;
 
66
        if (object->_sep1 == NULL) {
 
67
                py__sep1 = Py_None;
 
68
                Py_INCREF(py__sep1);
 
69
        } else {
 
70
                py__sep1 = PyUnicode_Decode(object->_sep1, strlen(object->_sep1), "utf-8", "ignore");
 
71
        }
 
72
        return py__sep1;
 
73
}
 
74
 
 
75
static int py_preg_entry_set__sep1(PyObject *py_obj, PyObject *value, void *closure)
 
76
{
 
77
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
78
        if (PyUnicode_Check(value)) {
 
79
                object->_sep1 = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
80
        } else if (PyString_Check(value)) {
 
81
                object->_sep1 = PyString_AS_STRING(value);
 
82
        } else {
 
83
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
84
                return -1;
 
85
        }
 
86
        return 0;
 
87
}
 
88
 
 
89
static PyObject *py_preg_entry_get_valuename(PyObject *obj, void *closure)
 
90
{
 
91
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
92
        PyObject *py_valuename;
 
93
        py_valuename = PyString_FromStringOrNULL(object->valuename);
 
94
        return py_valuename;
 
95
}
 
96
 
 
97
static int py_preg_entry_set_valuename(PyObject *py_obj, PyObject *value, void *closure)
 
98
{
 
99
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
100
        object->valuename = talloc_strdup(py_talloc_get_mem_ctx(py_obj), PyString_AS_STRING(value));
 
101
        return 0;
 
102
}
 
103
 
 
104
static PyObject *py_preg_entry_get__sep2(PyObject *obj, void *closure)
 
105
{
 
106
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
107
        PyObject *py__sep2;
 
108
        if (object->_sep2 == NULL) {
 
109
                py__sep2 = Py_None;
 
110
                Py_INCREF(py__sep2);
 
111
        } else {
 
112
                py__sep2 = PyUnicode_Decode(object->_sep2, strlen(object->_sep2), "utf-8", "ignore");
 
113
        }
 
114
        return py__sep2;
 
115
}
 
116
 
 
117
static int py_preg_entry_set__sep2(PyObject *py_obj, PyObject *value, void *closure)
 
118
{
 
119
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
120
        if (PyUnicode_Check(value)) {
 
121
                object->_sep2 = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
122
        } else if (PyString_Check(value)) {
 
123
                object->_sep2 = PyString_AS_STRING(value);
 
124
        } else {
 
125
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
126
                return -1;
 
127
        }
 
128
        return 0;
 
129
}
 
130
 
 
131
static PyObject *py_preg_entry_get_type(PyObject *obj, void *closure)
 
132
{
 
133
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
134
        PyObject *py_type;
 
135
        py_type = PyInt_FromLong(object->type);
 
136
        return py_type;
 
137
}
 
138
 
 
139
static int py_preg_entry_set_type(PyObject *py_obj, PyObject *value, void *closure)
 
140
{
 
141
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
142
        if (PyLong_Check(value)) {
 
143
                object->type = PyLong_AsLongLong(value);
 
144
        } else if (PyInt_Check(value)) {
 
145
                object->type = PyInt_AsLong(value);
 
146
        } else {
 
147
                PyErr_Format(PyExc_TypeError, "Expected type %s or %s",\
 
148
                  PyInt_Type.tp_name, PyLong_Type.tp_name);
 
149
                return -1;
 
150
        }
 
151
        return 0;
 
152
}
 
153
 
 
154
static PyObject *py_preg_entry_get__sep3(PyObject *obj, void *closure)
 
155
{
 
156
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
157
        PyObject *py__sep3;
 
158
        if (object->_sep3 == NULL) {
 
159
                py__sep3 = Py_None;
 
160
                Py_INCREF(py__sep3);
 
161
        } else {
 
162
                py__sep3 = PyUnicode_Decode(object->_sep3, strlen(object->_sep3), "utf-8", "ignore");
 
163
        }
 
164
        return py__sep3;
 
165
}
 
166
 
 
167
static int py_preg_entry_set__sep3(PyObject *py_obj, PyObject *value, void *closure)
 
168
{
 
169
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
170
        if (PyUnicode_Check(value)) {
 
171
                object->_sep3 = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
172
        } else if (PyString_Check(value)) {
 
173
                object->_sep3 = PyString_AS_STRING(value);
 
174
        } else {
 
175
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
176
                return -1;
 
177
        }
 
178
        return 0;
 
179
}
 
180
 
 
181
static PyObject *py_preg_entry_get_size(PyObject *obj, void *closure)
 
182
{
 
183
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
184
        PyObject *py_size;
 
185
        py_size = PyInt_FromLong(object->size);
 
186
        return py_size;
 
187
}
 
188
 
 
189
static int py_preg_entry_set_size(PyObject *py_obj, PyObject *value, void *closure)
 
190
{
 
191
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
192
        PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
 
193
        object->size = PyInt_AsLong(value);
 
194
        return 0;
 
195
}
 
196
 
 
197
static PyObject *py_preg_entry_get__sep4(PyObject *obj, void *closure)
 
198
{
 
199
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
200
        PyObject *py__sep4;
 
201
        if (object->_sep4 == NULL) {
 
202
                py__sep4 = Py_None;
 
203
                Py_INCREF(py__sep4);
 
204
        } else {
 
205
                py__sep4 = PyUnicode_Decode(object->_sep4, strlen(object->_sep4), "utf-8", "ignore");
 
206
        }
 
207
        return py__sep4;
 
208
}
 
209
 
 
210
static int py_preg_entry_set__sep4(PyObject *py_obj, PyObject *value, void *closure)
 
211
{
 
212
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
213
        if (PyUnicode_Check(value)) {
 
214
                object->_sep4 = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
215
        } else if (PyString_Check(value)) {
 
216
                object->_sep4 = PyString_AS_STRING(value);
 
217
        } else {
 
218
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
219
                return -1;
 
220
        }
 
221
        return 0;
 
222
}
 
223
 
 
224
static PyObject *py_preg_entry_get_data(PyObject *obj, void *closure)
 
225
{
 
226
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
227
        PyObject *py_data;
 
228
        py_data = PyList_New(object->size);
 
229
        if (py_data == NULL) {
 
230
                return NULL;
 
231
        }
 
232
        {
 
233
                int data_cntr_0;
 
234
                for (data_cntr_0 = 0; data_cntr_0 < object->size; data_cntr_0++) {
 
235
                        PyObject *py_data_0;
 
236
                        py_data_0 = PyInt_FromLong(object->data[data_cntr_0]);
 
237
                        PyList_SetItem(py_data, data_cntr_0, py_data_0);
 
238
                }
 
239
        }
 
240
        return py_data;
 
241
}
 
242
 
 
243
static int py_preg_entry_set_data(PyObject *py_obj, PyObject *value, void *closure)
 
244
{
 
245
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
246
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
 
247
        {
 
248
                int data_cntr_0;
 
249
                object->data = talloc_array_ptrtype(py_talloc_get_mem_ctx(py_obj), object->data, PyList_GET_SIZE(value));
 
250
                if (!object->data) { return -1;; }
 
251
                talloc_set_name_const(object->data, "ARRAY: object->data");
 
252
                for (data_cntr_0 = 0; data_cntr_0 < PyList_GET_SIZE(value); data_cntr_0++) {
 
253
                        PY_CHECK_TYPE(&PyInt_Type, PyList_GET_ITEM(value, data_cntr_0), return -1;);
 
254
                        object->data[data_cntr_0] = PyInt_AsLong(PyList_GET_ITEM(value, data_cntr_0));
 
255
                }
 
256
        }
 
257
        return 0;
 
258
}
 
259
 
 
260
static PyObject *py_preg_entry_get__closing_bracket(PyObject *obj, void *closure)
 
261
{
 
262
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(obj);
 
263
        PyObject *py__closing_bracket;
 
264
        if (object->_closing_bracket == NULL) {
 
265
                py__closing_bracket = Py_None;
 
266
                Py_INCREF(py__closing_bracket);
 
267
        } else {
 
268
                py__closing_bracket = PyUnicode_Decode(object->_closing_bracket, strlen(object->_closing_bracket), "utf-8", "ignore");
 
269
        }
 
270
        return py__closing_bracket;
 
271
}
 
272
 
 
273
static int py_preg_entry_set__closing_bracket(PyObject *py_obj, PyObject *value, void *closure)
 
274
{
 
275
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
276
        if (PyUnicode_Check(value)) {
 
277
                object->_closing_bracket = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
278
        } else if (PyString_Check(value)) {
 
279
                object->_closing_bracket = PyString_AS_STRING(value);
 
280
        } else {
 
281
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
282
                return -1;
 
283
        }
 
284
        return 0;
 
285
}
 
286
 
 
287
static PyGetSetDef py_preg_entry_getsetters[] = {
 
288
        { discard_const_p(char, "_opening_bracket"), py_preg_entry_get__opening_bracket, py_preg_entry_set__opening_bracket },
 
289
        { discard_const_p(char, "keyname"), py_preg_entry_get_keyname, py_preg_entry_set_keyname },
 
290
        { discard_const_p(char, "_sep1"), py_preg_entry_get__sep1, py_preg_entry_set__sep1 },
 
291
        { discard_const_p(char, "valuename"), py_preg_entry_get_valuename, py_preg_entry_set_valuename },
 
292
        { discard_const_p(char, "_sep2"), py_preg_entry_get__sep2, py_preg_entry_set__sep2 },
 
293
        { discard_const_p(char, "type"), py_preg_entry_get_type, py_preg_entry_set_type },
 
294
        { discard_const_p(char, "_sep3"), py_preg_entry_get__sep3, py_preg_entry_set__sep3 },
 
295
        { discard_const_p(char, "size"), py_preg_entry_get_size, py_preg_entry_set_size },
 
296
        { discard_const_p(char, "_sep4"), py_preg_entry_get__sep4, py_preg_entry_set__sep4 },
 
297
        { discard_const_p(char, "data"), py_preg_entry_get_data, py_preg_entry_set_data },
 
298
        { discard_const_p(char, "_closing_bracket"), py_preg_entry_get__closing_bracket, py_preg_entry_set__closing_bracket },
 
299
        { NULL }
 
300
};
 
301
 
 
302
static PyObject *py_preg_entry_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 
303
{
 
304
        return py_talloc_new(struct preg_entry, type);
 
305
}
 
306
 
 
307
static PyObject *py_preg_entry_ndr_pack(PyObject *py_obj)
 
308
{
 
309
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
310
        DATA_BLOB blob;
 
311
        enum ndr_err_code err;
 
312
        err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_preg_entry);
 
313
        if (err != NDR_ERR_SUCCESS) {
 
314
                PyErr_SetNdrError(err);
 
315
                return NULL;
 
316
        }
 
317
 
 
318
        return PyString_FromStringAndSize((char *)blob.data, blob.length);
 
319
}
 
320
 
 
321
static PyObject *py_preg_entry_ndr_unpack(PyObject *py_obj, PyObject *args)
 
322
{
 
323
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
324
        DATA_BLOB blob;
 
325
        enum ndr_err_code err;
 
326
        if (!PyArg_ParseTuple(args, "s#:__ndr_unpack__", &blob.data, &blob.length))
 
327
                return NULL;
 
328
 
 
329
        err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_preg_entry);
 
330
        if (err != NDR_ERR_SUCCESS) {
 
331
                PyErr_SetNdrError(err);
 
332
                return NULL;
 
333
        }
 
334
 
 
335
        Py_RETURN_NONE;
 
336
}
 
337
 
 
338
static PyObject *py_preg_entry_ndr_print(PyObject *py_obj)
 
339
{
 
340
        struct preg_entry *object = (struct preg_entry *)py_talloc_get_ptr(py_obj);
 
341
        PyObject *ret;
 
342
        char *retstr;
 
343
 
 
344
        retstr = ndr_print_struct_string(py_talloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_preg_entry, "preg_entry", object);
 
345
        ret = PyString_FromString(retstr);
 
346
        talloc_free(retstr);
 
347
 
 
348
        return ret;
 
349
}
 
350
 
 
351
static PyMethodDef py_preg_entry_methods[] = {
 
352
        { "__ndr_pack__", (PyCFunction)py_preg_entry_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
 
353
        { "__ndr_unpack__", (PyCFunction)py_preg_entry_ndr_unpack, METH_VARARGS, "S.ndr_unpack(class, blob) -> None\nNDR unpack" },
 
354
        { "__ndr_print__", (PyCFunction)py_preg_entry_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
 
355
        { NULL, NULL, 0, NULL }
 
356
};
 
357
 
 
358
 
 
359
static PyTypeObject preg_entry_Type = {
 
360
        PyObject_HEAD_INIT(NULL) 0,
 
361
        .tp_name = "preg.entry",
 
362
        .tp_getset = py_preg_entry_getsetters,
 
363
        .tp_methods = py_preg_entry_methods,
 
364
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
 
365
        .tp_basicsize = sizeof(py_talloc_Object),
 
366
        .tp_new = py_preg_entry_new,
 
367
};
 
368
 
 
369
 
 
370
static PyObject *py_preg_header_get_signature(PyObject *obj, void *closure)
 
371
{
 
372
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(obj);
 
373
        PyObject *py_signature;
 
374
        if (object->signature == NULL) {
 
375
                py_signature = Py_None;
 
376
                Py_INCREF(py_signature);
 
377
        } else {
 
378
                py_signature = PyUnicode_Decode(object->signature, strlen(object->signature), "utf-8", "ignore");
 
379
        }
 
380
        return py_signature;
 
381
}
 
382
 
 
383
static int py_preg_header_set_signature(PyObject *py_obj, PyObject *value, void *closure)
 
384
{
 
385
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(py_obj);
 
386
        if (PyUnicode_Check(value)) {
 
387
                object->signature = PyString_AS_STRING(PyUnicode_AsEncodedString(value, "utf-8", "ignore"));
 
388
        } else if (PyString_Check(value)) {
 
389
                object->signature = PyString_AS_STRING(value);
 
390
        } else {
 
391
                PyErr_Format(PyExc_TypeError, "Expected string or unicode object, got %s", Py_TYPE(value)->tp_name);
 
392
                return -1;
 
393
        }
 
394
        return 0;
 
395
}
 
396
 
 
397
static PyObject *py_preg_header_get_version(PyObject *obj, void *closure)
 
398
{
 
399
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(obj);
 
400
        PyObject *py_version;
 
401
        py_version = PyInt_FromLong(object->version);
 
402
        return py_version;
 
403
}
 
404
 
 
405
static int py_preg_header_set_version(PyObject *py_obj, PyObject *value, void *closure)
 
406
{
 
407
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(py_obj);
 
408
        PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
 
409
        object->version = PyInt_AsLong(value);
 
410
        return 0;
 
411
}
 
412
 
 
413
static PyGetSetDef py_preg_header_getsetters[] = {
 
414
        { discard_const_p(char, "signature"), py_preg_header_get_signature, py_preg_header_set_signature },
 
415
        { discard_const_p(char, "version"), py_preg_header_get_version, py_preg_header_set_version },
 
416
        { NULL }
 
417
};
 
418
 
 
419
static PyObject *py_preg_header_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 
420
{
 
421
        return py_talloc_new(struct preg_header, type);
 
422
}
 
423
 
 
424
static PyObject *py_preg_header_ndr_pack(PyObject *py_obj)
 
425
{
 
426
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(py_obj);
 
427
        DATA_BLOB blob;
 
428
        enum ndr_err_code err;
 
429
        err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_preg_header);
 
430
        if (err != NDR_ERR_SUCCESS) {
 
431
                PyErr_SetNdrError(err);
 
432
                return NULL;
 
433
        }
 
434
 
 
435
        return PyString_FromStringAndSize((char *)blob.data, blob.length);
 
436
}
 
437
 
 
438
static PyObject *py_preg_header_ndr_unpack(PyObject *py_obj, PyObject *args)
 
439
{
 
440
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(py_obj);
 
441
        DATA_BLOB blob;
 
442
        enum ndr_err_code err;
 
443
        if (!PyArg_ParseTuple(args, "s#:__ndr_unpack__", &blob.data, &blob.length))
 
444
                return NULL;
 
445
 
 
446
        err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_preg_header);
 
447
        if (err != NDR_ERR_SUCCESS) {
 
448
                PyErr_SetNdrError(err);
 
449
                return NULL;
 
450
        }
 
451
 
 
452
        Py_RETURN_NONE;
 
453
}
 
454
 
 
455
static PyObject *py_preg_header_ndr_print(PyObject *py_obj)
 
456
{
 
457
        struct preg_header *object = (struct preg_header *)py_talloc_get_ptr(py_obj);
 
458
        PyObject *ret;
 
459
        char *retstr;
 
460
 
 
461
        retstr = ndr_print_struct_string(py_talloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_preg_header, "preg_header", object);
 
462
        ret = PyString_FromString(retstr);
 
463
        talloc_free(retstr);
 
464
 
 
465
        return ret;
 
466
}
 
467
 
 
468
static PyMethodDef py_preg_header_methods[] = {
 
469
        { "__ndr_pack__", (PyCFunction)py_preg_header_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
 
470
        { "__ndr_unpack__", (PyCFunction)py_preg_header_ndr_unpack, METH_VARARGS, "S.ndr_unpack(class, blob) -> None\nNDR unpack" },
 
471
        { "__ndr_print__", (PyCFunction)py_preg_header_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
 
472
        { NULL, NULL, 0, NULL }
 
473
};
 
474
 
 
475
 
 
476
static PyTypeObject preg_header_Type = {
 
477
        PyObject_HEAD_INIT(NULL) 0,
 
478
        .tp_name = "preg.header",
 
479
        .tp_getset = py_preg_header_getsetters,
 
480
        .tp_methods = py_preg_header_methods,
 
481
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
 
482
        .tp_basicsize = sizeof(py_talloc_Object),
 
483
        .tp_new = py_preg_header_new,
 
484
};
 
485
 
 
486
 
 
487
static PyObject *py_preg_file_get_header(PyObject *obj, void *closure)
 
488
{
 
489
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(obj);
 
490
        PyObject *py_header;
 
491
        py_header = py_talloc_reference_ex(&preg_header_Type, py_talloc_get_mem_ctx(obj), &object->header);
 
492
        return py_header;
 
493
}
 
494
 
 
495
static int py_preg_file_set_header(PyObject *py_obj, PyObject *value, void *closure)
 
496
{
 
497
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
498
        PY_CHECK_TYPE(&preg_header_Type, value, return -1;);
 
499
        if (talloc_reference(py_talloc_get_mem_ctx(py_obj), py_talloc_get_mem_ctx(value)) == NULL) {
 
500
                PyErr_NoMemory();
 
501
                return -1;
 
502
        }
 
503
        object->header = *(struct preg_header *)py_talloc_get_ptr(value);
 
504
        return 0;
 
505
}
 
506
 
 
507
static PyObject *py_preg_file_get_num_entries(PyObject *obj, void *closure)
 
508
{
 
509
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(obj);
 
510
        PyObject *py_num_entries;
 
511
        py_num_entries = PyInt_FromLong(object->num_entries);
 
512
        return py_num_entries;
 
513
}
 
514
 
 
515
static int py_preg_file_set_num_entries(PyObject *py_obj, PyObject *value, void *closure)
 
516
{
 
517
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
518
        PY_CHECK_TYPE(&PyInt_Type, value, return -1;);
 
519
        object->num_entries = PyInt_AsLong(value);
 
520
        return 0;
 
521
}
 
522
 
 
523
static PyObject *py_preg_file_get_entries(PyObject *obj, void *closure)
 
524
{
 
525
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(obj);
 
526
        PyObject *py_entries;
 
527
        py_entries = PyList_New(object->num_entries);
 
528
        if (py_entries == NULL) {
 
529
                return NULL;
 
530
        }
 
531
        {
 
532
                int entries_cntr_0;
 
533
                for (entries_cntr_0 = 0; entries_cntr_0 < object->num_entries; entries_cntr_0++) {
 
534
                        PyObject *py_entries_0;
 
535
                        py_entries_0 = py_talloc_reference_ex(&preg_entry_Type, object->entries, &object->entries[entries_cntr_0]);
 
536
                        PyList_SetItem(py_entries, entries_cntr_0, py_entries_0);
 
537
                }
 
538
        }
 
539
        return py_entries;
 
540
}
 
541
 
 
542
static int py_preg_file_set_entries(PyObject *py_obj, PyObject *value, void *closure)
 
543
{
 
544
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
545
        PY_CHECK_TYPE(&PyList_Type, value, return -1;);
 
546
        {
 
547
                int entries_cntr_0;
 
548
                object->entries = talloc_array_ptrtype(py_talloc_get_mem_ctx(py_obj), object->entries, PyList_GET_SIZE(value));
 
549
                if (!object->entries) { return -1;; }
 
550
                talloc_set_name_const(object->entries, "ARRAY: object->entries");
 
551
                for (entries_cntr_0 = 0; entries_cntr_0 < PyList_GET_SIZE(value); entries_cntr_0++) {
 
552
                        PY_CHECK_TYPE(&preg_entry_Type, PyList_GET_ITEM(value, entries_cntr_0), return -1;);
 
553
                        if (talloc_reference(object->entries, py_talloc_get_mem_ctx(PyList_GET_ITEM(value, entries_cntr_0))) == NULL) {
 
554
                                PyErr_NoMemory();
 
555
                                return -1;
 
556
                        }
 
557
                        object->entries[entries_cntr_0] = *(struct preg_entry *)py_talloc_get_ptr(PyList_GET_ITEM(value, entries_cntr_0));
 
558
                }
 
559
        }
 
560
        return 0;
 
561
}
 
562
 
 
563
static PyGetSetDef py_preg_file_getsetters[] = {
 
564
        { discard_const_p(char, "header"), py_preg_file_get_header, py_preg_file_set_header },
 
565
        { discard_const_p(char, "num_entries"), py_preg_file_get_num_entries, py_preg_file_set_num_entries },
 
566
        { discard_const_p(char, "entries"), py_preg_file_get_entries, py_preg_file_set_entries },
 
567
        { NULL }
 
568
};
 
569
 
 
570
static PyObject *py_preg_file_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 
571
{
 
572
        return py_talloc_new(struct preg_file, type);
 
573
}
 
574
 
 
575
static PyObject *py_preg_file_ndr_pack(PyObject *py_obj)
 
576
{
 
577
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
578
        DATA_BLOB blob;
 
579
        enum ndr_err_code err;
 
580
        err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_push_flags_fn_t)ndr_push_preg_file);
 
581
        if (err != NDR_ERR_SUCCESS) {
 
582
                PyErr_SetNdrError(err);
 
583
                return NULL;
 
584
        }
 
585
 
 
586
        return PyString_FromStringAndSize((char *)blob.data, blob.length);
 
587
}
 
588
 
 
589
static PyObject *py_preg_file_ndr_unpack(PyObject *py_obj, PyObject *args)
 
590
{
 
591
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
592
        DATA_BLOB blob;
 
593
        enum ndr_err_code err;
 
594
        if (!PyArg_ParseTuple(args, "s#:__ndr_unpack__", &blob.data, &blob.length))
 
595
                return NULL;
 
596
 
 
597
        err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), object, (ndr_pull_flags_fn_t)ndr_pull_preg_file);
 
598
        if (err != NDR_ERR_SUCCESS) {
 
599
                PyErr_SetNdrError(err);
 
600
                return NULL;
 
601
        }
 
602
 
 
603
        Py_RETURN_NONE;
 
604
}
 
605
 
 
606
static PyObject *py_preg_file_ndr_print(PyObject *py_obj)
 
607
{
 
608
        struct preg_file *object = (struct preg_file *)py_talloc_get_ptr(py_obj);
 
609
        PyObject *ret;
 
610
        char *retstr;
 
611
 
 
612
        retstr = ndr_print_struct_string(py_talloc_get_mem_ctx(py_obj), (ndr_print_fn_t)ndr_print_preg_file, "preg_file", object);
 
613
        ret = PyString_FromString(retstr);
 
614
        talloc_free(retstr);
 
615
 
 
616
        return ret;
 
617
}
 
618
 
 
619
static PyMethodDef py_preg_file_methods[] = {
 
620
        { "__ndr_pack__", (PyCFunction)py_preg_file_ndr_pack, METH_NOARGS, "S.ndr_pack(object) -> blob\nNDR pack" },
 
621
        { "__ndr_unpack__", (PyCFunction)py_preg_file_ndr_unpack, METH_VARARGS, "S.ndr_unpack(class, blob) -> None\nNDR unpack" },
 
622
        { "__ndr_print__", (PyCFunction)py_preg_file_ndr_print, METH_VARARGS, "S.ndr_print(object) -> None\nNDR print" },
 
623
        { NULL, NULL, 0, NULL }
 
624
};
 
625
 
 
626
 
 
627
static PyTypeObject preg_file_Type = {
 
628
        PyObject_HEAD_INIT(NULL) 0,
 
629
        .tp_name = "preg.file",
 
630
        .tp_getset = py_preg_file_getsetters,
 
631
        .tp_methods = py_preg_file_methods,
 
632
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
 
633
        .tp_basicsize = sizeof(py_talloc_Object),
 
634
        .tp_new = py_preg_file_new,
 
635
};
 
636
 
 
637
 
 
638
static bool pack_py_decode_preg_file_args_in(PyObject *args, PyObject *kwargs, struct decode_preg_file *r)
 
639
{
 
640
        PyObject *py_file;
 
641
        const char *kwnames[] = {
 
642
                "file", NULL
 
643
        };
 
644
 
 
645
        if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:decode_preg_file", discard_const_p(char *, kwnames), &py_file)) {
 
646
                return false;
 
647
        }
 
648
 
 
649
        PY_CHECK_TYPE(&preg_file_Type, py_file, return false;);
 
650
        if (talloc_reference(r, py_talloc_get_mem_ctx(py_file)) == NULL) {
 
651
                PyErr_NoMemory();
 
652
                return false;
 
653
        }
 
654
        r->in.file = *(struct preg_file *)py_talloc_get_ptr(py_file);
 
655
        return true;
 
656
}
 
657
 
 
658
static PyObject *unpack_py_decode_preg_file_args_out(struct decode_preg_file *r)
 
659
{
 
660
        PyObject *result;
 
661
        result = Py_None;
 
662
        Py_INCREF(result);
 
663
        return result;
 
664
}
 
665
 
 
666
const struct PyNdrRpcMethodDef py_ndr_preg_methods[] = {
 
667
        { "decode_preg_file", "S.decode_preg_file(file) -> None", (py_dcerpc_call_fn)dcerpc_decode_preg_file_r, (py_data_pack_fn)pack_py_decode_preg_file_args_in, (py_data_unpack_fn)unpack_py_decode_preg_file_args_out, 0, &ndr_table_preg },
 
668
        { NULL }
 
669
};
 
670
 
 
671
static PyObject *interface_preg_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 
672
{
 
673
        return py_dcerpc_interface_init_helper(type, args, kwargs, &ndr_table_preg);
 
674
}
 
675
 
 
676
#define PY_DOC_PREG "PReg structure"
 
677
static PyTypeObject preg_InterfaceType = {
 
678
        PyObject_HEAD_INIT(NULL) 0,
 
679
        .tp_name = "preg.preg",
 
680
        .tp_basicsize = sizeof(dcerpc_InterfaceObject),
 
681
        .tp_doc = "preg(binding, lp_ctx=None, credentials=None) -> connection\n"
 
682
"\n"
 
683
"binding should be a DCE/RPC binding string (for example: ncacn_ip_tcp:127.0.0.1)\n"
 
684
"lp_ctx should be a path to a smb.conf file or a param.LoadParm object\n"
 
685
"credentials should be a credentials.Credentials object.\n\n"PY_DOC_PREG,
 
686
        .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
 
687
        .tp_new = interface_preg_new,
 
688
};
 
689
 
 
690
static PyMethodDef preg_methods[] = {
 
691
        { NULL, NULL, 0, NULL }
 
692
};
 
693
 
 
694
void initpreg(void)
 
695
{
 
696
        PyObject *m;
 
697
        PyObject *dep_talloc;
 
698
        PyObject *dep_samba_dcerpc_misc;
 
699
        PyObject *dep_samba_dcerpc_base;
 
700
 
 
701
        dep_talloc = PyImport_ImportModule("talloc");
 
702
        if (dep_talloc == NULL)
 
703
                return;
 
704
 
 
705
        dep_samba_dcerpc_misc = PyImport_ImportModule("samba.dcerpc.misc");
 
706
        if (dep_samba_dcerpc_misc == NULL)
 
707
                return;
 
708
 
 
709
        dep_samba_dcerpc_base = PyImport_ImportModule("samba.dcerpc.base");
 
710
        if (dep_samba_dcerpc_base == NULL)
 
711
                return;
 
712
 
 
713
        Object_Type = (PyTypeObject *)PyObject_GetAttrString(dep_talloc, "Object");
 
714
        if (Object_Type == NULL)
 
715
                return;
 
716
 
 
717
        ClientConnection_Type = (PyTypeObject *)PyObject_GetAttrString(dep_samba_dcerpc_base, "ClientConnection");
 
718
        if (ClientConnection_Type == NULL)
 
719
                return;
 
720
 
 
721
        preg_entry_Type.tp_base = Object_Type;
 
722
 
 
723
        preg_header_Type.tp_base = Object_Type;
 
724
 
 
725
        preg_file_Type.tp_base = Object_Type;
 
726
 
 
727
        preg_InterfaceType.tp_base = ClientConnection_Type;
 
728
 
 
729
        if (PyType_Ready(&preg_entry_Type) < 0)
 
730
                return;
 
731
        if (PyType_Ready(&preg_header_Type) < 0)
 
732
                return;
 
733
        if (PyType_Ready(&preg_file_Type) < 0)
 
734
                return;
 
735
        if (PyType_Ready(&preg_InterfaceType) < 0)
 
736
                return;
 
737
        if (!PyInterface_AddNdrRpcMethods(&preg_InterfaceType, py_ndr_preg_methods))
 
738
                return;
 
739
 
 
740
#ifdef PY_ENTRY_PATCH
 
741
        PY_ENTRY_PATCH(&preg_entry_Type);
 
742
#endif
 
743
#ifdef PY_HEADER_PATCH
 
744
        PY_HEADER_PATCH(&preg_header_Type);
 
745
#endif
 
746
#ifdef PY_FILE_PATCH
 
747
        PY_FILE_PATCH(&preg_file_Type);
 
748
#endif
 
749
#ifdef PY_PREG_PATCH
 
750
        PY_PREG_PATCH(&preg_InterfaceType);
 
751
#endif
 
752
 
 
753
        m = Py_InitModule3("preg", preg_methods, "preg DCE/RPC");
 
754
        if (m == NULL)
 
755
                return;
 
756
 
 
757
        Py_INCREF((PyObject *)(void *)&preg_entry_Type);
 
758
        PyModule_AddObject(m, "entry", (PyObject *)(void *)&preg_entry_Type);
 
759
        Py_INCREF((PyObject *)(void *)&preg_header_Type);
 
760
        PyModule_AddObject(m, "header", (PyObject *)(void *)&preg_header_Type);
 
761
        Py_INCREF((PyObject *)(void *)&preg_file_Type);
 
762
        PyModule_AddObject(m, "file", (PyObject *)(void *)&preg_file_Type);
 
763
        Py_INCREF((PyObject *)(void *)&preg_InterfaceType);
 
764
        PyModule_AddObject(m, "preg", (PyObject *)(void *)&preg_InterfaceType);
 
765
#ifdef PY_MOD_PREG_PATCH
 
766
        PY_MOD_PREG_PATCH(m);
 
767
#endif
 
768
 
 
769
}