View | Details | Raw Unified | Return to bug 26071
Collapse All | Expand All

(-)lib/libc/rpc/rpc_soc.c (+80 lines)
Lines 450-453 Link Here
450
	return (dummy);
450
	return (dummy);
451
}
451
}
452
452
453
/*
454
 * Create a client handle for a unix connection. Obsoleted by clnt_vc_create()
455
 */
456
CLIENT *
457
clntunix_create(raddr, prog, vers, sockp, sendsz, recvsz)
458
	struct sockaddr_un *raddr;
459
	u_long prog;
460
	u_long vers;
461
	register int *sockp;
462
	u_int sendsz;
463
	u_int recvsz;
464
{
465
	struct netbuf nbuf;
466
	int len;
467
468
	if (*sockp < 0) {
469
		*sockp = socket(AF_UNIX, SOCK_STREAM, 0);
470
		len = strlen(raddr->sun_path) + sizeof(raddr->sun_family) +
471
		    sizeof(raddr->sun_len) + 1;
472
		raddr->sun_len = len;
473
		if ((*sockp < 0)
474
		    || (connect(*sockp, (struct sockaddr *)raddr, len) < 0)) {
475
			rpc_createerr.cf_stat = RPC_SYSTEMERROR;
476
			rpc_createerr.cf_error.re_errno = errno;
477
			if (*sockp != -1)
478
				(void)_close(*sockp);
479
			return (NULL);
480
		}
481
	}
482
	nbuf.len = raddr->sun_len = SUN_LEN(raddr);
483
	nbuf.maxlen = sizeof (struct sockaddr_un);
484
	nbuf.buf = raddr;
485
			
486
	return(clnt_vc_create(*sockp, &nbuf, prog, vers, sendsz, recvsz));
487
}
488
489
/*
490
 * Creates, registers, and returns a (rpc) unix based transporter.
491
 * Obsoleted by svc_vc_create().
492
 */
493
SVCXPRT *
494
svcunix_create(sock, sendsize, recvsize, path)
495
        register int sock;
496
        u_int sendsize;
497
        u_int recvsize;
498
        char *path;
499
{
500
	struct sockaddr_un addr;
501
	int len = sizeof(struct sockaddr_un);
502
503
	memset(&addr, 0, sizeof (addr));
504
	addr.sun_family = AF_UNIX;
505
	strcpy(addr.sun_path, path);
506
	len = strlen(addr.sun_path) + sizeof(addr.sun_family) +
507
	    sizeof(addr.sun_len) + 1;
508
	addr.sun_len = len;
509
510
	if (sock == RPC_ANYSOCK) {
511
		if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
512
			return ((SVCXPRT *)NULL);
513
	}
514
515
	bind(sock, (struct sockaddr *)&addr, len);
516
517
	return(svc_vc_create(sock, sendsize, recvsize));
518
}
519
520
/*
521
 * Like svunix_create(), except the routine takes any *open* UNIX file
522
 * descriptor as its first input. Obsoleted by svc_fd_create();
523
 */
524
SVCXPRT *
525
svcunixfd_create(fd, sendsize, recvsize)
526
        int fd;
527
        u_int sendsize;
528
        u_int recvsize;
529
{
530
 	return (svc_fd_create(fd, sendsize, recvsize));
531
}
532
453
#endif /* PORTMAP */
533
#endif /* PORTMAP */
(-)include/rpc/clnt.h (+10 lines)
Lines 230-235 Link Here
230
#define CLGET_RETRY_TIMEOUT 5   /* get retry timeout (timeval) */
230
#define CLGET_RETRY_TIMEOUT 5   /* get retry timeout (timeval) */
231
231
232
/*
232
/*
233
 * Operations which GSSAPI needs. (Bletch.)
234
 */
235
#define CLGET_LOCAL_ADDR    19  /* get local addr (sockaddr) */
236
237
/*
233
 * void
238
 * void
234
 * CLNT_DESTROY(rh);
239
 * CLNT_DESTROY(rh);
235
 * 	CLIENT *rh;
240
 * 	CLIENT *rh;
Lines 335-340 Link Here
335
extern CLIENT *clnt_vc_create __P((const int, const struct netbuf *,
340
extern CLIENT *clnt_vc_create __P((const int, const struct netbuf *,
336
				   const rpcprog_t, const rpcvers_t,
341
				   const rpcprog_t, const rpcvers_t,
337
				   const u_int, const u_int));
342
				   const u_int, const u_int));
343
/*
344
 * Added for compatibility to old rpc 4.0. Obsoleted by clnt_vc_create().
345
 */
346
extern CLIENT *clntunix_create  __P((struct sockaddr_un *,
347
				     u_long, u_long, int *, u_int, u_int));
338
/*
348
/*
339
 *	const int fd;				-- open file descriptor
349
 *	const int fd;				-- open file descriptor
340
 *	const struct netbuf *svcaddr;		-- servers address
350
 *	const struct netbuf *svcaddr;		-- servers address
(-)include/rpc/svc.h (+10 lines)
Lines 381-386 Link Here
381
 *      const u_int recvsize;                   -- max recv size
381
 *      const u_int recvsize;                   -- max recv size
382
 */
382
 */
383
383
384
/*
385
 * Added for compatibility to old rpc 4.0. Obsoleted by svc_vc_create().
386
 */
387
extern SVCXPRT *svcunix_create __P((int, u_int, u_int, char *));
388
384
extern SVCXPRT *svc_dg_create __P((const int, const u_int, const u_int));
389
extern SVCXPRT *svc_dg_create __P((const int, const u_int, const u_int));
385
        /*
390
        /*
386
         * const int fd;                                -- open connection
391
         * const int fd;                                -- open connection
Lines 399-404 Link Here
399
 *      const u_int sendsize;                   -- max send size
404
 *      const u_int sendsize;                   -- max send size
400
 *      const u_int recvsize;                   -- max recv size
405
 *      const u_int recvsize;                   -- max recv size
401
 */
406
 */
407
408
/*
409
 * Added for compatibility to old rpc 4.0. Obsoleted by svc_fd_create().
410
 */
411
extern SVCXPRT *svcunixfd_create __P((int, u_int, u_int));
402
412
403
/*
413
/*
404
 * Memory based rpc (for speed check and testing)
414
 * Memory based rpc (for speed check and testing)

Return to bug 26071