1df82e9baSPhilippe Charnier 2df82e9baSPhilippe Charnier #ifndef lint 3df82e9baSPhilippe Charnier static const char rcsid[] = 4df82e9baSPhilippe Charnier "$Id$"; 5df82e9baSPhilippe Charnier #endif /* not lint */ 6df82e9baSPhilippe Charnier 71494289fSPeter Wemm #include <stdio.h> 81494289fSPeter Wemm #include <rpc/rpc.h> 91494289fSPeter Wemm #include <rpcsvc/sm_inter.h> 101494289fSPeter Wemm 111494289fSPeter Wemm 121494289fSPeter Wemm /* Default timeout can be changed using clnt_control() */ 131494289fSPeter Wemm static struct timeval TIMEOUT = { 25, 0 }; 141494289fSPeter Wemm 151494289fSPeter Wemm struct sm_stat_res * 161494289fSPeter Wemm sm_stat_1(argp, clnt) 171494289fSPeter Wemm struct sm_name *argp; 181494289fSPeter Wemm CLIENT *clnt; 191494289fSPeter Wemm { 201494289fSPeter Wemm static struct sm_stat_res res; 211494289fSPeter Wemm 221494289fSPeter Wemm bzero((char *)&res, sizeof(res)); 231494289fSPeter Wemm if (clnt_call(clnt, SM_STAT, xdr_sm_name, argp, xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) { 241494289fSPeter Wemm return (NULL); 251494289fSPeter Wemm } 261494289fSPeter Wemm return (&res); 271494289fSPeter Wemm } 281494289fSPeter Wemm 291494289fSPeter Wemm 301494289fSPeter Wemm struct sm_stat_res * 311494289fSPeter Wemm sm_mon_1(argp, clnt) 321494289fSPeter Wemm struct mon *argp; 331494289fSPeter Wemm CLIENT *clnt; 341494289fSPeter Wemm { 351494289fSPeter Wemm static struct sm_stat_res res; 361494289fSPeter Wemm 371494289fSPeter Wemm bzero((char *)&res, sizeof(res)); 381494289fSPeter Wemm if (clnt_call(clnt, SM_MON, xdr_mon, argp, xdr_sm_stat_res, &res, TIMEOUT) != RPC_SUCCESS) { 391494289fSPeter Wemm return (NULL); 401494289fSPeter Wemm } 411494289fSPeter Wemm return (&res); 421494289fSPeter Wemm } 431494289fSPeter Wemm 441494289fSPeter Wemm 451494289fSPeter Wemm struct sm_stat * 461494289fSPeter Wemm sm_unmon_1(argp, clnt) 471494289fSPeter Wemm struct mon_id *argp; 481494289fSPeter Wemm CLIENT *clnt; 491494289fSPeter Wemm { 501494289fSPeter Wemm static struct sm_stat res; 511494289fSPeter Wemm 521494289fSPeter Wemm bzero((char *)&res, sizeof(res)); 531494289fSPeter Wemm if (clnt_call(clnt, SM_UNMON, xdr_mon_id, argp, xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) { 541494289fSPeter Wemm return (NULL); 551494289fSPeter Wemm } 561494289fSPeter Wemm return (&res); 571494289fSPeter Wemm } 581494289fSPeter Wemm 591494289fSPeter Wemm 601494289fSPeter Wemm struct sm_stat * 611494289fSPeter Wemm sm_unmon_all_1(argp, clnt) 621494289fSPeter Wemm struct my_id *argp; 631494289fSPeter Wemm CLIENT *clnt; 641494289fSPeter Wemm { 651494289fSPeter Wemm static struct sm_stat res; 661494289fSPeter Wemm 671494289fSPeter Wemm bzero((char *)&res, sizeof(res)); 681494289fSPeter Wemm if (clnt_call(clnt, SM_UNMON_ALL, xdr_my_id, argp, xdr_sm_stat, &res, TIMEOUT) != RPC_SUCCESS) { 691494289fSPeter Wemm return (NULL); 701494289fSPeter Wemm } 711494289fSPeter Wemm return (&res); 721494289fSPeter Wemm } 731494289fSPeter Wemm 741494289fSPeter Wemm 751494289fSPeter Wemm void * 761494289fSPeter Wemm sm_simu_crash_1(argp, clnt) 771494289fSPeter Wemm void *argp; 781494289fSPeter Wemm CLIENT *clnt; 791494289fSPeter Wemm { 801494289fSPeter Wemm static char res; 811494289fSPeter Wemm 821494289fSPeter Wemm bzero((char *)&res, sizeof(res)); 831494289fSPeter Wemm if (clnt_call(clnt, SM_SIMU_CRASH, xdr_void, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) { 841494289fSPeter Wemm return (NULL); 851494289fSPeter Wemm } 861494289fSPeter Wemm return ((void *)&res); 871494289fSPeter Wemm } 881494289fSPeter Wemm 891494289fSPeter Wemm 901494289fSPeter Wemm int main(int argc, char **argv) 911494289fSPeter Wemm { 921494289fSPeter Wemm CLIENT *cli; 931494289fSPeter Wemm char dummy; 941494289fSPeter Wemm void *out; 951494289fSPeter Wemm struct mon mon; 961494289fSPeter Wemm 971494289fSPeter Wemm if (argc < 2) 981494289fSPeter Wemm { 991494289fSPeter Wemm fprintf(stderr, "usage: test <hostname> | crash\n"); 100df82e9baSPhilippe Charnier fprintf(stderr, "always talks to statd at localhost\n"); 1011494289fSPeter Wemm exit(1); 1021494289fSPeter Wemm } 1031494289fSPeter Wemm 1041494289fSPeter Wemm printf("Creating client for localhost\n" ); 1051494289fSPeter Wemm cli = clnt_create("localhost", SM_PROG, SM_VERS, "udp"); 1061494289fSPeter Wemm if (!cli) 1071494289fSPeter Wemm { 1081494289fSPeter Wemm printf("Failed to create client\n"); 1091494289fSPeter Wemm exit(1); 1101494289fSPeter Wemm } 1111494289fSPeter Wemm 1121494289fSPeter Wemm mon.mon_id.mon_name = argv[1]; 1131494289fSPeter Wemm mon.mon_id.my_id.my_name = argv[1]; 1141494289fSPeter Wemm mon.mon_id.my_id.my_prog = SM_PROG; 1151494289fSPeter Wemm mon.mon_id.my_id.my_vers = SM_VERS; 1161494289fSPeter Wemm mon.mon_id.my_id.my_proc = 1; /* have it call sm_stat() !!! */ 1171494289fSPeter Wemm 1181494289fSPeter Wemm if (strcmp(argv[1], "crash")) 1191494289fSPeter Wemm { 1201494289fSPeter Wemm /* Hostname given */ 1211494289fSPeter Wemm struct sm_stat_res *res; 1221494289fSPeter Wemm if (res = sm_mon_1(&mon, cli)) 1231494289fSPeter Wemm { 1241494289fSPeter Wemm printf("Success!\n"); 1251494289fSPeter Wemm } 1261494289fSPeter Wemm else 1271494289fSPeter Wemm { 1281494289fSPeter Wemm printf("Fail\n"); 1291494289fSPeter Wemm } 1301494289fSPeter Wemm } 1311494289fSPeter Wemm else 1321494289fSPeter Wemm { 1331494289fSPeter Wemm if (out = sm_simu_crash_1(&dummy, cli)) 1341494289fSPeter Wemm { 1351494289fSPeter Wemm printf("Success!\n"); 1361494289fSPeter Wemm } 1371494289fSPeter Wemm else 1381494289fSPeter Wemm { 1391494289fSPeter Wemm printf("Fail\n"); 1401494289fSPeter Wemm } 1411494289fSPeter Wemm } 1421494289fSPeter Wemm 1431494289fSPeter Wemm return 0; 1441494289fSPeter Wemm } 145