git add -f bin/default/librpc/gen_ndr/*.[ch] bin/default/source*/librpc/gen_ndr/...
[metze/samba/wip.git] / bin.gen_ndr / default / librpc / gen_ndr / srv_nbt.c
1 /*
2  * Unix SMB/CIFS implementation.
3  * server auto-generated by pidl. DO NOT MODIFY!
4  */
5
6 #include "includes.h"
7 #include "ntdomain.h"
8 #include "bin/default/librpc/gen_ndr/srv_nbt.h"
9
10 static bool api_decode_nbt_netlogon_packet(struct pipes_struct *p)
11 {
12         const struct ndr_interface_call *call;
13         struct ndr_pull *pull;
14         struct ndr_push *push;
15         enum ndr_err_code ndr_err;
16         struct decode_nbt_netlogon_packet *r;
17
18         call = &ndr_table_nbt.calls[NDR_DECODE_NBT_NETLOGON_PACKET];
19
20         r = talloc(talloc_tos(), struct decode_nbt_netlogon_packet);
21         if (r == NULL) {
22                 return false;
23         }
24
25         pull = ndr_pull_init_blob(&p->in_data.data, r);
26         if (pull == NULL) {
27                 talloc_free(r);
28                 return false;
29         }
30
31         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
32         if (p->endian) {
33                 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
34         }
35         ndr_err = call->ndr_pull(pull, NDR_IN, r);
36         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
37                 talloc_free(r);
38                 return false;
39         }
40
41         if (DEBUGLEVEL >= 10) {
42                 NDR_PRINT_FUNCTION_DEBUG(decode_nbt_netlogon_packet, NDR_IN, r);
43         }
44
45         _decode_nbt_netlogon_packet(p, r);
46
47         if (p->fault_state) {
48                 talloc_free(r);
49                 /* Return true here, srv_pipe_hnd.c will take care */
50                 return true;
51         }
52
53         if (DEBUGLEVEL >= 10) {
54                 NDR_PRINT_FUNCTION_DEBUG(decode_nbt_netlogon_packet, NDR_OUT | NDR_SET_VALUES, r);
55         }
56
57         push = ndr_push_init_ctx(r);
58         if (push == NULL) {
59                 talloc_free(r);
60                 return false;
61         }
62
63         /*
64          * carry over the pointer count to the reply in case we are
65          * using full pointer. See NDR specification for full pointers
66          */
67         push->ptr_count = pull->ptr_count;
68
69         ndr_err = call->ndr_push(push, NDR_OUT, r);
70         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
71                 talloc_free(r);
72                 return false;
73         }
74
75         p->out_data.rdata = ndr_push_blob(push);
76         talloc_steal(p->mem_ctx, p->out_data.rdata.data);
77
78         talloc_free(r);
79
80         return true;
81 }
82
83
84 /* Tables */
85 static struct api_struct api_nbt_cmds[] = 
86 {
87         {"DECODE_NBT_NETLOGON_PACKET", NDR_DECODE_NBT_NETLOGON_PACKET, api_decode_nbt_netlogon_packet},
88 };
89
90 void nbt_get_pipe_fns(struct api_struct **fns, int *n_fns)
91 {
92         *fns = api_nbt_cmds;
93         *n_fns = sizeof(api_nbt_cmds) / sizeof(struct api_struct);
94 }
95
96 NTSTATUS rpc_nbt_init(const struct rpc_srv_callbacks *rpc_srv_cb)
97 {
98         return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "nbt", "nbt", &ndr_table_nbt, api_nbt_cmds, sizeof(api_nbt_cmds) / sizeof(struct api_struct), rpc_srv_cb);
99 }
100
101 NTSTATUS rpc_nbt_shutdown(void)
102 {
103         return rpc_srv_unregister(&ndr_table_nbt);
104 }