summaryrefslogtreecommitdiffstats
path: root/libexec/rpc.sprayd
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2002-07-15 18:51:57 +0000
committeralfred <alfred@FreeBSD.org>2002-07-15 18:51:57 +0000
commit83a53d0868085db818fddd8cb38eecc0c39cad8d (patch)
treea7c706e5ad9f636ce740a033b0fa75319465add7 /libexec/rpc.sprayd
parent08255d70df400237c666515b55e2726296ded480 (diff)
downloadFreeBSD-src-83a53d0868085db818fddd8cb38eecc0c39cad8d.zip
FreeBSD-src-83a53d0868085db818fddd8cb38eecc0c39cad8d.tar.gz
Port to TI/RPC and/or IPV6.
Submitted by: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
Diffstat (limited to 'libexec/rpc.sprayd')
-rw-r--r--libexec/rpc.sprayd/sprayd.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/libexec/rpc.sprayd/sprayd.c b/libexec/rpc.sprayd/sprayd.c
index fd45939..20210d9 100644
--- a/libexec/rpc.sprayd/sprayd.c
+++ b/libexec/rpc.sprayd/sprayd.c
@@ -34,7 +34,6 @@ static const char rcsid[] =
#endif /* not lint */
#include <rpc/rpc.h>
-#include <rpc/pmap_clnt.h>
#include <rpcsvc/spray.h>
#include <signal.h>
#include <stdio.h>
@@ -63,7 +62,7 @@ static int from_inetd = 1;
void
cleanup(int sig __unused)
{
- (void) pmap_unset(SPRAYPROG, SPRAYVERS);
+ (void) rpcb_unset(SPRAYPROG, SPRAYVERS, NULL);
exit(0);
}
@@ -77,9 +76,8 @@ int
main(int argc, char *argv[])
{
SVCXPRT *transp;
- int sock = 0;
- int proto = 0;
- struct sockaddr_in from;
+ int ok;
+ struct sockaddr_storage from;
int fromlen;
/*
@@ -88,14 +86,12 @@ main(int argc, char *argv[])
fromlen = sizeof(from);
if (getsockname(0, (struct sockaddr *)&from, &fromlen) < 0) {
from_inetd = 0;
- sock = RPC_ANYSOCK;
- proto = IPPROTO_UDP;
}
if (!from_inetd) {
daemon(0, 0);
- (void) pmap_unset(SPRAYPROG, SPRAYVERS);
+ (void) rpcb_unset(SPRAYPROG, SPRAYVERS, NULL);
(void) signal(SIGINT, cleanup);
(void) signal(SIGTERM, cleanup);
@@ -107,15 +103,21 @@ main(int argc, char *argv[])
openlog("rpc.sprayd", LOG_CONS|LOG_PID, LOG_DAEMON);
- transp = svcudp_create(sock);
- if (transp == NULL) {
- syslog(LOG_ERR, "cannot create udp service");
- return 1;
- }
- if (!svc_register(transp, SPRAYPROG, SPRAYVERS, spray_service, proto)) {
+ if (from_inetd) {
+ transp = svc_tli_create(0, NULL, NULL, 0, 0);
+ if (transp == NULL) {
+ syslog(LOG_ERR, "cannot create udp service.");
+ exit(1);
+ }
+ ok = svc_reg(transp, SPRAYPROG, SPRAYVERS,
+ spray_service, NULL);
+ } else
+ ok = svc_create(spray_service,
+ SPRAYPROG, SPRAYVERS, "udp");
+ if (!ok) {
syslog(LOG_ERR,
"unable to register (SPRAYPROG, SPRAYVERS, %s)",
- proto ? "udp" : "(inetd)");
+ (!from_inetd)?"udp":"(inetd)");
return 1;
}
OpenPOWER on IntegriCloud