Ejemplo n.º 1
0
static void
smoke_1(struct svc_req *rqstp, SVCXPRT *transp)
{
	union {
		data get_me_my_supply_1_arg;
	} argument;
	char *result;
	xdrproc_t xdr_argument, xdr_result;
	char *(*local)(char *, struct svc_req *);

	_rpcsvcdirty = 1;
	switch (rqstp->rq_proc) {
	case NULLPROC:
		(void) svc_sendreply(transp, (xdrproc_t) xdr_void, (char *)NULL);
		_rpcsvcdirty = 0;
		return;

	case GET_ME_MY_SUPPLY:
		xdr_argument = (xdrproc_t) xdr_data;
		xdr_result = (xdrproc_t) xdr_int;
		local = (char *(*)(char *, struct svc_req *)) get_me_my_supply_1_svc;
		break;

	default:
		svcerr_noproc(transp);
		_rpcsvcdirty = 0;
		return;
	}
	(void) memset((char *)&argument, 0, sizeof (argument));
	if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
		svcerr_decode(transp);
		_rpcsvcdirty = 0;
		return;
	}
	result = (*local)((char *)&argument, rqstp);
	if (result != NULL && !svc_sendreply(transp, (xdrproc_t) xdr_result, result)) {
		svcerr_systemerr(transp);
	}
	if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
		_msgout("unable to free arguments");
		exit(1);
	}
	_rpcsvcdirty = 0;
	return;
}
Ejemplo n.º 2
0
int
main(int argc, char *argv[])
{
	register SVCXPRT *transp = NULL;
	int sock;
	int proto = 0;
	struct sockaddr_in saddr;
	int asize = sizeof (saddr);
	int ch;

	while ((ch = getopt(argc, argv, "p:h")) != -1) {
		switch (ch) {
		case 'p':
			yp_dir = optarg;
			break;
		default:
			usage();
			break;
		}
	}
#ifdef foo
	load_securenets();
#endif

	if (svc_auth_reg(AUTH_DES, _svcauth_des) == -1) {
		yp_error("failed to register AUTH_DES flavor");
		exit(1);
	}

	if (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) {
		int ssize = sizeof (int);

		if (saddr.sin_family != AF_INET)
			exit(1);
		if (getsockopt(0, SOL_SOCKET, SO_TYPE,
				(char *)&_rpcfdtype, &ssize) == -1)
			exit(1);
		sock = 0;
		_rpcpmstart = 1;
		proto = 0;
		openlog("rpc.ypupdatedd", LOG_PID, LOG_DAEMON);
	} else {
#ifndef RPC_SVC_FG
		if (daemon(0,0)) {
			err(1, "cannot fork");
		}
		openlog("rpc.ypupdated", LOG_PID, LOG_DAEMON);
#endif
		sock = RPC_ANYSOCK;
		(void) pmap_unset(YPU_PROG, YPU_VERS);
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_DGRAM)) {
		transp = svcudp_create(sock);
		if (transp == NULL) {
			_msgout("cannot create udp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_UDP;
		if (!svc_register(transp, YPU_PROG, YPU_VERS, ypu_prog_1, proto)) {
			_msgout("unable to register (YPU_PROG, YPU_VERS, udp).");
			exit(1);
		}
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_STREAM)) {
		transp = svctcp_create(sock, 0, 0);
		if (transp == NULL) {
			_msgout("cannot create tcp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_TCP;
		if (!svc_register(transp, YPU_PROG, YPU_VERS, ypu_prog_1, proto)) {
			_msgout("unable to register (YPU_PROG, YPU_VERS, tcp).");
			exit(1);
		}
	}

	if (transp == (SVCXPRT *)NULL) {
		_msgout("could not create a handle");
		exit(1);
	}
	if (_rpcpmstart) {
		(void) signal(SIGALRM, (SIG_PF) closedown);
		(void) alarm(_RPCSVC_CLOSEDOWN/2);
	}

	(void) signal(SIGPIPE, SIG_IGN);
	(void) signal(SIGCHLD, (SIG_PF) reaper);
	(void) signal(SIGTERM, (SIG_PF) reaper);
	(void) signal(SIGINT, (SIG_PF) reaper);
	(void) signal(SIGHUP, (SIG_PF) reaper);

	ypupdated_svc_run();
	_msgout("svc_run returned");
	exit(1);
	/* NOTREACHED */
}
Ejemplo n.º 3
0
int
main(int argc, char *argv[])
{
	register SVCXPRT *transp = NULL;
	int sock;
	int proto = 0;
	struct sockaddr_in saddr;
	int asize = sizeof (saddr);
	int ch;

	while ((ch = getopt(argc, argv, "p:h")) != -1) {
		switch (ch) {
		case 'p':
			yp_dir = optarg;
			break;
		default:
			usage();
			break;
		}
	}

	load_securenets();

	if (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) {
		int ssize = sizeof (int);

		if (saddr.sin_family != AF_INET)
			exit(1);
		if (getsockopt(0, SOL_SOCKET, SO_TYPE,
				(char *)&_rpcfdtype, &ssize) == -1)
			exit(1);
		sock = 0;
		_rpcpmstart = 1;
		proto = 0;
		openlog("rpc.ypxfrd", LOG_PID, LOG_DAEMON);
	} else {
#ifndef RPC_SVC_FG
		int size;
		int pid, i;

		pid = fork();
		if (pid < 0)
			err(1, "fork");
		if (pid)
			exit(0);
		size = getdtablesize();
		for (i = 0; i < size; i++)
			(void) close(i);
		i = open(_PATH_CONSOLE, 2);
		(void) dup2(i, 1);
		(void) dup2(i, 2);
		i = open(_PATH_TTY, 2);
		if (i >= 0) {
			(void) ioctl(i, TIOCNOTTY, (char *)NULL);
			(void) close(i);
		}
		openlog("rpc.ypxfrd", LOG_PID, LOG_DAEMON);
#endif
		sock = RPC_ANYSOCK;
		(void) pmap_unset(YPXFRD_FREEBSD_PROG, YPXFRD_FREEBSD_VERS);
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_DGRAM)) {
		transp = svcudp_create(sock);
		if (transp == NULL) {
			_msgout("cannot create udp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_UDP;
		if (!svc_register(transp, YPXFRD_FREEBSD_PROG, YPXFRD_FREEBSD_VERS, ypxfrd_freebsd_prog_1, proto)) {
			_msgout("unable to register (YPXFRD_FREEBSD_PROG, YPXFRD_FREEBSD_VERS, udp).");
			exit(1);
		}
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_STREAM)) {
		transp = svctcp_create(sock, 0, 0);
		if (transp == NULL) {
			_msgout("cannot create tcp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_TCP;
		if (!svc_register(transp, YPXFRD_FREEBSD_PROG, YPXFRD_FREEBSD_VERS, ypxfrd_freebsd_prog_1, proto)) {
			_msgout("unable to register (YPXFRD_FREEBSD_PROG, YPXFRD_FREEBSD_VERS, tcp).");
			exit(1);
		}
	}

	if (transp == (SVCXPRT *)NULL) {
		_msgout("could not create a handle");
		exit(1);
	}
	if (_rpcpmstart) {
		(void) signal(SIGALRM, (SIG_PF) closedown);
		(void) alarm(_RPCSVC_CLOSEDOWN/2);
	}

	(void) signal(SIGPIPE, SIG_IGN);
	(void) signal(SIGCHLD, (SIG_PF) reaper);
	(void) signal(SIGTERM, (SIG_PF) reaper);
	(void) signal(SIGINT, (SIG_PF) reaper);
	(void) signal(SIGHUP, (SIG_PF) reaper);

	ypxfrd_svc_run();
	_msgout("svc_run returned");
	exit(1);
	/* NOTREACHED */
}
Ejemplo n.º 4
0
void
mount_program_3(struct svc_req *rqstp, SVCXPRT *transp)
{
	union {
		dirpath mountproc3_mnt_3_arg;
		dirpath mountproc3_umnt_3_arg;
	} argument;
	char *result;
	xdrproc_t xdr_argument, xdr_result;
	char *(*local)(char *, struct svc_req *);

	_rpcsvcdirty = 1;
	switch (rqstp->rq_proc) {
	case MOUNTPROC3_NULL:
		xdr_argument = (xdrproc_t) xdr_void;
		xdr_result = (xdrproc_t) xdr_void;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_null_3;
		break;

	case MOUNTPROC3_MNT:
		xdr_argument = (xdrproc_t) xdr_dirpath;
		xdr_result = (xdrproc_t) xdr_mountres3;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_mnt_3;
		break;

	case MOUNTPROC3_DUMP:
		xdr_argument = (xdrproc_t) xdr_void;
		xdr_result = (xdrproc_t) xdr_mountlist;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_dump_3;
		break;

	case MOUNTPROC3_UMNT:
		xdr_argument = (xdrproc_t) xdr_dirpath;
		xdr_result = (xdrproc_t) xdr_void;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_umnt_3;
		break;

	case MOUNTPROC3_UMNTALL:
		xdr_argument = (xdrproc_t) xdr_void;
		xdr_result = (xdrproc_t) xdr_void;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_umntall_3;
		break;

	case MOUNTPROC3_EXPORT:
		xdr_argument = (xdrproc_t) xdr_void;
		xdr_result = (xdrproc_t) xdr_exports;
		local = (char *(*)(char *, struct svc_req *)) _mountproc3_export_3;
		break;

	default:
		svcerr_noproc(transp);
		_rpcsvcdirty = 0;
		return;
	}
	(void) memset((char *)&argument, 0, sizeof (argument));
	if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
		svcerr_decode(transp);
		_rpcsvcdirty = 0;
		return;
	}
	result = (*local)((char *)&argument, rqstp);
	if (result != NULL && !svc_sendreply(transp, (xdrproc_t) xdr_result, result)) {
		svcerr_systemerr(transp);
	}
	if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
		_msgout("unable to free arguments");
		exit(1);
	}
	_rpcsvcdirty = 0;
	return;
}
Ejemplo n.º 5
0
void
nfs_program_3(struct svc_req *rqstp, SVCXPRT *transp)
{
	union {
		GETATTR3args nfsproc3_getattr_3_arg;
		SETATTR3args nfsproc3_setattr_3_arg;
		LOOKUP3args nfsproc3_lookup_3_arg;
		ACCESS3args nfsproc3_access_3_arg;
		READLINK3args nfsproc3_readlink_3_arg;
		READ3args nfsproc3_read_3_arg;
		WRITE3args nfsproc3_write_3_arg;
		CREATE3args nfsproc3_create_3_arg;
		MKDIR3args nfsproc3_mkdir_3_arg;
		SYMLINK3args nfsproc3_symlink_3_arg;
		MKNOD3args nfsproc3_mknod_3_arg;
		REMOVE3args nfsproc3_remove_3_arg;
		RMDIR3args nfsproc3_rmdir_3_arg;
		RENAME3args nfsproc3_rename_3_arg;
		LINK3args nfsproc3_link_3_arg;
		READDIR3args nfsproc3_readdir_3_arg;
		READDIRPLUS3args nfsproc3_readdirplus_3_arg;
		FSSTAT3args nfsproc3_fsstat_3_arg;
		FSINFO3args nfsproc3_fsinfo_3_arg;
		PATHCONF3args nfsproc3_pathconf_3_arg;
		COMMIT3args nfsproc3_commit_3_arg;
	} argument;
	char *result;
	xdrproc_t xdr_argument, xdr_result;
	char *(*local)(char *, struct svc_req *);

	_rpcsvcdirty = 1;
	switch (rqstp->rq_proc) {
	case NFSPROC3_NULL:
		xdr_argument = (xdrproc_t) xdr_void;
		xdr_result = (xdrproc_t) xdr_void;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_null_3;
		break;

	case NFSPROC3_GETATTR:
		xdr_argument = (xdrproc_t) xdr_GETATTR3args;
		xdr_result = (xdrproc_t) xdr_GETATTR3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_getattr_3;
		break;

	case NFSPROC3_SETATTR:
		xdr_argument = (xdrproc_t) xdr_SETATTR3args;
		xdr_result = (xdrproc_t) xdr_SETATTR3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_setattr_3;
		break;

	case NFSPROC3_LOOKUP:
		xdr_argument = (xdrproc_t) xdr_LOOKUP3args;
		xdr_result = (xdrproc_t) xdr_LOOKUP3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_lookup_3;
		break;

	case NFSPROC3_ACCESS:
		xdr_argument = (xdrproc_t) xdr_ACCESS3args;
		xdr_result = (xdrproc_t) xdr_ACCESS3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_access_3;
		break;

	case NFSPROC3_READLINK:
		xdr_argument = (xdrproc_t) xdr_READLINK3args;
		xdr_result = (xdrproc_t) xdr_READLINK3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_readlink_3;
		break;

	case NFSPROC3_READ:
		xdr_argument = (xdrproc_t) xdr_READ3args;
		xdr_result = (xdrproc_t) xdr_READ3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_read_3;
		break;

	case NFSPROC3_WRITE:
		xdr_argument = (xdrproc_t) xdr_WRITE3args;
		xdr_result = (xdrproc_t) xdr_WRITE3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_write_3;
		break;

	case NFSPROC3_CREATE:
		xdr_argument = (xdrproc_t) xdr_CREATE3args;
		xdr_result = (xdrproc_t) xdr_CREATE3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_create_3;
		break;

	case NFSPROC3_MKDIR:
		xdr_argument = (xdrproc_t) xdr_MKDIR3args;
		xdr_result = (xdrproc_t) xdr_MKDIR3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_mkdir_3;
		break;

	case NFSPROC3_SYMLINK:
		xdr_argument = (xdrproc_t) xdr_SYMLINK3args;
		xdr_result = (xdrproc_t) xdr_SYMLINK3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_symlink_3;
		break;

	case NFSPROC3_MKNOD:
		xdr_argument = (xdrproc_t) xdr_MKNOD3args;
		xdr_result = (xdrproc_t) xdr_MKNOD3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_mknod_3;
		break;

	case NFSPROC3_REMOVE:
		xdr_argument = (xdrproc_t) xdr_REMOVE3args;
		xdr_result = (xdrproc_t) xdr_REMOVE3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_remove_3;
		break;

	case NFSPROC3_RMDIR:
		xdr_argument = (xdrproc_t) xdr_RMDIR3args;
		xdr_result = (xdrproc_t) xdr_RMDIR3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_rmdir_3;
		break;

	case NFSPROC3_RENAME:
		xdr_argument = (xdrproc_t) xdr_RENAME3args;
		xdr_result = (xdrproc_t) xdr_RENAME3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_rename_3;
		break;

	case NFSPROC3_LINK:
		xdr_argument = (xdrproc_t) xdr_LINK3args;
		xdr_result = (xdrproc_t) xdr_LINK3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_link_3;
		break;

	case NFSPROC3_READDIR:
		xdr_argument = (xdrproc_t) xdr_READDIR3args;
		xdr_result = (xdrproc_t) xdr_READDIR3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_readdir_3;
		break;

	case NFSPROC3_READDIRPLUS:
		xdr_argument = (xdrproc_t) xdr_READDIRPLUS3args;
		xdr_result = (xdrproc_t) xdr_READDIRPLUS3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_readdirplus_3;
		break;

	case NFSPROC3_FSSTAT:
		xdr_argument = (xdrproc_t) xdr_FSSTAT3args;
		xdr_result = (xdrproc_t) xdr_FSSTAT3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_fsstat_3;
		break;

	case NFSPROC3_FSINFO:
		xdr_argument = (xdrproc_t) xdr_FSINFO3args;
		xdr_result = (xdrproc_t) xdr_FSINFO3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_fsinfo_3;
		break;

	case NFSPROC3_PATHCONF:
		xdr_argument = (xdrproc_t) xdr_PATHCONF3args;
		xdr_result = (xdrproc_t) xdr_PATHCONF3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_pathconf_3;
		break;

	case NFSPROC3_COMMIT:
		xdr_argument = (xdrproc_t) xdr_COMMIT3args;
		xdr_result = (xdrproc_t) xdr_COMMIT3res;
		local = (char *(*)(char *, struct svc_req *)) _nfsproc3_commit_3;
		break;

	default:
		svcerr_noproc(transp);
		_rpcsvcdirty = 0;
		return;
	}
	(void) memset((char *)&argument, 0, sizeof (argument));
	if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
		svcerr_decode(transp);
		_rpcsvcdirty = 0;
		return;
	}
	result = (*local)((char *)&argument, rqstp);
	if (result != NULL && !svc_sendreply(transp, (xdrproc_t) xdr_result, result)) {
		svcerr_systemerr(transp);
	}
	if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
		_msgout("unable to free arguments");
		exit(1);
	}
	_rpcsvcdirty = 0;
	return;
}
Ejemplo n.º 6
0
int
main( int argc, char* argv[] )
{
	SVCXPRT *transp = NULL;
	int sock;
	int proto = 0;
	struct sockaddr_in saddr;
	int asize = sizeof (saddr);

	if (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) {
		int ssize = sizeof (int);

		if (saddr.sin_family != AF_INET)
			exit(1);
		if (getsockopt(0, SOL_SOCKET, SO_TYPE,
				(char *)&_rpcfdtype, &ssize) == -1)
			exit(1);
		sock = 0;
		_rpcpmstart = 1;
		proto = 0;
		openlog("Smoking", LOG_PID, LOG_DAEMON);
	} else {
#ifndef RPC_SVC_FG
		int size;
		int pid, i;

		pid = fork();
		if (pid < 0) {
			perror("cannot fork");
			exit(1);
		}
		if (pid)
			exit(0);
		size = getdtablesize();
		for (i = 0; i < size; i++)
			(void) close(i);
		i = open("/dev/console", 2);
		(void) dup2(i, 1);
		(void) dup2(i, 2);
		i = open("/dev/tty", 2);
		if (i >= 0) {
			(void) ioctl(i, TIOCNOTTY, (char *)NULL);
			(void) close(i);
		}
		openlog("Smoking", LOG_PID, LOG_DAEMON);
#endif
		sock = RPC_ANYSOCK;
		(void) pmap_unset(SMOKE, SMOKERS);
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_DGRAM)) {
		transp = svcudp_create(sock);
		if (transp == NULL) {
			_msgout("cannot create udp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_UDP;
		if (!svc_register(transp, SMOKE, SMOKERS, smoke_1, proto)) {
			_msgout("unable to register (SMOKE, SMOKERS, udp).");
			exit(1);
		}
	}

	if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_STREAM)) {
		if (_rpcpmstart)
			transp = svcfd_create(sock, 0, 0);
		else
			transp = svctcp_create(sock, 0, 0);
		if (transp == NULL) {
			_msgout("cannot create tcp service.");
			exit(1);
		}
		if (!_rpcpmstart)
			proto = IPPROTO_TCP;
		if (!svc_register(transp, SMOKE, SMOKERS, smoke_1, proto)) {
			_msgout("unable to register (SMOKE, SMOKERS, tcp).");
			exit(1);
		}
	}

	if (transp == (SVCXPRT *)NULL) {
		_msgout("could not create a handle");
		exit(1);
	}
	if (_rpcpmstart) {
		(void) signal(SIGALRM, (SIG_PF) closedown);
		(void) alarm(_RPCSVC_CLOSEDOWN);
	}
	svc_run();
	_msgout("svc_run returned");
	exit(1);
	/* NOTREACHED */
}