svn commit: r240060 - in head: include/rpc sys/rpc

Pedro Giffuni pfg at freebsd.org
Sun Sep 2 21:59:33 UTC 2012


Yes, indeed! I will revert most of it.
 
Thanks for checking!
 
Pedro.


>________________________________
> From: Yuri Pankov <yuri.pankov at gmail.com>
>To: Pedro F. Giffuni <pfg at freebsd.org> 
>Cc: src-committers at freebsd.org; svn-src-all at freebsd.org; svn-src-head at freebsd.org 
>Sent: Sunday, September 2, 2012 4:16 PM
>Subject: Re: svn commit: r240060 - in head: include/rpc sys/rpc
>  
>On Sun, 2 Sep 2012 21:04:40 +0000 (UTC), Pedro F. Giffuni wrote:
>> Author: pfg
>> Date: Sun Sep  2 21:04:40 2012
>> New Revision: 240060
>> URL: http://svn.freebsd.org/changeset/base/240060
>>
>> Log:
>>    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
>>
>> Modified:
>>    head/include/rpc/auth.h
>>    head/include/rpc/auth_unix.h
>>    head/include/rpc/clnt.h
>>    head/include/rpc/clnt_soc.h
>>    head/include/rpc/des_crypt.h
>>    head/include/rpc/nettype.h
>>    head/include/rpc/pmap_clnt.h
>>    head/include/rpc/pmap_rmt.h
>>    head/include/rpc/rpc_com.h
>>    head/include/rpc/rpc_msg.h
>>    head/include/rpc/rpcb_clnt.h
>>    head/include/rpc/rpcent.h
>>    head/include/rpc/rpcsec_gss.h
>>    head/include/rpc/svc.h
>>    head/include/rpc/svc_soc.h
>>    head/include/rpc/xdr.h
>>    head/sys/rpc/rpc_com.h
>>    head/sys/rpc/xdr.h
>>
>> Modified: head/include/rpc/auth.h
>> ==============================================================================
>> --- head/include/rpc/auth.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/auth.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -51,6 +51,10 @@
>>   #include <sys/cdefs.h>
>>   #include <sys/socket.h>
>>
>> +#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 */
>>
>> Modified: head/include/rpc/auth_unix.h
>> ==============================================================================
>> --- head/include/rpc/auth_unix.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/auth_unix.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -48,6 +48,10 @@
>>   #define _RPC_AUTH_UNIX_H
>>   #include <sys/cdefs.h>
>>
>> +#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 */
>>
>> Modified: head/include/rpc/clnt.h
>> ==============================================================================
>> --- head/include/rpc/clnt.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/clnt.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -64,6 +64,10 @@
>>   #include <netconfig.h>
>>   #include <sys/un.h>
>>
>> +#ifdef    __cplusplus
>> +extern "C" {
>> +#endif
>> +
>>   /*
>>    * Well-known IPV6 RPC broadcast address.
>>    */
>> @@ -551,6 +555,10 @@ extern enum clnt_stat rpc_broadcast_exp(
>>                       const int, const char *);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   /* For backward compatibility */
>>   #include <rpc/clnt_soc.h>
>>
>>
>> Modified: head/include/rpc/clnt_soc.h
>> ==============================================================================
>> --- head/include/rpc/clnt_soc.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/clnt_soc.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -49,6 +49,10 @@
>>
>>   #include <sys/cdefs.h>
>>
>> +#ifdef    __cplusplus
>> +extern "C" {
>> +#endif
>> +
>>   #define UDPMSGSIZE      8800    /* rpc imposed limit on udp msg size */
>>
>>   /*
>> @@ -103,4 +107,8 @@ extern CLIENT *clntudp_bufcreate(struct
>>                    struct timeval, int *, u_int, u_int);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif /* _RPC_CLNT_SOC_H */
>>
>> Modified: head/include/rpc/des_crypt.h
>> ==============================================================================
>> --- head/include/rpc/des_crypt.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/des_crypt.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -47,6 +47,10 @@
>>   #include <sys/cdefs.h>
>>   #include <rpc/rpc.h>
>>
>> +#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 */
>>
>> Modified: head/include/rpc/nettype.h
>> ==============================================================================
>> --- head/include/rpc/nettype.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/nettype.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -44,6 +44,10 @@
>>
>>   #include <netconfig.h>
>>
>> +#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(v
>>   extern struct netconfig *__rpc_getconfip(const char *);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif    /* !_RPC_NETTYPE_H */
>>
>> Modified: head/include/rpc/pmap_clnt.h
>> ==============================================================================
>> --- head/include/rpc/pmap_clnt.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/pmap_clnt.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -66,6 +66,10 @@
>>   #define _RPC_PMAP_CLNT_H_
>>   #include <sys/cdefs.h>
>>
>> +#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 sock
>>                        u_long, u_long, u_int);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif /* !_RPC_PMAP_CLNT_H_ */
>>
>> Modified: head/include/rpc/pmap_rmt.h
>> ==============================================================================
>> --- head/include/rpc/pmap_rmt.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/pmap_rmt.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -44,6 +44,10 @@
>>   #define _RPC_PMAP_RMT_H
>>   #include <sys/cdefs.h>
>>
>> +#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 *, st
>>   extern bool_t xdr_rmtcallres(XDR *, struct rmtcallres *);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif /* !_RPC_PMAP_RMT_H */
>>
>> Modified: head/include/rpc/rpc_com.h
>> ==============================================================================
>> --- head/include/rpc/rpc_com.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/rpc_com.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -42,9 +42,13 @@
>>   #ifndef _RPC_RPCCOM_H
>>   #define    _RPC_RPCCOM_H
>>
>> +/* #pragma ident    "@(#)rpc_com.h    1.11    93/07/05 SMI" */
>> +
>>   #include <sys/cdefs.h>
>>
>> -/* #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 */
>>
>> Modified: head/include/rpc/rpc_msg.h
>> ==============================================================================
>> --- head/include/rpc/rpc_msg.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/rpc_msg.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -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 *,
>>   extern void    _seterr_reply(struct rpc_msg *, struct rpc_err *);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif /* !_RPC_RPC_MSG_H */
>>
>> Modified: head/include/rpc/rpcb_clnt.h
>> ==============================================================================
>> --- head/include/rpc/rpcb_clnt.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/rpcb_clnt.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -61,6 +61,10 @@
>>   #include <rpc/types.h>
>>   #include <rpc/rpcb_prot.h>
>>
>> +#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 net
>>   extern struct netbuf *rpcb_uaddr2taddr(struct netconfig *, char *);
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif    /* !_RPC_RPCB_CLNT_H */
>>
>> Modified: head/include/rpc/rpcent.h
>> ==============================================================================
>> --- head/include/rpc/rpcent.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/rpcent.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -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 */
>>
>> Modified: head/include/rpc/rpcsec_gss.h
>> ==============================================================================
>> --- head/include/rpc/rpcsec_gss.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/rpcsec_gss.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -29,6 +29,10 @@
>>   #ifndef _RPCSEC_GSS_H
>>   #define _RPCSEC_GSS_H
>>
>> +#ifdef    __cplusplus
>> +extern "C" {
>> +#endif
>> +
>>   #include <gssapi/gssapi.h>
>>
>>   #ifndef MAX_GSS_MECH
>> @@ -176,4 +180,8 @@ bool_t __rpc_gss_set_error(int rpc_gss_e
>>
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>> +
>>   #endif /* !_RPCSEC_GSS_H */
>>
>> Modified: head/include/rpc/svc.h
>> ==============================================================================
>> --- head/include/rpc/svc.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/svc.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -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
>>
>>   __END_DECLS
>>
>> +#ifdef    __cplusplus
>> +}
>> +#endif
>>
>>   /* for backward compatibility */
>>   #include <rpc/svc_soc.h>
>>
>> Modified: head/include/rpc/svc_soc.h
>> ==============================================================================
>> --- head/include/rpc/svc_soc.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/svc_soc.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -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 */
>>
>> Modified: head/include/rpc/xdr.h
>> ==============================================================================
>> --- head/include/rpc/xdr.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/include/rpc/xdr.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -43,6 +43,10 @@
>>   #define _RPC_XDR_H
>>   #include <sys/cdefs.h>
>>
>> +#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 */
>>
>> Modified: head/sys/rpc/rpc_com.h
>> ==============================================================================
>> --- head/sys/rpc/rpc_com.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/sys/rpc/rpc_com.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -114,8 +114,8 @@ extern int __rpc_sockisbound(struct sock
>>   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
>>
>> Modified: head/sys/rpc/xdr.h
>> ==============================================================================
>> --- head/sys/rpc/xdr.h    Sun Sep  2 18:54:51 2012    (r240059)
>> +++ head/sys/rpc/xdr.h    Sun Sep  2 21:04:40 2012    (r240060)
>> @@ -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 */
>
>Don't __BEGIN_DECLS and __END_DECLS do exactly that? i.e. it looks like 
>some of the #ifdef's you added are redundant.
>
>
>   


More information about the svn-src-all mailing list