FreeBSD Bugzilla – Attachment 13776 Details for
Bug 26071
[Fix] af_unix rpc compatility
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 3.80 KB, created by
mb
on 2001-03-25 14:30:01 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
mb
Created:
2001-03-25 14:30:01 UTC
Size:
3.80 KB
patch
obsolete
>--- lib/libc/rpc/rpc_soc.c Sun Mar 25 14:16:58 2001 >+++ lib/libc/rpc/rpc_soc.c Sun Mar 25 14:14:41 2001 >@@ -450,4 +450,84 @@ > return (dummy); > } > >+/* >+ * Create a client handle for a unix connection. Obsoleted by clnt_vc_create() >+ */ >+CLIENT * >+clntunix_create(raddr, prog, vers, sockp, sendsz, recvsz) >+ struct sockaddr_un *raddr; >+ u_long prog; >+ u_long vers; >+ register int *sockp; >+ u_int sendsz; >+ u_int recvsz; >+{ >+ struct netbuf nbuf; >+ int len; >+ >+ if (*sockp < 0) { >+ *sockp = socket(AF_UNIX, SOCK_STREAM, 0); >+ len = strlen(raddr->sun_path) + sizeof(raddr->sun_family) + >+ sizeof(raddr->sun_len) + 1; >+ raddr->sun_len = len; >+ if ((*sockp < 0) >+ || (connect(*sockp, (struct sockaddr *)raddr, len) < 0)) { >+ rpc_createerr.cf_stat = RPC_SYSTEMERROR; >+ rpc_createerr.cf_error.re_errno = errno; >+ if (*sockp != -1) >+ (void)_close(*sockp); >+ return (NULL); >+ } >+ } >+ nbuf.len = raddr->sun_len = SUN_LEN(raddr); >+ nbuf.maxlen = sizeof (struct sockaddr_un); >+ nbuf.buf = raddr; >+ >+ return(clnt_vc_create(*sockp, &nbuf, prog, vers, sendsz, recvsz)); >+} >+ >+/* >+ * Creates, registers, and returns a (rpc) unix based transporter. >+ * Obsoleted by svc_vc_create(). >+ */ >+SVCXPRT * >+svcunix_create(sock, sendsize, recvsize, path) >+ register int sock; >+ u_int sendsize; >+ u_int recvsize; >+ char *path; >+{ >+ struct sockaddr_un addr; >+ int len = sizeof(struct sockaddr_un); >+ >+ memset(&addr, 0, sizeof (addr)); >+ addr.sun_family = AF_UNIX; >+ strcpy(addr.sun_path, path); >+ len = strlen(addr.sun_path) + sizeof(addr.sun_family) + >+ sizeof(addr.sun_len) + 1; >+ addr.sun_len = len; >+ >+ if (sock == RPC_ANYSOCK) { >+ if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) >+ return ((SVCXPRT *)NULL); >+ } >+ >+ bind(sock, (struct sockaddr *)&addr, len); >+ >+ return(svc_vc_create(sock, sendsize, recvsize)); >+} >+ >+/* >+ * Like svunix_create(), except the routine takes any *open* UNIX file >+ * descriptor as its first input. Obsoleted by svc_fd_create(); >+ */ >+SVCXPRT * >+svcunixfd_create(fd, sendsize, recvsize) >+ int fd; >+ u_int sendsize; >+ u_int recvsize; >+{ >+ return (svc_fd_create(fd, sendsize, recvsize)); >+} >+ > #endif /* PORTMAP */ >--- include/rpc/clnt.h Sun Mar 25 15:15:51 2001 >+++ include/rpc/clnt.h Sun Mar 25 15:00:56 2001 >@@ -230,6 +230,11 @@ > #define CLGET_RETRY_TIMEOUT 5 /* get retry timeout (timeval) */ > > /* >+ * Operations which GSSAPI needs. (Bletch.) >+ */ >+#define CLGET_LOCAL_ADDR 19 /* get local addr (sockaddr) */ >+ >+/* > * void > * CLNT_DESTROY(rh); > * CLIENT *rh; >@@ -335,6 +340,11 @@ > extern CLIENT *clnt_vc_create __P((const int, const struct netbuf *, > const rpcprog_t, const rpcvers_t, > const u_int, const u_int)); >+/* >+ * Added for compatibility to old rpc 4.0. Obsoleted by clnt_vc_create(). >+ */ >+extern CLIENT *clntunix_create __P((struct sockaddr_un *, >+ u_long, u_long, int *, u_int, u_int)); > /* > * const int fd; -- open file descriptor > * const struct netbuf *svcaddr; -- servers address >--- include/rpc/svc.h Fri Mar 23 19:00:05 2001 >+++ include/rpc/svc.h Sun Mar 25 15:06:09 2001 >@@ -381,6 +381,11 @@ > * const u_int recvsize; -- max recv size > */ > >+/* >+ * Added for compatibility to old rpc 4.0. Obsoleted by svc_vc_create(). >+ */ >+extern SVCXPRT *svcunix_create __P((int, u_int, u_int, char *)); >+ > extern SVCXPRT *svc_dg_create __P((const int, const u_int, const u_int)); > /* > * const int fd; -- open connection >@@ -399,6 +404,11 @@ > * const u_int sendsize; -- max send size > * const u_int recvsize; -- max recv size > */ >+ >+/* >+ * Added for compatibility to old rpc 4.0. Obsoleted by svc_fd_create(). >+ */ >+extern SVCXPRT *svcunixfd_create __P((int, u_int, u_int)); > > /* > * Memory based rpc (for speed check and testing)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 26071
: 13776