2 * Unix SMB/CIFS implementation.
3 * NetApi Server Support
4 * Copyright (C) Guenther Deschner 2007
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
22 #include "librpc/gen_ndr/libnetapi.h"
23 #include "lib/netapi/netapi.h"
24 #include "lib/netapi/netapi_private.h"
25 #include "lib/netapi/libnetapi.h"
26 #include "libnet/libnet.h"
27 #include "../librpc/gen_ndr/cli_srvsvc.h"
29 /****************************************************************
30 ****************************************************************/
32 static WERROR
NetServerGetInfo_l_101(struct libnetapi_ctx
*ctx
,
35 struct SERVER_INFO_101 i
;
37 i
.sv101_platform_id
= PLATFORM_ID_NT
;
38 i
.sv101_name
= global_myname();
39 i
.sv101_version_major
= lp_major_announce_version();
40 i
.sv101_version_minor
= lp_minor_announce_version();
41 i
.sv101_type
= lp_default_server_announce();
42 i
.sv101_comment
= lp_serverstring();
44 *buffer
= (uint8_t *)talloc_memdup(ctx
, &i
, sizeof(i
));
52 /****************************************************************
53 ****************************************************************/
55 static WERROR
NetServerGetInfo_l_1005(struct libnetapi_ctx
*ctx
,
58 struct SERVER_INFO_1005 info1005
;
60 info1005
.sv1005_comment
= lp_serverstring();
61 *buffer
= (uint8_t *)talloc_memdup(ctx
, &info1005
, sizeof(info1005
));
69 /****************************************************************
70 ****************************************************************/
72 WERROR
NetServerGetInfo_l(struct libnetapi_ctx
*ctx
,
73 struct NetServerGetInfo
*r
)
75 switch (r
->in
.level
) {
77 return NetServerGetInfo_l_101(ctx
, r
->out
.buffer
);
79 return NetServerGetInfo_l_1005(ctx
, r
->out
.buffer
);
84 return WERR_UNKNOWN_LEVEL
;
87 /****************************************************************
88 ****************************************************************/
90 static NTSTATUS
map_server_info_to_SERVER_INFO_buffer(TALLOC_CTX
*mem_ctx
,
92 union srvsvc_NetSrvInfo
*i
,
95 struct SERVER_INFO_100 i100
;
96 struct SERVER_INFO_101 i101
;
97 struct SERVER_INFO_102 i102
;
98 struct SERVER_INFO_402 i402
;
99 struct SERVER_INFO_403 i403
;
100 struct SERVER_INFO_502 i502
;
101 struct SERVER_INFO_503 i503
;
102 struct SERVER_INFO_599 i599
;
103 struct SERVER_INFO_1005 i1005
;
105 struct SERVER_INFO_1010 i1010
;
106 struct SERVER_INFO_1016 i1016
;
107 struct SERVER_INFO_1017 i1017
;
108 struct SERVER_INFO_1018 i1018
;
109 struct SERVER_INFO_1107 i1107
;
110 struct SERVER_INFO_1501 i1501
;
111 struct SERVER_INFO_1502 i1502
;
112 struct SERVER_INFO_1503 i1503
;
113 struct SERVER_INFO_1506 i1506
;
114 struct SERVER_INFO_1509 i1509
;
115 struct SERVER_INFO_1510 i1510
;
116 struct SERVER_INFO_1511 i1511
;
117 struct SERVER_INFO_1512 i1512
;
118 struct SERVER_INFO_1513 i1513
;
119 struct SERVER_INFO_1514 i1514
;
120 struct SERVER_INFO_1515 i1515
;
121 struct SERVER_INFO_1516 i1516
;
122 struct SERVER_INFO_1518 i1518
;
123 struct SERVER_INFO_1520 i1520
;
124 struct SERVER_INFO_1521 i1521
;
125 struct SERVER_INFO_1522 i1522
;
126 struct SERVER_INFO_1523 i1523
;
127 struct SERVER_INFO_1524 i1524
;
128 struct SERVER_INFO_1525 i1525
;
129 struct SERVER_INFO_1528 i1528
;
130 struct SERVER_INFO_1529 i1529
;
131 struct SERVER_INFO_1530 i1530
;
132 struct SERVER_INFO_1533 i1533
;
133 struct SERVER_INFO_1534 i1534
;
134 struct SERVER_INFO_1535 i1535
;
135 struct SERVER_INFO_1536 i1536
;
136 struct SERVER_INFO_1537 i1537
;
137 struct SERVER_INFO_1538 i1538
;
138 struct SERVER_INFO_1539 i1539
;
139 struct SERVER_INFO_1540 i1540
;
140 struct SERVER_INFO_1541 i1541
;
141 struct SERVER_INFO_1542 i1542
;
142 struct SERVER_INFO_1543 i1543
;
143 struct SERVER_INFO_1544 i1544
;
144 struct SERVER_INFO_1545 i1545
;
145 struct SERVER_INFO_1546 i1546
;
146 struct SERVER_INFO_1547 i1547
;
147 struct SERVER_INFO_1548 i1548
;
148 struct SERVER_INFO_1549 i1549
;
149 struct SERVER_INFO_1550 i1550
;
150 struct SERVER_INFO_1552 i1552
;
151 struct SERVER_INFO_1553 i1553
;
152 struct SERVER_INFO_1554 i1554
;
153 struct SERVER_INFO_1555 i1555
;
154 struct SERVER_INFO_1556 i1556
;
155 struct SERVER_INFO_1557 i1557
;
156 struct SERVER_INFO_1560 i1560
;
157 struct SERVER_INFO_1561 i1561
;
158 struct SERVER_INFO_1562 i1562
;
159 struct SERVER_INFO_1563 i1563
;
160 struct SERVER_INFO_1564 i1564
;
161 struct SERVER_INFO_1565 i1565
;
162 struct SERVER_INFO_1566 i1566
;
163 struct SERVER_INFO_1567 i1567
;
164 struct SERVER_INFO_1568 i1568
;
165 struct SERVER_INFO_1569 i1569
;
166 struct SERVER_INFO_1570 i1570
;
167 struct SERVER_INFO_1571 i1571
;
168 struct SERVER_INFO_1572 i1572
;
169 struct SERVER_INFO_1573 i1573
;
170 struct SERVER_INFO_1574 i1574
;
171 struct SERVER_INFO_1575 i1575
;
172 struct SERVER_INFO_1576 i1576
;
173 struct SERVER_INFO_1577 i1577
;
174 struct SERVER_INFO_1578 i1578
;
175 struct SERVER_INFO_1579 i1579
;
176 struct SERVER_INFO_1580 i1580
;
177 struct SERVER_INFO_1581 i1581
;
178 struct SERVER_INFO_1582 i1582
;
179 struct SERVER_INFO_1583 i1583
;
180 struct SERVER_INFO_1584 i1584
;
181 struct SERVER_INFO_1585 i1585
;
182 struct SERVER_INFO_1586 i1586
;
183 struct SERVER_INFO_1587 i1587
;
184 struct SERVER_INFO_1588 i1588
;
185 struct SERVER_INFO_1590 i1590
;
186 struct SERVER_INFO_1591 i1591
;
187 struct SERVER_INFO_1592 i1592
;
188 struct SERVER_INFO_1593 i1593
;
189 struct SERVER_INFO_1594 i1594
;
190 struct SERVER_INFO_1595 i1595
;
191 struct SERVER_INFO_1596 i1596
;
192 struct SERVER_INFO_1597 i1597
;
193 struct SERVER_INFO_1598 i1598
;
194 struct SERVER_INFO_1599 i1599
;
195 struct SERVER_INFO_1600 i1600
;
196 struct SERVER_INFO_1601 i1601
;
197 struct SERVER_INFO_1602 i1602
;
199 uint32_t num_info
= 0;
203 i100
.sv100_platform_id
= i
->info100
->platform_id
;
204 i100
.sv100_name
= talloc_strdup(mem_ctx
, i
->info100
->server_name
);
206 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_100
, i100
,
207 (struct SERVER_INFO_100
**)buffer
,
212 i101
.sv101_platform_id
= i
->info101
->platform_id
;
213 i101
.sv101_name
= talloc_strdup(mem_ctx
, i
->info101
->server_name
);
214 i101
.sv101_version_major
= i
->info101
->version_major
;
215 i101
.sv101_version_minor
= i
->info101
->version_minor
;
216 i101
.sv101_type
= i
->info101
->server_type
;
217 i101
.sv101_comment
= talloc_strdup(mem_ctx
, i
->info101
->comment
);
219 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_101
, i101
,
220 (struct SERVER_INFO_101
**)buffer
,
225 i102
.sv102_platform_id
= i
->info102
->platform_id
;
226 i102
.sv102_name
= talloc_strdup(mem_ctx
, i
->info102
->server_name
);
227 i102
.sv102_version_major
= i
->info102
->version_major
;
228 i102
.sv102_version_minor
= i
->info102
->version_minor
;
229 i102
.sv102_type
= i
->info102
->server_type
;
230 i102
.sv102_comment
= talloc_strdup(mem_ctx
, i
->info102
->comment
);
231 i102
.sv102_users
= i
->info102
->users
;
232 i102
.sv102_disc
= i
->info102
->disc
;
233 i102
.sv102_hidden
= i
->info102
->hidden
;
234 i102
.sv102_announce
= i
->info102
->announce
;
235 i102
.sv102_anndelta
= i
->info102
->anndelta
;
236 i102
.sv102_licenses
= i
->info102
->licenses
;
237 i102
.sv102_userpath
= talloc_strdup(mem_ctx
, i
->info102
->userpath
);
239 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_102
, i102
,
240 (struct SERVER_INFO_102
**)buffer
,
246 i402
.sv402_ulist_mtime
= i
->info402
->ulist_mtime
;
247 i402
.sv402_glist_mtime
= i
->info402
->glist_mtime
;
248 i402
.sv402_alist_mtime
= i
->info402
->alist_mtime
;
249 i402
.sv402_alerts
= talloc_strdup(mem_ctx
, i
->info402
->alerts
);
250 i402
.sv402_security
= i
->info402
->security
;
251 i402
.sv402_numadmin
= i
->info402
->numadmin
;
252 i402
.sv402_lanmask
= i
->info402
->lanmask
;
253 i402
.sv402_guestacct
= talloc_strdup(mem_ctx
, i
->info402
->guestaccount
);
254 i402
.sv402_chdevs
= i
->info402
->chdevs
;
255 i402
.sv402_chdevq
= i
->info402
->chdevqs
;
256 i402
.sv402_chdevjobs
= i
->info402
->chdevjobs
;
257 i402
.sv402_connections
= i
->info402
->connections
;
258 i402
.sv402_shares
= i
->info402
->shares
;
259 i402
.sv402_openfiles
= i
->info402
->openfiles
;
260 i402
.sv402_sessopens
= i
->info402
->sessopen
;
261 i402
.sv402_sessvcs
= i
->info402
->sesssvc
;
262 i402
.sv402_sessreqs
= i
->info402
->sessreqs
;
263 i402
.sv402_opensearch
= i
->info402
->opensearch
;
264 i402
.sv402_activelocks
= i
->info402
->activelocks
;
265 i402
.sv402_numreqbuf
= i
->info402
->numreqbufs
;
266 i402
.sv402_sizreqbuf
= i
->info402
->sizereqbufs
;
267 i402
.sv402_numbigbuf
= i
->info402
->numbigbufs
;
268 i402
.sv402_numfiletasks
= i
->info402
->numfiletasks
;
269 i402
.sv402_alertsched
= i
->info402
->alertsched
;
270 i402
.sv402_erroralert
= i
->info402
->erroralert
;
271 i402
.sv402_logonalert
= i
->info402
->logonalert
;
272 i402
.sv402_accessalert
= i
->info402
->accessalert
;
273 i402
.sv402_diskalert
= i
->info402
->diskalert
;
274 i402
.sv402_netioalert
= i
->info402
->netioalert
;
275 i402
.sv402_maxauditsz
= i
->info402
->maxaudits
;
276 i402
.sv402_srvheuristics
= i
->info402
->srvheuristics
;
278 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_402
, i402
,
279 (struct SERVER_INFO_402
**)buffer
,
285 i403
.sv403_ulist_mtime
= i
->info403
->ulist_mtime
;
286 i403
.sv403_glist_mtime
= i
->info403
->glist_mtime
;
287 i403
.sv403_alist_mtime
= i
->info403
->alist_mtime
;
288 i403
.sv403_alerts
= talloc_strdup(mem_ctx
, i
->info403
->alerts
);
289 i403
.sv403_security
= i
->info403
->security
;
290 i403
.sv403_numadmin
= i
->info403
->numadmin
;
291 i403
.sv403_lanmask
= i
->info403
->lanmask
;
292 i403
.sv403_guestacct
= talloc_strdup(mem_ctx
, i
->info403
->guestaccount
);
293 i403
.sv403_chdevs
= i
->info403
->chdevs
;
294 i403
.sv403_chdevq
= i
->info403
->chdevqs
;
295 i403
.sv403_chdevjobs
= i
->info403
->chdevjobs
;
296 i403
.sv403_connections
= i
->info403
->connections
;
297 i403
.sv403_shares
= i
->info403
->shares
;
298 i403
.sv403_openfiles
= i
->info403
->openfiles
;
299 i403
.sv403_sessopens
= i
->info403
->sessopen
;
300 i403
.sv403_sessvcs
= i
->info403
->sesssvc
;
301 i403
.sv403_sessreqs
= i
->info403
->sessreqs
;
302 i403
.sv403_opensearch
= i
->info403
->opensearch
;
303 i403
.sv403_activelocks
= i
->info403
->activelocks
;
304 i403
.sv403_numreqbuf
= i
->info403
->numreqbufs
;
305 i403
.sv403_sizreqbuf
= i
->info403
->sizereqbufs
;
306 i403
.sv403_numbigbuf
= i
->info403
->numbigbufs
;
307 i403
.sv403_numfiletasks
= i
->info403
->numfiletasks
;
308 i403
.sv403_alertsched
= i
->info403
->alertsched
;
309 i403
.sv403_erroralert
= i
->info403
->erroralert
;
310 i403
.sv403_logonalert
= i
->info403
->logonalert
;
311 i403
.sv403_accessalert
= i
->info403
->accessalert
;
312 i403
.sv403_diskalert
= i
->info403
->diskalert
;
313 i403
.sv403_netioalert
= i
->info403
->netioalert
;
314 i403
.sv403_maxauditsz
= i
->info403
->maxaudits
;
315 i403
.sv403_srvheuristics
= i
->info403
->srvheuristics
;
316 i403
.sv403_auditedevents
= i
->info403
->auditedevents
;
317 i403
.sv403_autoprofile
= i
->info403
->auditprofile
;
318 i403
.sv403_autopath
= talloc_strdup(mem_ctx
, i
->info403
->autopath
);
320 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_403
, i403
,
321 (struct SERVER_INFO_403
**)buffer
,
326 i502
.sv502_sessopens
= i
->info502
->sessopen
;
327 i502
.sv502_sessvcs
= i
->info502
->sesssvc
;
328 i502
.sv502_opensearch
= i
->info502
->opensearch
;
329 i502
.sv502_sizreqbuf
= i
->info502
->sizereqbufs
;
330 i502
.sv502_initworkitems
= i
->info502
->initworkitems
;
331 i502
.sv502_maxworkitems
= i
->info502
->maxworkitems
;
332 i502
.sv502_rawworkitems
= i
->info502
->rawworkitems
;
333 i502
.sv502_irpstacksize
= i
->info502
->irpstacksize
;
334 i502
.sv502_maxrawbuflen
= i
->info502
->maxrawbuflen
;
335 i502
.sv502_sessusers
= i
->info502
->sessusers
;
336 i502
.sv502_sessconns
= i
->info502
->sessconns
;
337 i502
.sv502_maxpagedmemoryusage
= i
->info502
->maxpagedmemoryusage
;
338 i502
.sv502_maxnonpagedmemoryusage
= i
->info502
->maxnonpagedmemoryusage
;
339 i502
.sv502_enablesoftcompat
= i
->info502
->enablesoftcompat
;
340 i502
.sv502_enableforcedlogoff
= i
->info502
->enableforcedlogoff
;
341 i502
.sv502_timesource
= i
->info502
->timesource
;
342 i502
.sv502_acceptdownlevelapis
= i
->info502
->acceptdownlevelapis
;
343 i502
.sv502_lmannounce
= i
->info502
->lmannounce
;
345 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_502
, i502
,
346 (struct SERVER_INFO_502
**)buffer
,
351 i503
.sv503_sessopens
= i
->info503
->sessopen
;
352 i503
.sv503_sessvcs
= i
->info503
->sesssvc
;
353 i503
.sv503_opensearch
= i
->info503
->opensearch
;
354 i503
.sv503_sizreqbuf
= i
->info503
->sizereqbufs
;
355 i503
.sv503_initworkitems
= i
->info503
->initworkitems
;
356 i503
.sv503_maxworkitems
= i
->info503
->maxworkitems
;
357 i503
.sv503_rawworkitems
= i
->info503
->rawworkitems
;
358 i503
.sv503_irpstacksize
= i
->info503
->irpstacksize
;
359 i503
.sv503_maxrawbuflen
= i
->info503
->maxrawbuflen
;
360 i503
.sv503_sessusers
= i
->info503
->sessusers
;
361 i503
.sv503_sessconns
= i
->info503
->sessconns
;
362 i503
.sv503_maxpagedmemoryusage
= i
->info503
->maxpagedmemoryusage
;
363 i503
.sv503_maxnonpagedmemoryusage
= i
->info503
->maxnonpagedmemoryusage
;
364 i503
.sv503_enablesoftcompat
= i
->info503
->enablesoftcompat
;
365 i503
.sv503_enableforcedlogoff
= i
->info503
->enableforcedlogoff
;
366 i503
.sv503_timesource
= i
->info503
->timesource
;
367 i503
.sv503_acceptdownlevelapis
= i
->info503
->acceptdownlevelapis
;
368 i503
.sv503_lmannounce
= i
->info503
->lmannounce
;
369 i503
.sv503_domain
= talloc_strdup(mem_ctx
, i
->info503
->domain
);
370 i503
.sv503_maxcopyreadlen
= i
->info503
->maxcopyreadlen
;
371 i503
.sv503_maxcopywritelen
= i
->info503
->maxcopywritelen
;
372 i503
.sv503_minkeepsearch
= i
->info503
->minkeepsearch
;
373 i503
.sv503_maxkeepsearch
= i
->info503
->maxkeepsearch
;
374 i503
.sv503_minkeepcomplsearch
= i
->info503
->minkeepcomplsearch
;
375 i503
.sv503_maxkeepcomplsearch
= i
->info503
->maxkeepcomplsearch
;
376 i503
.sv503_threadcountadd
= i
->info503
->threadcountadd
;
377 i503
.sv503_numblockthreads
= i
->info503
->numlockthreads
;
378 i503
.sv503_scavtimeout
= i
->info503
->scavtimeout
;
379 i503
.sv503_minrcvqueue
= i
->info503
->minrcvqueue
;
380 i503
.sv503_minfreeworkitems
= i
->info503
->minfreeworkitems
;
381 i503
.sv503_xactmemsize
= i
->info503
->xactmemsize
;
382 i503
.sv503_threadpriority
= i
->info503
->threadpriority
;
383 i503
.sv503_maxmpxct
= i
->info503
->maxmpxct
;
384 i503
.sv503_oplockbreakwait
= i
->info503
->oplockbreakwait
;
385 i503
.sv503_oplockbreakresponsewait
= i
->info503
->oplockbreakresponsewait
;
386 i503
.sv503_enableoplocks
= i
->info503
->enableoplocks
;
387 i503
.sv503_enableoplockforceclose
= i
->info503
->enableoplockforceclose
;
388 i503
.sv503_enablefcbopens
= i
->info503
->enablefcbopens
;
389 i503
.sv503_enableraw
= i
->info503
->enableraw
;
390 i503
.sv503_enablesharednetdrives
= i
->info503
->enablesharednetdrives
;
391 i503
.sv503_minfreeconnections
= i
->info503
->minfreeconnections
;
392 i503
.sv503_maxfreeconnections
= i
->info503
->maxfreeconnections
;
394 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_503
, i503
,
395 (struct SERVER_INFO_503
**)buffer
,
400 i599
.sv599_sessopens
= i
->info599
->sessopen
;
401 i599
.sv599_sessvcs
= i
->info599
->sesssvc
;
402 i599
.sv599_opensearch
= i
->info599
->opensearch
;
403 i599
.sv599_sizreqbuf
= i
->info599
->sizereqbufs
;
404 i599
.sv599_initworkitems
= i
->info599
->initworkitems
;
405 i599
.sv599_maxworkitems
= i
->info599
->maxworkitems
;
406 i599
.sv599_rawworkitems
= i
->info599
->rawworkitems
;
407 i599
.sv599_irpstacksize
= i
->info599
->irpstacksize
;
408 i599
.sv599_maxrawbuflen
= i
->info599
->maxrawbuflen
;
409 i599
.sv599_sessusers
= i
->info599
->sessusers
;
410 i599
.sv599_sessconns
= i
->info599
->sessconns
;
411 i599
.sv599_maxpagedmemoryusage
= i
->info599
->maxpagedmemoryusage
;
412 i599
.sv599_maxnonpagedmemoryusage
= i
->info599
->maxnonpagedmemoryusage
;
413 i599
.sv599_enablesoftcompat
= i
->info599
->enablesoftcompat
;
414 i599
.sv599_enableforcedlogoff
= i
->info599
->enableforcedlogoff
;
415 i599
.sv599_timesource
= i
->info599
->timesource
;
416 i599
.sv599_acceptdownlevelapis
= i
->info599
->acceptdownlevelapis
;
417 i599
.sv599_lmannounce
= i
->info599
->lmannounce
;
418 i599
.sv599_domain
= talloc_strdup(mem_ctx
, i
->info599
->domain
);
419 i599
.sv599_maxcopyreadlen
= i
->info599
->maxcopyreadlen
;
420 i599
.sv599_maxcopywritelen
= i
->info599
->maxcopywritelen
;
421 i599
.sv599_minkeepsearch
= i
->info599
->minkeepsearch
;
422 i599
.sv599_maxkeepsearch
= 0; /* ?? */
423 i599
.sv599_minkeepcomplsearch
= i
->info599
->minkeepcomplsearch
;
424 i599
.sv599_maxkeepcomplsearch
= i
->info599
->maxkeepcomplsearch
;
425 i599
.sv599_threadcountadd
= i
->info599
->threadcountadd
;
426 i599
.sv599_numblockthreads
= i
->info599
->numlockthreads
; /* typo ? */
427 i599
.sv599_scavtimeout
= i
->info599
->scavtimeout
;
428 i599
.sv599_minrcvqueue
= i
->info599
->minrcvqueue
;
429 i599
.sv599_minfreeworkitems
= i
->info599
->minfreeworkitems
;
430 i599
.sv599_xactmemsize
= i
->info599
->xactmemsize
;
431 i599
.sv599_threadpriority
= i
->info599
->threadpriority
;
432 i599
.sv599_maxmpxct
= i
->info599
->maxmpxct
;
433 i599
.sv599_oplockbreakwait
= i
->info599
->oplockbreakwait
;
434 i599
.sv599_oplockbreakresponsewait
= i
->info599
->oplockbreakresponsewait
;
435 i599
.sv599_enableoplocks
= i
->info599
->enableoplocks
;
436 i599
.sv599_enableoplockforceclose
= i
->info599
->enableoplockforceclose
;
437 i599
.sv599_enablefcbopens
= i
->info599
->enablefcbopens
;
438 i599
.sv599_enableraw
= i
->info599
->enableraw
;
439 i599
.sv599_enablesharednetdrives
= i
->info599
->enablesharednetdrives
;
440 i599
.sv599_minfreeconnections
= i
->info599
->minfreeconnections
;
441 i599
.sv599_maxfreeconnections
= i
->info599
->maxfreeconnections
;
442 i599
.sv599_initsesstable
= i
->info599
->initsesstable
;
443 i599
.sv599_initconntable
= i
->info599
->initconntable
;
444 i599
.sv599_initfiletable
= i
->info599
->initfiletable
;
445 i599
.sv599_initsearchtable
= i
->info599
->initsearchtable
;
446 i599
.sv599_alertschedule
= i
->info599
->alertsched
;
447 i599
.sv599_errorthreshold
= i
->info599
->errortreshold
;
448 i599
.sv599_networkerrorthreshold
= i
->info599
->networkerrortreshold
;
449 i599
.sv599_diskspacethreshold
= i
->info599
->diskspacetreshold
;
450 i599
.sv599_reserved
= i
->info599
->reserved
;
451 i599
.sv599_maxlinkdelay
= i
->info599
->maxlinkdelay
;
452 i599
.sv599_minlinkthroughput
= i
->info599
->minlinkthroughput
;
453 i599
.sv599_linkinfovalidtime
= i
->info599
->linkinfovalidtime
;
454 i599
.sv599_scavqosinfoupdatetime
= i
->info599
->scavqosinfoupdatetime
;
455 i599
.sv599_maxworkitemidletime
= i
->info599
->maxworkitemidletime
;
457 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_599
, i599
,
458 (struct SERVER_INFO_599
**)buffer
,
463 i1005
.sv1005_comment
= talloc_strdup(mem_ctx
, i
->info1005
->comment
);
465 ADD_TO_ARRAY(mem_ctx
, struct SERVER_INFO_1005
, i1005
,
466 (struct SERVER_INFO_1005
**)buffer
,
470 return NT_STATUS_NOT_SUPPORTED
;
476 /****************************************************************
477 ****************************************************************/
479 WERROR
NetServerGetInfo_r(struct libnetapi_ctx
*ctx
,
480 struct NetServerGetInfo
*r
)
482 struct rpc_pipe_client
*pipe_cli
= NULL
;
485 union srvsvc_NetSrvInfo info
;
487 if (!r
->out
.buffer
) {
488 return WERR_INVALID_PARAM
;
491 switch (r
->in
.level
) {
501 return WERR_UNKNOWN_LEVEL
;
504 werr
= libnetapi_open_pipe(ctx
, r
->in
.server_name
,
505 &ndr_table_srvsvc
.syntax_id
,
507 if (!W_ERROR_IS_OK(werr
)) {
511 status
= rpccli_srvsvc_NetSrvGetInfo(pipe_cli
, talloc_tos(),
516 if (!NT_STATUS_IS_OK(status
)) {
517 werr
= ntstatus_to_werror(status
);
521 status
= map_server_info_to_SERVER_INFO_buffer(ctx
, r
->in
.level
, &info
,
523 if (!NT_STATUS_IS_OK(status
)) {
524 werr
= ntstatus_to_werror(status
);
532 /****************************************************************
533 ****************************************************************/
535 static WERROR
NetServerSetInfo_l_1005(struct libnetapi_ctx
*ctx
,
536 struct NetServerSetInfo
*r
)
539 struct smbconf_ctx
*conf_ctx
;
540 struct srvsvc_NetSrvInfo1005
*info1005
;
543 *r
->out
.parm_error
= 1005; /* sure here ? */
544 return WERR_INVALID_PARAM
;
547 info1005
= (struct srvsvc_NetSrvInfo1005
*)r
->in
.buffer
;
549 if (!info1005
->comment
) {
550 *r
->out
.parm_error
= 1005;
551 return WERR_INVALID_PARAM
;
554 if (!lp_config_backend_is_registry()) {
555 libnetapi_set_error_string(ctx
,
556 "Configuration manipulation requested but not "
557 "supported by backend");
558 return WERR_NOT_SUPPORTED
;
561 werr
= smbconf_init_reg(ctx
, &conf_ctx
, NULL
);
562 if (!W_ERROR_IS_OK(werr
)) {
566 werr
= smbconf_set_global_parameter(conf_ctx
, "server string",
570 smbconf_shutdown(conf_ctx
);
574 /****************************************************************
575 ****************************************************************/
577 WERROR
NetServerSetInfo_l(struct libnetapi_ctx
*ctx
,
578 struct NetServerSetInfo
*r
)
580 switch (r
->in
.level
) {
582 return NetServerSetInfo_l_1005(ctx
, r
);
587 return WERR_UNKNOWN_LEVEL
;
590 /****************************************************************
591 ****************************************************************/
593 WERROR
NetServerSetInfo_r(struct libnetapi_ctx
*ctx
,
594 struct NetServerSetInfo
*r
)
596 struct rpc_pipe_client
*pipe_cli
= NULL
;
599 union srvsvc_NetSrvInfo info
;
601 werr
= libnetapi_open_pipe(ctx
, r
->in
.server_name
,
602 &ndr_table_srvsvc
.syntax_id
,
604 if (!W_ERROR_IS_OK(werr
)) {
608 switch (r
->in
.level
) {
610 info
.info1005
= (struct srvsvc_NetSrvInfo1005
*)r
->in
.buffer
;
613 werr
= WERR_NOT_SUPPORTED
;
617 status
= rpccli_srvsvc_NetSrvSetInfo(pipe_cli
, talloc_tos(),
623 if (!NT_STATUS_IS_OK(status
)) {
624 werr
= ntstatus_to_werror(status
);
632 /****************************************************************
633 ****************************************************************/
635 WERROR
NetRemoteTOD_r(struct libnetapi_ctx
*ctx
,
636 struct NetRemoteTOD
*r
)
638 struct rpc_pipe_client
*pipe_cli
= NULL
;
641 struct srvsvc_NetRemoteTODInfo
*info
= NULL
;
643 werr
= libnetapi_open_pipe(ctx
, r
->in
.server_name
,
644 &ndr_table_srvsvc
.syntax_id
,
646 if (!W_ERROR_IS_OK(werr
)) {
650 status
= rpccli_srvsvc_NetRemoteTOD(pipe_cli
, talloc_tos(),
654 if (!NT_STATUS_IS_OK(status
)) {
655 werr
= ntstatus_to_werror(status
);
659 *r
->out
.buffer
= (uint8_t *)talloc_memdup(ctx
, info
,
660 sizeof(struct srvsvc_NetRemoteTODInfo
));
661 W_ERROR_HAVE_NO_MEMORY(*r
->out
.buffer
);
667 /****************************************************************
668 ****************************************************************/
670 WERROR
NetRemoteTOD_l(struct libnetapi_ctx
*ctx
,
671 struct NetRemoteTOD
*r
)
673 LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx
, r
, NetRemoteTOD
);