summaryrefslogtreecommitdiff
path: root/libc/inet/rpc/svc_tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/inet/rpc/svc_tcp.c')
-rw-r--r--libc/inet/rpc/svc_tcp.c219
1 files changed, 103 insertions, 116 deletions
diff --git a/libc/inet/rpc/svc_tcp.c b/libc/inet/rpc/svc_tcp.c
index 837e70c82..0008eaa0c 100644
--- a/libc/inet/rpc/svc_tcp.c
+++ b/libc/inet/rpc/svc_tcp.c
@@ -51,12 +51,12 @@ extern errno;
/*
* Ops vector for TCP/IP based rpc service handle
*/
-static bool_t svctcp_recv();
-static enum xprt_stat svctcp_stat();
-static bool_t svctcp_getargs();
-static bool_t svctcp_reply();
-static bool_t svctcp_freeargs();
-static void svctcp_destroy();
+static bool_t svctcp_recv();
+static enum xprt_stat svctcp_stat();
+static bool_t svctcp_getargs();
+static bool_t svctcp_reply();
+static bool_t svctcp_freeargs();
+static void svctcp_destroy();
static struct xp_ops svctcp_op = {
svctcp_recv,
@@ -70,8 +70,8 @@ static struct xp_ops svctcp_op = {
/*
* Ops vector for TCP/IP rendezvous handler
*/
-static bool_t rendezvous_request();
-static enum xprt_stat rendezvous_stat();
+static bool_t rendezvous_request();
+static enum xprt_stat rendezvous_stat();
static struct xp_ops svctcp_rendezvous_op = {
rendezvous_request,
@@ -85,12 +85,12 @@ static struct xp_ops svctcp_rendezvous_op = {
static int readtcp(), writetcp();
static SVCXPRT *makefd_xprt();
-struct tcp_rendezvous { /* kept in xprt->xp_p1 */
+struct tcp_rendezvous { /* kept in xprt->xp_p1 */
u_int sendsize;
u_int recvsize;
};
-struct tcp_conn { /* kept in xprt->xp_p1 */
+struct tcp_conn { /* kept in xprt->xp_p1 */
enum xprt_stat strm_stat;
u_long x_id;
XDR xdrs;
@@ -117,11 +117,10 @@ struct tcp_conn { /* kept in xprt->xp_p1 */
* how big the send and receive buffers are via the second and third parms;
* 0 => use the system default.
*/
-SVCXPRT *
-svctcp_create(sock, sendsize, recvsize)
- register int sock;
- u_int sendsize;
- u_int recvsize;
+SVCXPRT *svctcp_create(sock, sendsize, recvsize)
+register int sock;
+u_int sendsize;
+u_int recvsize;
{
bool_t madesock = FALSE;
register SVCXPRT *xprt;
@@ -132,37 +131,37 @@ svctcp_create(sock, sendsize, recvsize)
if (sock == RPC_ANYSOCK) {
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
perror("svc_tcp.c - tcp socket creation problem");
- return ((SVCXPRT *)NULL);
+ return ((SVCXPRT *) NULL);
}
madesock = TRUE;
}
- bzero((char *)&addr, sizeof (addr));
+ bzero((char *) &addr, sizeof(addr));
addr.sin_family = AF_INET;
if (bindresvport(sock, &addr)) {
addr.sin_port = 0;
- (void)bind(sock, (struct sockaddr *)&addr, len);
+ (void) bind(sock, (struct sockaddr *) &addr, len);
}
- if ((getsockname(sock, (struct sockaddr *)&addr, &len) != 0) ||
- (listen(sock, 2) != 0)) {
+ if ((getsockname(sock, (struct sockaddr *) &addr, &len) != 0) ||
+ (listen(sock, 2) != 0)) {
perror("svctcp_.c - cannot getsockname or listen");
if (madesock)
- (void)close(sock);
- return ((SVCXPRT *)NULL);
+ (void) close(sock);
+ return ((SVCXPRT *) NULL);
}
- r = (struct tcp_rendezvous *)mem_alloc(sizeof(*r));
+ r = (struct tcp_rendezvous *) mem_alloc(sizeof(*r));
if (r == NULL) {
(void) fprintf(stderr, "svctcp_create: out of memory\n");
return (NULL);
}
r->sendsize = sendsize;
r->recvsize = recvsize;
- xprt = (SVCXPRT *)mem_alloc(sizeof(SVCXPRT));
+ xprt = (SVCXPRT *) mem_alloc(sizeof(SVCXPRT));
if (xprt == NULL) {
(void) fprintf(stderr, "svctcp_create: out of memory\n");
return (NULL);
}
xprt->xp_p2 = NULL;
- xprt->xp_p1 = (caddr_t)r;
+ xprt->xp_p1 = (caddr_t) r;
xprt->xp_verf = _null_auth;
xprt->xp_ops = &svctcp_rendezvous_op;
xprt->xp_port = ntohs(addr.sin_port);
@@ -175,69 +174,68 @@ svctcp_create(sock, sendsize, recvsize)
* Like svtcp_create(), except the routine takes any *open* UNIX file
* descriptor as its first input.
*/
-SVCXPRT *
-svcfd_create(fd, sendsize, recvsize)
- int fd;
- u_int sendsize;
- u_int recvsize;
+SVCXPRT *svcfd_create(fd, sendsize, recvsize)
+int fd;
+u_int sendsize;
+u_int recvsize;
{
return (makefd_xprt(fd, sendsize, recvsize));
}
-static SVCXPRT *
-makefd_xprt(fd, sendsize, recvsize)
- int fd;
- u_int sendsize;
- u_int recvsize;
+static SVCXPRT *makefd_xprt(fd, sendsize, recvsize)
+int fd;
+u_int sendsize;
+u_int recvsize;
{
register SVCXPRT *xprt;
register struct tcp_conn *cd;
-
- xprt = (SVCXPRT *)mem_alloc(sizeof(SVCXPRT));
- if (xprt == (SVCXPRT *)NULL) {
+
+ xprt = (SVCXPRT *) mem_alloc(sizeof(SVCXPRT));
+ if (xprt == (SVCXPRT *) NULL) {
(void) fprintf(stderr, "svc_tcp: makefd_xprt: out of memory\n");
goto done;
}
- cd = (struct tcp_conn *)mem_alloc(sizeof(struct tcp_conn));
- if (cd == (struct tcp_conn *)NULL) {
+ cd = (struct tcp_conn *) mem_alloc(sizeof(struct tcp_conn));
+
+ if (cd == (struct tcp_conn *) NULL) {
(void) fprintf(stderr, "svc_tcp: makefd_xprt: out of memory\n");
mem_free((char *) xprt, sizeof(SVCXPRT));
- xprt = (SVCXPRT *)NULL;
+ xprt = (SVCXPRT *) NULL;
goto done;
}
cd->strm_stat = XPRT_IDLE;
xdrrec_create(&(cd->xdrs), sendsize, recvsize,
- (caddr_t)xprt, readtcp, writetcp);
+ (caddr_t) xprt, readtcp, writetcp);
xprt->xp_p2 = NULL;
- xprt->xp_p1 = (caddr_t)cd;
+ xprt->xp_p1 = (caddr_t) cd;
xprt->xp_verf.oa_base = cd->verf_body;
xprt->xp_addrlen = 0;
- xprt->xp_ops = &svctcp_op; /* truely deals with calls */
- xprt->xp_port = 0; /* this is a connection, not a rendezvouser */
+ xprt->xp_ops = &svctcp_op; /* truely deals with calls */
+ xprt->xp_port = 0; /* this is a connection, not a rendezvouser */
xprt->xp_sock = fd;
xprt_register(xprt);
- done:
+ done:
return (xprt);
}
-static bool_t
-rendezvous_request(xprt)
- register SVCXPRT *xprt;
+static bool_t rendezvous_request(xprt)
+register SVCXPRT *xprt;
{
int sock;
struct tcp_rendezvous *r;
struct sockaddr_in addr;
int len;
- r = (struct tcp_rendezvous *)xprt->xp_p1;
- again:
+ r = (struct tcp_rendezvous *) xprt->xp_p1;
+ again:
len = sizeof(struct sockaddr_in);
- if ((sock = accept(xprt->xp_sock, (struct sockaddr *)&addr,
- &len)) < 0) {
+
+ if ((sock = accept(xprt->xp_sock, (struct sockaddr *) &addr,
+ &len)) < 0) {
if (errno == EINTR)
goto again;
- return (FALSE);
+ return (FALSE);
}
/*
* make a new transporter (re-uses xprt)
@@ -245,24 +243,22 @@ rendezvous_request(xprt)
xprt = makefd_xprt(sock, r->sendsize, r->recvsize);
xprt->xp_raddr = addr;
xprt->xp_addrlen = len;
- return (FALSE); /* there is never an rpc msg to be processed */
+ return (FALSE); /* there is never an rpc msg to be processed */
}
-static enum xprt_stat
-rendezvous_stat()
+static enum xprt_stat rendezvous_stat()
{
return (XPRT_IDLE);
}
-static void
-svctcp_destroy(xprt)
- register SVCXPRT *xprt;
+static void svctcp_destroy(xprt)
+register SVCXPRT *xprt;
{
- register struct tcp_conn *cd = (struct tcp_conn *)xprt->xp_p1;
+ register struct tcp_conn *cd = (struct tcp_conn *) xprt->xp_p1;
xprt_unregister(xprt);
- (void)close(xprt->xp_sock);
+ (void) close(xprt->xp_sock);
if (xprt->xp_port != 0) {
/* a rendezvouser socket */
xprt->xp_port = 0;
@@ -270,8 +266,9 @@ svctcp_destroy(xprt)
/* an actual connection socket */
XDR_DESTROY(&(cd->xdrs));
}
- mem_free((caddr_t)cd, sizeof(struct tcp_conn));
- mem_free((caddr_t)xprt, sizeof(SVCXPRT));
+ mem_free((caddr_t) cd, sizeof(struct tcp_conn));
+
+ mem_free((caddr_t) xprt, sizeof(SVCXPRT));
}
/*
@@ -285,13 +282,13 @@ static struct timeval wait_per_try = { 35, 0 };
* any error is fatal and the connection is closed.
* (And a read of zero bytes is a half closed stream => error.)
*/
-static int
-readtcp(xprt, buf, len)
- register SVCXPRT *xprt;
- caddr_t buf;
- register int len;
+static int readtcp(xprt, buf, len)
+register SVCXPRT *xprt;
+caddr_t buf;
+register int len;
{
register int sock = xprt->xp_sock;
+
#ifdef FD_SETSIZE
fd_set mask;
fd_set readfds;
@@ -301,11 +298,11 @@ readtcp(xprt, buf, len)
#else
register int mask = 1 << sock;
int readfds;
-#endif /* def FD_SETSIZE */
+#endif /* def FD_SETSIZE */
do {
readfds = mask;
- if (select(_rpc_dtablesize(), &readfds, (int*)NULL, (int*)NULL,
- &wait_per_try) <= 0) {
+ if (select(_rpc_dtablesize(), &readfds, (int *) NULL, (int *) NULL,
+ &wait_per_try) <= 0) {
if (errno == EINTR) {
continue;
}
@@ -315,12 +312,12 @@ readtcp(xprt, buf, len)
} while (!FD_ISSET(sock, &readfds));
#else
} while (readfds != mask);
-#endif /* def FD_SETSIZE */
+#endif /* def FD_SETSIZE */
if ((len = read(sock, buf, len)) > 0) {
return (len);
}
-fatal_err:
- ((struct tcp_conn *)(xprt->xp_p1))->strm_stat = XPRT_DIED;
+ fatal_err:
+ ((struct tcp_conn *) (xprt->xp_p1))->strm_stat = XPRT_DIED;
return (-1);
}
@@ -328,49 +325,43 @@ fatal_err:
* writes data to the tcp connection.
* Any error is fatal and the connection is closed.
*/
-static int
-writetcp(xprt, buf, len)
- register SVCXPRT *xprt;
- caddr_t buf;
- int len;
+static int writetcp(xprt, buf, len)
+register SVCXPRT *xprt;
+caddr_t buf;
+int len;
{
register int i, cnt;
for (cnt = len; cnt > 0; cnt -= i, buf += i) {
if ((i = write(xprt->xp_sock, buf, cnt)) < 0) {
- ((struct tcp_conn *)(xprt->xp_p1))->strm_stat =
- XPRT_DIED;
+ ((struct tcp_conn *) (xprt->xp_p1))->strm_stat = XPRT_DIED;
return (-1);
}
}
return (len);
}
-static enum xprt_stat
-svctcp_stat(xprt)
- SVCXPRT *xprt;
+static enum xprt_stat svctcp_stat(xprt)
+SVCXPRT *xprt;
{
- register struct tcp_conn *cd =
- (struct tcp_conn *)(xprt->xp_p1);
+ register struct tcp_conn *cd = (struct tcp_conn *) (xprt->xp_p1);
if (cd->strm_stat == XPRT_DIED)
return (XPRT_DIED);
- if (! xdrrec_eof(&(cd->xdrs)))
+ if (!xdrrec_eof(&(cd->xdrs)))
return (XPRT_MOREREQS);
return (XPRT_IDLE);
}
-static bool_t
-svctcp_recv(xprt, msg)
- SVCXPRT *xprt;
- register struct rpc_msg *msg;
+static bool_t svctcp_recv(xprt, msg)
+SVCXPRT *xprt;
+register struct rpc_msg *msg;
{
- register struct tcp_conn *cd =
- (struct tcp_conn *)(xprt->xp_p1);
+ register struct tcp_conn *cd = (struct tcp_conn *) (xprt->xp_p1);
register XDR *xdrs = &(cd->xdrs);
xdrs->x_op = XDR_DECODE;
- (void)xdrrec_skiprecord(xdrs);
+ (void) xdrrec_skiprecord(xdrs);
if (xdr_callmsg(xdrs, msg)) {
cd->x_id = msg->rm_xid;
return (TRUE);
@@ -378,42 +369,38 @@ svctcp_recv(xprt, msg)
return (FALSE);
}
-static bool_t
-svctcp_getargs(xprt, xdr_args, args_ptr)
- SVCXPRT *xprt;
- xdrproc_t xdr_args;
- caddr_t args_ptr;
+static bool_t svctcp_getargs(xprt, xdr_args, args_ptr)
+SVCXPRT *xprt;
+xdrproc_t xdr_args;
+caddr_t args_ptr;
{
- return ((*xdr_args)(&(((struct tcp_conn *)(xprt->xp_p1))->xdrs), args_ptr));
+ return ((*xdr_args)
+ (&(((struct tcp_conn *) (xprt->xp_p1))->xdrs), args_ptr));
}
-static bool_t
-svctcp_freeargs(xprt, xdr_args, args_ptr)
- SVCXPRT *xprt;
- xdrproc_t xdr_args;
- caddr_t args_ptr;
+static bool_t svctcp_freeargs(xprt, xdr_args, args_ptr)
+SVCXPRT *xprt;
+xdrproc_t xdr_args;
+caddr_t args_ptr;
{
- register XDR *xdrs =
- &(((struct tcp_conn *)(xprt->xp_p1))->xdrs);
+ register XDR *xdrs = &(((struct tcp_conn *) (xprt->xp_p1))->xdrs);
xdrs->x_op = XDR_FREE;
- return ((*xdr_args)(xdrs, args_ptr));
+ return ((*xdr_args) (xdrs, args_ptr));
}
-static bool_t
-svctcp_reply(xprt, msg)
- SVCXPRT *xprt;
- register struct rpc_msg *msg;
+static bool_t svctcp_reply(xprt, msg)
+SVCXPRT *xprt;
+register struct rpc_msg *msg;
{
- register struct tcp_conn *cd =
- (struct tcp_conn *)(xprt->xp_p1);
+ register struct tcp_conn *cd = (struct tcp_conn *) (xprt->xp_p1);
register XDR *xdrs = &(cd->xdrs);
register bool_t stat;
xdrs->x_op = XDR_ENCODE;
msg->rm_xid = cd->x_id;
stat = xdr_replymsg(xdrs, msg);
- (void)xdrrec_endofrecord(xdrs, TRUE);
+ (void) xdrrec_endofrecord(xdrs, TRUE);
return (stat);
}