1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #include <string.h>
21: #include <rpcsvc/nis.h>
22:
23: #include "nis_xdr.h"
24: #include "nis_intern.h"
25:
26: nis_error
27: nis_servstate (const nis_server *serv, const nis_tag *tags,
28: const int numtags, nis_tag **result)
29: {
30: nis_taglist taglist;
31: nis_taglist tagres;
32:
33: *result = 0;
34: tagres.tags.tags_len = 0;
35: tagres.tags.tags_val = NULL;
36: taglist.tags.tags_len = numtags;
37: taglist.tags.tags_val = (nis_tag *) tags;
38:
39: if (serv == NULL)
40: return NIS_BADOBJECT;
41:
42: if (__do_niscall2 (serv, 1, NIS_SERVSTATE, (xdrproc_t) _xdr_nis_taglist,
43: (caddr_t) &taglist, (xdrproc_t) _xdr_nis_taglist,
44: (caddr_t) &tagres, 0, NULL) != RPC_SUCCESS)
45: return NIS_RPCERROR;
46:
47: *result = tagres.tags.tags_val;
48:
49: return NIS_SUCCESS;
50: }
51:
52: nis_error
53: nis_stats (const nis_server *serv, const nis_tag *tags,
54: const int numtags, nis_tag **result)
55: {
56: nis_taglist taglist;
57: nis_taglist tagres;
58:
59: *result = NULL;
60: tagres.tags.tags_len = 0;
61: tagres.tags.tags_val = NULL;
62: taglist.tags.tags_len = numtags;
63: taglist.tags.tags_val = (nis_tag *) tags;
64:
65: if (serv == NULL)
66: return NIS_BADOBJECT;
67:
68: if (__do_niscall2 (serv, 1, NIS_STATUS, (xdrproc_t) _xdr_nis_taglist,
69: (caddr_t) &taglist, (xdrproc_t) _xdr_nis_taglist,
70: (caddr_t) &tagres, 0, NULL) != RPC_SUCCESS)
71: return NIS_RPCERROR;
72:
73: *result = tagres.tags.tags_val;
74:
75: return NIS_SUCCESS;
76: }
77:
78: void
79: nis_freetags (nis_tag *tags, const int numtags)
80: {
81: int i;
82:
83: for (i = 0; i < numtags; ++i)
84: free (tags[i].tag_val);
85: free (tags);
86: }