2 * Copyright (C) 1995, 1997-1999 Jeffrey A. Uphoff
3 * Modified by Olaf Kirch, Oct. 1996.
4 * Modified by H.J. Lu, 1998.
15 #include <rpc/pmap_clnt.h>
19 short int restart = 0;
20 int _rpcpmstart = 0; /* flags for tirpc rpcgen */
24 extern void sm_prog_1 (struct svc_req *, register SVCXPRT);
27 extern void simulator (int, char **);
37 log (L_FATAL, "Caught signal %d, un-registering and exiting.", sig);
38 pmap_unset (SM_PROG, SM_VERS);
44 * Entry routine/main loop.
47 main (int argc, char **argv)
54 if (argc == 2 && strcmp (argv [1], "-F") == 0) {
62 simulator (--argc, ++argv); /* simulator() does exit() */
68 if ((pid = fork ()) < 0) {
69 perror ("Could not fork");
71 } else if (pid != 0) {
79 for (filedes = 0; filedes < OPEN_MAX; filedes++) {
85 signal (SIGHUP, killer);
86 signal (SIGINT, killer);
87 signal (SIGTERM, killer);
90 pmap_unset (SM_PROG, SM_VERS);
95 do_regist (SM_PROG, sm_prog_1);
96 my_svc_run (); /* I rolled my own, Olaf made it better... */
106 do_regist(u_long prog, void (*sm_prog_1)())
107 /* do_regist(u_long prog, __dispatch_fn_t sm_prog_1) */
111 if ((transp = svcudp_create(RPC_ANYSOCK)) == NULL)
112 die("cannot create udp service.");
114 if (!svc_register(transp, prog, SM_VERS, sm_prog_1, IPPROTO_UDP))
115 die("unable to register (SM_PROG, SM_VERS, udp).");
117 if ((transp = svctcp_create(RPC_ANYSOCK, 0, 0)) == NULL)
118 die("cannot create tcp service.");
120 if (!svc_register(transp, prog, SM_VERS, sm_prog_1, IPPROTO_TCP))
121 die("unable to register (SM_PROG, SM_VERS, tcp).");