From 370c6ad8ce0240dea404b09164528ec7142eb94b Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 2 Sep 2012 21:04:40 +0000 Subject: [PATCH] Fix RPC headers for C++ C++ mangling will cause trouble with variables like __rpc_xdr in xdr.h so rename this to XDR. While here add proper C++ guards to RPC headers. PR: 137443 MFC after: 2 weeks --- include/rpc/auth.h | 8 ++++++++ include/rpc/auth_unix.h | 8 ++++++++ include/rpc/clnt.h | 8 ++++++++ include/rpc/clnt_soc.h | 8 ++++++++ include/rpc/des_crypt.h | 8 ++++++++ include/rpc/nettype.h | 8 ++++++++ include/rpc/pmap_clnt.h | 8 ++++++++ include/rpc/pmap_rmt.h | 8 ++++++++ include/rpc/rpc_com.h | 10 +++++++++- include/rpc/rpc_msg.h | 8 ++++++++ include/rpc/rpcb_clnt.h | 8 ++++++++ include/rpc/rpcent.h | 7 +++++++ include/rpc/rpcsec_gss.h | 8 ++++++++ include/rpc/svc.h | 7 +++++++ include/rpc/svc_soc.h | 8 ++++++++ include/rpc/xdr.h | 28 ++++++++++++++++++---------- sys/rpc/rpc_com.h | 4 ++-- sys/rpc/xdr.h | 20 ++++++++++---------- 18 files changed, 149 insertions(+), 23 deletions(-) diff --git a/include/rpc/auth.h b/include/rpc/auth.h index 5833c02e429f..1f9771780639 100644 --- a/include/rpc/auth.h +++ b/include/rpc/auth.h @@ -51,6 +51,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + #define MAX_AUTH_BYTES 400 #define MAXNETNAMELEN 255 /* maximum length of network user's name */ @@ -366,4 +370,8 @@ __END_DECLS #define RPCSEC_GSS_KRB5I 390004 #define RPCSEC_GSS_KRB5P 390005 +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_AUTH_H */ diff --git a/include/rpc/auth_unix.h b/include/rpc/auth_unix.h index 08e156900db1..5a26c649eea8 100644 --- a/include/rpc/auth_unix.h +++ b/include/rpc/auth_unix.h @@ -48,6 +48,10 @@ #define _RPC_AUTH_UNIX_H #include +#ifdef __cplusplus +extern "C" { +#endif + /* The machine name is part of a credential; it may not exceed 255 bytes */ #define MAX_MACHINE_NAME 255 @@ -81,4 +85,8 @@ struct short_hand_verf { struct opaque_auth new_cred; }; +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_AUTH_UNIX_H */ diff --git a/include/rpc/clnt.h b/include/rpc/clnt.h index 1c85a4a73688..46790c46a635 100644 --- a/include/rpc/clnt.h +++ b/include/rpc/clnt.h @@ -64,6 +64,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + /* * Well-known IPV6 RPC broadcast address. */ @@ -551,6 +555,10 @@ extern enum clnt_stat rpc_broadcast_exp(const rpcprog_t, const rpcvers_t, const int, const char *); __END_DECLS +#ifdef __cplusplus +} +#endif + /* For backward compatibility */ #include diff --git a/include/rpc/clnt_soc.h b/include/rpc/clnt_soc.h index 1e7a0dea59e4..484dc7c303d7 100644 --- a/include/rpc/clnt_soc.h +++ b/include/rpc/clnt_soc.h @@ -49,6 +49,10 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + #define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */ /* @@ -103,4 +107,8 @@ extern CLIENT *clntudp_bufcreate(struct sockaddr_in *, u_long, u_long, struct timeval, int *, u_int, u_int); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* _RPC_CLNT_SOC_H */ diff --git a/include/rpc/des_crypt.h b/include/rpc/des_crypt.h index a5df606e9e0b..f38f4f42e67b 100644 --- a/include/rpc/des_crypt.h +++ b/include/rpc/des_crypt.h @@ -47,6 +47,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + #define DES_MAXDATA 8192 /* max bytes encrypted in one call */ #define DES_DIRMASK (1 << 0) #define DES_ENCRYPT (0*DES_DIRMASK) /* Encrypt */ @@ -103,4 +107,8 @@ __BEGIN_DECLS void des_setparity( char *); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* _DES_DES_CRYPT_H */ diff --git a/include/rpc/nettype.h b/include/rpc/nettype.h index 5e26268a68da..e046b745b042 100644 --- a/include/rpc/nettype.h +++ b/include/rpc/nettype.h @@ -44,6 +44,10 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + #define _RPC_NONE 0 #define _RPC_NETPATH 1 #define _RPC_VISIBLE 2 @@ -61,4 +65,8 @@ extern struct netconfig *__rpc_getconf(void *); extern struct netconfig *__rpc_getconfip(const char *); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_NETTYPE_H */ diff --git a/include/rpc/pmap_clnt.h b/include/rpc/pmap_clnt.h index 89f1614ab9c9..e2e5f7980546 100644 --- a/include/rpc/pmap_clnt.h +++ b/include/rpc/pmap_clnt.h @@ -66,6 +66,10 @@ #define _RPC_PMAP_CLNT_H_ #include +#ifdef __cplusplus +extern "C" { +#endif + __BEGIN_DECLS extern bool_t pmap_set(u_long, u_long, int, int); extern bool_t pmap_unset(u_long, u_long); @@ -83,4 +87,8 @@ extern u_short pmap_getport(struct sockaddr_in *, u_long, u_long, u_int); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_PMAP_CLNT_H_ */ diff --git a/include/rpc/pmap_rmt.h b/include/rpc/pmap_rmt.h index 5c0806681e9e..9d5c00cf53b2 100644 --- a/include/rpc/pmap_rmt.h +++ b/include/rpc/pmap_rmt.h @@ -44,6 +44,10 @@ #define _RPC_PMAP_RMT_H #include +#ifdef __cplusplus +extern "C" { +#endif + struct rmtcallargs { u_long prog, vers, proc, arglen; caddr_t args_ptr; @@ -62,4 +66,8 @@ extern bool_t xdr_rmtcall_args(XDR *, struct rmtcallargs *); extern bool_t xdr_rmtcallres(XDR *, struct rmtcallres *); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_PMAP_RMT_H */ diff --git a/include/rpc/rpc_com.h b/include/rpc/rpc_com.h index 122fe7e4baca..2060c3a779fb 100644 --- a/include/rpc/rpc_com.h +++ b/include/rpc/rpc_com.h @@ -42,9 +42,13 @@ #ifndef _RPC_RPCCOM_H #define _RPC_RPCCOM_H +/* #pragma ident "@(#)rpc_com.h 1.11 93/07/05 SMI" */ + #include -/* #pragma ident "@(#)rpc_com.h 1.11 93/07/05 SMI" */ +#ifdef __cplusplus +extern "C" { +#endif /* * The max size of the transport, if the size cannot be determined @@ -80,4 +84,8 @@ char *_get_next_token(char *, int); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* _RPC_RPCCOM_H */ diff --git a/include/rpc/rpc_msg.h b/include/rpc/rpc_msg.h index 354b34147677..453d549f527a 100644 --- a/include/rpc/rpc_msg.h +++ b/include/rpc/rpc_msg.h @@ -43,6 +43,10 @@ #ifndef _RPC_RPC_MSG_H #define _RPC_RPC_MSG_H +#ifdef __cplusplus +extern "C" { +#endif + #define RPC_MSG_VERSION ((u_int32_t) 2) #define RPC_SERVICE_PORT ((u_short) 2048) @@ -211,4 +215,8 @@ extern bool_t xdr_rejected_reply(XDR *, struct rejected_reply *); extern void _seterr_reply(struct rpc_msg *, struct rpc_err *); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_RPC_MSG_H */ diff --git a/include/rpc/rpcb_clnt.h b/include/rpc/rpcb_clnt.h index fa64a853f90d..0cfa21f667c4 100644 --- a/include/rpc/rpcb_clnt.h +++ b/include/rpc/rpcb_clnt.h @@ -61,6 +61,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + __BEGIN_DECLS extern bool_t rpcb_set(const rpcprog_t, const rpcvers_t, const struct netconfig *, const struct netbuf *); @@ -82,4 +86,8 @@ extern char *rpcb_taddr2uaddr(struct netconfig *, struct netbuf *); extern struct netbuf *rpcb_uaddr2taddr(struct netconfig *, char *); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_RPCB_CLNT_H */ diff --git a/include/rpc/rpcent.h b/include/rpc/rpcent.h index 876b488b2b1b..0aea0150ec9d 100644 --- a/include/rpc/rpcent.h +++ b/include/rpc/rpcent.h @@ -45,6 +45,9 @@ /* #pragma ident "@(#)rpcent.h 1.13 94/04/25 SMI" */ /* @(#)rpcent.h 1.1 88/12/06 SMI */ +#ifdef __cplusplus +extern "C" { +#endif struct rpcent { char *r_name; /* name of server for this rpc program */ @@ -64,4 +67,8 @@ extern void setrpcent(int); extern void endrpcent(void); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_CENT_H */ diff --git a/include/rpc/rpcsec_gss.h b/include/rpc/rpcsec_gss.h index ccd346fd4564..42b155f43d52 100644 --- a/include/rpc/rpcsec_gss.h +++ b/include/rpc/rpcsec_gss.h @@ -29,6 +29,10 @@ #ifndef _RPCSEC_GSS_H #define _RPCSEC_GSS_H +#ifdef __cplusplus +extern "C" { +#endif + #include #ifndef MAX_GSS_MECH @@ -176,4 +180,8 @@ bool_t __rpc_gss_set_error(int rpc_gss_error, int system_error); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPCSEC_GSS_H */ diff --git a/include/rpc/svc.h b/include/rpc/svc.h index 4a3833c7cad5..7625f6d25872 100644 --- a/include/rpc/svc.h +++ b/include/rpc/svc.h @@ -65,6 +65,10 @@ * parameters, struct svc_req * and SVCXPRT *, defined below. */ +#ifdef __cplusplus +extern "C" { +#endif + /* * Service control requests */ @@ -467,6 +471,9 @@ int __rpc_get_local_uid(SVCXPRT *_transp, uid_t *_uid); __END_DECLS +#ifdef __cplusplus +} +#endif /* for backward compatibility */ #include diff --git a/include/rpc/svc_soc.h b/include/rpc/svc_soc.h index 6c528dbc95c6..09704df426e4 100644 --- a/include/rpc/svc_soc.h +++ b/include/rpc/svc_soc.h @@ -49,6 +49,10 @@ * with TS-RPC */ +#ifdef __cplusplus +extern "C" { +#endif + /* * Approved way of getting address of caller */ @@ -113,4 +117,8 @@ __BEGIN_DECLS extern SVCXPRT *svcfd_create(int, u_int, u_int); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_SVC_SOC_H */ diff --git a/include/rpc/xdr.h b/include/rpc/xdr.h index 92116c0eb62f..1ef569a8e532 100644 --- a/include/rpc/xdr.h +++ b/include/rpc/xdr.h @@ -43,6 +43,10 @@ #define _RPC_XDR_H #include +#ifdef __cplusplus +extern "C" { +#endif + /* * XDR provides a conventional way for converting between C data * types and an external bit-string representation. Library supplied @@ -97,26 +101,26 @@ enum xdr_op { * an operations vector for the particular implementation (e.g. see xdr_mem.c), * and two private fields for the use of the particular implementation. */ -typedef struct __rpc_xdr { +typedef struct XDR { enum xdr_op x_op; /* operation; fast additional param */ const struct xdr_ops { /* get a long from underlying stream */ - bool_t (*x_getlong)(struct __rpc_xdr *, long *); + bool_t (*x_getlong)(struct XDR *, long *); /* put a long to " */ - bool_t (*x_putlong)(struct __rpc_xdr *, const long *); + bool_t (*x_putlong)(struct XDR *, const long *); /* get some bytes from " */ - bool_t (*x_getbytes)(struct __rpc_xdr *, char *, u_int); + bool_t (*x_getbytes)(struct XDR *, char *, u_int); /* put some bytes to " */ - bool_t (*x_putbytes)(struct __rpc_xdr *, const char *, u_int); + bool_t (*x_putbytes)(struct XDR *, const char *, u_int); /* returns bytes off from beginning */ - u_int (*x_getpostn)(struct __rpc_xdr *); + u_int (*x_getpostn)(struct XDR *); /* lets you reposition the stream */ - bool_t (*x_setpostn)(struct __rpc_xdr *, u_int); + bool_t (*x_setpostn)(struct XDR *, u_int); /* buf quick ptr to buffered data */ - int32_t *(*x_inline)(struct __rpc_xdr *, u_int); + int32_t *(*x_inline)(struct XDR *, u_int); /* free privates of this xdr_stream */ - void (*x_destroy)(struct __rpc_xdr *); - bool_t (*x_control)(struct __rpc_xdr *, int, void *); + void (*x_destroy)(struct XDR *); + bool_t (*x_control)(struct XDR *, int, void *); } *x_ops; char * x_public; /* users' data */ void * x_private; /* pointer to private data */ @@ -366,4 +370,8 @@ extern bool_t xdrrec_eof(XDR *); extern u_int xdrrec_readbytes(XDR *, caddr_t, u_int); __END_DECLS +#ifdef __cplusplus +} +#endif + #endif /* !_RPC_XDR_H */ diff --git a/sys/rpc/rpc_com.h b/sys/rpc/rpc_com.h index 290a289e3a48..66851321e2c4 100644 --- a/sys/rpc/rpc_com.h +++ b/sys/rpc/rpc_com.h @@ -114,8 +114,8 @@ extern int __rpc_sockisbound(struct socket*); extern int bindresvport(struct socket *so, struct sockaddr *sa); struct xucred; -struct __rpc_xdr; -bool_t xdr_authunix_parms(struct __rpc_xdr *xdrs, uint32_t *time, struct xucred *cred); +struct XDR; +bool_t xdr_authunix_parms(struct XDR *xdrs, uint32_t *time, struct xucred *cred); #endif __END_DECLS diff --git a/sys/rpc/xdr.h b/sys/rpc/xdr.h index d57dd6ba9385..92af23028949 100644 --- a/sys/rpc/xdr.h +++ b/sys/rpc/xdr.h @@ -97,26 +97,26 @@ enum xdr_op { * an operations vector for the particular implementation (e.g. see xdr_mem.c), * and two private fields for the use of the particular implementation. */ -typedef struct __rpc_xdr { +typedef struct XDR { enum xdr_op x_op; /* operation; fast additional param */ const struct xdr_ops { /* get a long from underlying stream */ - bool_t (*x_getlong)(struct __rpc_xdr *, long *); + bool_t (*x_getlong)(struct XDR *, long *); /* put a long to " */ - bool_t (*x_putlong)(struct __rpc_xdr *, const long *); + bool_t (*x_putlong)(struct XDR *, const long *); /* get some bytes from " */ - bool_t (*x_getbytes)(struct __rpc_xdr *, char *, u_int); + bool_t (*x_getbytes)(struct XDR *, char *, u_int); /* put some bytes to " */ - bool_t (*x_putbytes)(struct __rpc_xdr *, const char *, u_int); + bool_t (*x_putbytes)(struct XDR *, const char *, u_int); /* returns bytes off from beginning */ - u_int (*x_getpostn)(struct __rpc_xdr *); + u_int (*x_getpostn)(struct XDR *); /* lets you reposition the stream */ - bool_t (*x_setpostn)(struct __rpc_xdr *, u_int); + bool_t (*x_setpostn)(struct XDR *, u_int); /* buf quick ptr to buffered data */ - int32_t *(*x_inline)(struct __rpc_xdr *, u_int); + int32_t *(*x_inline)(struct XDR *, u_int); /* free privates of this xdr_stream */ - void (*x_destroy)(struct __rpc_xdr *); - bool_t (*x_control)(struct __rpc_xdr *, int, void *); + void (*x_destroy)(struct XDR *); + bool_t (*x_control)(struct XDR *, int, void *); } *x_ops; char * x_public; /* users' data */ void * x_private; /* pointer to private data */