1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #include <rpcsvc/nis.h>
21:
22: #include "nis_xdr.h"
23: #include "nis_intern.h"
24:
25: void
26: nis_ping (const_nis_name dirname, unsigned int utime,
27: const nis_object *dirobj)
28: {
29: nis_result *res = NULL;
30: nis_object *obj;
31: ping_args args;
32: unsigned int i;
33:
34: if (dirname == NULL && dirobj == NULL)
35: abort ();
36:
37: if (dirobj == NULL)
38: {
39: res = nis_lookup (dirname, MASTER_ONLY);
40: if (res == NULL || NIS_RES_STATUS (res) != NIS_SUCCESS)
41: {
42: nis_freeresult (res);
43: return;
44: }
45: obj = res->objects.objects_val;
46: }
47: else
48: obj = (nis_object *) dirobj;
49:
50:
51: if (__type_of (obj) != NIS_DIRECTORY_OBJ)
52: {
53: nis_freeresult (res);
54: return;
55: }
56:
57: if (dirname == NULL)
58: args.dir = obj->DI_data.do_name;
59: else
60: args.dir = (char *) dirname;
61: args.stamp = utime;
62:
63:
64: for (i = 1; i < obj->DI_data.do_servers.do_servers_len; ++i)
65: __do_niscall2 (&obj->DI_data.do_servers.do_servers_val[i], 1,
66: NIS_PING, (xdrproc_t) _xdr_ping_args,
67: (caddr_t) &args, (xdrproc_t) xdr_void,
68: (caddr_t) NULL, 0, NULL);
69: nis_freeresult (res);
70: }