예제 #1
0
void ippool_api_init(void)
{
	int result;

	/* Register RPC interface */
	ippool_rpc_xprt = svcudp_create(RPC_ANYSOCK);
	if (ippool_rpc_xprt == NULL) {
		ippool_log(LOG_ERR, "unable to register with RPC");
		exit(1);
	}

	/* FIXME: is this really required? */
	svc_unregister(IPPOOL_PROG, IPPOOL_VERSION);
	
	/* Note: must call this or the registration fails every other time
	 * the daemon is started. */
	(void) pmap_unset(IPPOOL_PROG, IPPOOL_VERSION);


	result = svc_register(ippool_rpc_xprt, IPPOOL_PROG, IPPOOL_VERSION, ippool_prog_1, IPPROTO_UDP);
	if (result == 0) {	/* UNIX is nice and consistent about error codes ;-) */
		ippool_log(LOG_ERR, "unable to register RPC program");
		exit(1);		
	}
	result = usl_fd_add_fd(ippool_rpc_xprt->xp_sock, ippool_api_rpc_msg, ippool_rpc_xprt);
	if (result < 0) {
		ippool_log(LOG_ERR, "unable to register RPC handler");
		exit(1);
	}
}
예제 #2
0
void l2tp_api_init(void)
{
	int result;

	/* Register RPC interface */
	l2tp_rpc_xprt = svcudp_create(RPC_ANYSOCK);
	if (l2tp_rpc_xprt == NULL) {
		l2tp_log(LOG_ERR, "unable to register with RPC");
		exit(1);
	}

	(void) pmap_unset(L2TP_PROG, L2TP_VERSION);
	result = svc_register(l2tp_rpc_xprt, L2TP_PROG, L2TP_VERSION, l2tp_prog_1, IPPROTO_UDP);
	if (result == 0) {	/* UNIX is nice and consistent about error codes ;-) */
		l2tp_log(LOG_ERR, "unable to register RPC program");
		exit(1);
	}
	result = usl_fd_add_fd(l2tp_rpc_xprt->xp_sock, l2tp_api_rpc_msg, l2tp_rpc_xprt);
	if (result < 0) {
		l2tp_log(LOG_ERR, "unable to register RPC handler");
		exit(1);
	}

	l2tp_event_rpc_xprt = svcudp_create(RPC_ANYSOCK);
	if (l2tp_event_rpc_xprt == NULL) {
		l2tp_log(LOG_ERR, "unable to register event interface with RPC");
		exit(1);
	}
	(void) pmap_unset(L2TP_EVENT_PROG, L2TP_EVENT_VERSION);
	result = svc_register(l2tp_event_rpc_xprt, L2TP_EVENT_PROG, L2TP_EVENT_VERSION, l2tp_event_prog_1, IPPROTO_UDP);
	if (result == 0) {	/* UNIX is nice and consistent about error codes ;-) */
		l2tp_log(LOG_ERR, "unable to register RPC program");
		exit(1);
	}
	result = usl_fd_add_fd(l2tp_event_rpc_xprt->xp_sock, l2tp_api_rpc_msg, l2tp_event_rpc_xprt);
	if (result < 0) {
		l2tp_log(LOG_ERR, "unable to register event RPC handler");
		exit(1);
	}
}
예제 #3
0
파일: ippool_api.c 프로젝트: deanzhang/pool
void ippool_api_init(void)
{
	int result;

	/* Register RPC interface */
	ippool_rpc_xprt = svcudp_create(RPC_ANYSOCK);
	if (ippool_rpc_xprt == NULL) {
		ippool_log(LOG_ERR, "unable to register with RPC");
		exit(1);
	}
	result = usl_fd_add_fd(ippool_rpc_xprt->xp_sock, ippool_api_rpc_msg, ippool_rpc_xprt);
	if (result < 0) {
		ippool_log(LOG_ERR, "unable to register RPC handler");
		exit(1);
	}
	svc_unregister(IPPOOL_PROG, IPPOOL_VERSION);
	result = svc_register(ippool_rpc_xprt, IPPOOL_PROG, IPPOOL_VERSION, ippool_prog_1, IPPROTO_UDP);
	if (result == 0) {	/* UNIX is nice and consistent about error codes ;-) */
		ippool_log(LOG_ERR, "unable to register RPC program");
		exit(1);		
	}
}