linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thorsten Kukuk <kukuk@suse.de>
To: Steve Dickson <SteveD@redhat.com>,
	libtirpc-devel@lists.sourceforge.net, linux-nfs@vger.kernel.org
Subject: Re: [PATCH V2] Fix Build w/gssapi disabled
Date: Fri, 8 May 2015 10:17:17 +0200	[thread overview]
Message-ID: <20150508081717.GA16376@suse.de> (raw)
In-Reply-To: <20150508020322.GF30924@vapier>

On Thu, May 07, Mike Frysinger wrote:

> it is dangerous to export raw HAVE_xxx defines -- it can break packages that
> use autotools themselves.  they need an appropriate prefix like RPC_xxx or
> TIRPC_xxx.


For this and to solve the different size of the struct, I created
a new patch on top of current git. I only had to rearange the structs
a little bit, since they don't use any kerberos specific variables,
only standard C:

diff --git a/configure.ac b/configure.ac
index 290c635..5d11a69 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,7 +10,7 @@ AC_ARG_ENABLE(gssapi,
 AM_CONDITIONAL(GSS, test "x$enable_gssapi" = xyes)
 
 if test "x$enable_gssapi" = xyes; then
-	AC_DEFINE([HAVE_GSSAPI], [1], [Define to 1 if GSSAPI is enabled])
+	AC_DEFINE([TIRPC_GSSAPI], [1], [Define to 1 if GSSAPI is enabled])
 	GSSAPI_CFLAGS=`krb5-config --cflags gssapi`
 	GSSAPI_LIBS=`krb5-config --libs gssapi`
 	AC_SUBST([GSSAPI_CFLAGS])
@@ -22,7 +22,7 @@ AC_ARG_ENABLE(authdes,
       [],[enable_authdes=no])
 AM_CONDITIONAL(AUTHDES, test "x$enable_authdes" = xyes)
 if test "x$enable_authdes" = xyes; then
-	AC_DEFINE([HAVE_AUTHDES], [1],
+	AC_DEFINE([TIRPC_AUTHDES], [1],
 		  [Define to 1 if DES authentication is enabled])
 	CFLAG_AUTHDES="-DHAVE_AUTHDES=1"
 	AC_SUBST([CFLAG_AUTHDES])
diff --git a/tirpc/rpc/auth.h b/tirpc/rpc/auth.h
index f7fa16c..6cf512a 100644
--- a/tirpc/rpc/auth.h
+++ b/tirpc/rpc/auth.h
@@ -164,7 +164,7 @@ union des_block {
 };
 typedef union des_block des_block;
 
-#ifdef HAVE_AUTHDES
+#ifdef TIRPC_AUTHDES
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -172,7 +172,7 @@ extern bool_t xdr_des_block(XDR *, des_block *);
 #ifdef __cplusplus
 }
 #endif
-#endif /* HAVE_AUTHDES */
+#endif /* TIRPC_AUTHDES */
 
 /*
  * Authentication info.  Opaque to client.
@@ -320,7 +320,7 @@ extern AUTH *authnone_create(void);		/* takes no parameters */
 }
 #endif
 
-#ifdef HAVE_AUTHDES
+#ifdef TIRPC_AUTHDES
 /*
  * DES style authentication
  * AUTH *authsecdes_create(servername, window, timehost, ckey)
@@ -338,7 +338,7 @@ extern AUTH *authdes_seccreate (const char *, const u_int, const  char *,
 #ifdef __cplusplus
 }
 #endif
-#endif /* HAVE_AUTHDES */
+#endif /* TIRPC_AUTHDES */
 
 #ifdef __cplusplus
 extern "C" {
@@ -362,9 +362,9 @@ extern int host2netname(char *, const char *, const char *);
 extern int user2netname(char *, const uid_t, const char *);
 extern int netname2user(char *, uid_t *, gid_t *, int *, gid_t *);
 extern int netname2host(char *, char *, const int);
-#ifdef HAVE_AUTHDES
+#ifdef TIRPC_AUTHDES
 extern void passwd2des ( char *, char * );
-#endif /* HAVE_AUTHDES */
+#endif /* TIRPC_AUTHDES */
 #ifdef __cplusplus
 }
 #endif
diff --git a/tirpc/rpc/rpc.h b/tirpc/rpc/rpc.h
index 8f37454..942959a 100644
--- a/tirpc/rpc/rpc.h
+++ b/tirpc/rpc/rpc.h
@@ -54,15 +54,15 @@
 #include <rpc/rpc_msg.h>	/* protocol for rpc messages */
 #include <rpc/auth_unix.h>	/* protocol for unix style cred */
 
-#ifdef HAVE_AUTHDES
+#ifdef TIRPC_AUTHDES
 /*
  *  Uncomment-out the next line if you are building the rpc library with
  *  DES Authentication (see the README file in the secure_rpc/ directory).
  */
 #include <rpc/auth_des.h>	/* protocol for des style cred */
-#endif /* HAVE_AUTHDES */
+#endif /* TIRPC_AUTHDES */
 
-#ifdef HAVE_GSSAPI
+#ifdef TIRPC_GSSAPI
 #include <rpc/auth_gss.h>   /* RPCSEC_GSS */
 #endif
 
diff --git a/tirpc/rpc/rpcsec_gss.h b/tirpc/rpc/rpcsec_gss.h
index 217fc0d..767988c 100644
--- a/tirpc/rpc/rpcsec_gss.h
+++ b/tirpc/rpc/rpcsec_gss.h
@@ -50,6 +50,19 @@ typedef struct {
 } *rpc_gss_principal_t;
 
 typedef struct {
+	u_int			version;
+	char			*mechanism;
+	char			*qop;
+	rpc_gss_principal_t	client_principal;
+	char			*svc_principal;
+	rpc_gss_service_t	service;
+} rpc_gss_rawcred_t;
+
+#ifdef TIRPC_GSSAPI
+
+#include <gssapi/gssapi.h>
+
+typedef struct {
 	int			req_flags;
 	int			time_req;
 	gss_cred_id_t		my_cred;
@@ -68,15 +81,6 @@ typedef struct {
 } rpc_gss_options_ret_t;
 
 typedef struct {
-	u_int			version;
-	char			*mechanism;
-	char			*qop;
-	rpc_gss_principal_t	client_principal;
-	char			*svc_principal;
-	rpc_gss_service_t	service;
-} rpc_gss_rawcred_t;
-
-typedef struct {
 	uid_t			uid;
 	gid_t			gid;
 	short			gidlen;
@@ -129,4 +133,6 @@ bool_t	rpc_gss_mech_to_oid(char *, rpc_gss_OID *);
 bool_t	rpc_gss_qop_to_num(char *, char *, u_int *);
 __END_DECLS
 
+#endif /* TIRPC_GSSAPI */
+
 #endif	/* !_TIRPC_RPCSEC_GSS_H */
diff --git a/tirpc/rpc/svc_auth.h b/tirpc/rpc/svc_auth.h
index dbd8cc9..f91bf01 100644
--- a/tirpc/rpc/svc_auth.h
+++ b/tirpc/rpc/svc_auth.h
@@ -42,9 +42,6 @@
 #define _RPC_SVC_AUTH_H
 
 #include <tirpc-features.h>
-
-#ifdef HAVE_GSSAPI
-
 #include <rpc/rpcsec_gss.h>
 
 typedef struct {
@@ -55,8 +52,6 @@ typedef struct {
 	u_int			seq_num;
 } svc_rpc_gss_parms_t;
 
-#endif /* HAVE_GSSAPI */
-
 /*
  * Interface to server-side authentication flavors.
  */
@@ -69,10 +64,8 @@ typedef struct SVCAUTH {
 		int     (*svc_ah_destroy)(struct SVCAUTH *);
 		} *svc_ah_ops;
 	caddr_t svc_ah_private;
-#ifdef HAVE_GSSAPI
 	svc_rpc_gss_parms_t svc_gss_params;
 	rpc_gss_rawcred_t raw_cred;
-#endif
 } SVCAUTH;
 
 #define SVCAUTH_WRAP(auth, xdrs, xfunc, xwhere) \
diff --git a/tirpc/tirpc-features.h.in b/tirpc/tirpc-features.h.in
index 72e18bc..39fa64e 100644
--- a/tirpc/tirpc-features.h.in
+++ b/tirpc/tirpc-features.h.in
@@ -2,9 +2,9 @@
 #define _TIRPC_FEATURES_H
 
 /* Define to 1 if DES authentication is enabled */
-#undef HAVE_AUTHDES
+#undef TIRPC_AUTHDES
 
 /* Define to 1 if GSSAPI is enabled */
-#undef HAVE_GSSAPI
+#undef TIRPC_GSSAPI
 
 #endif /* _TIRPC_FEATURES_H */




-- 
Thorsten Kukuk, Senior Architect SLES & Common Code Base
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu, Graham Norton, HRB 21284 (AG Nürnberg)

  reply	other threads:[~2015-05-08  8:17 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-07  7:19 [PATCH libtirpc] fix build w/gssapi disabled Mike Frysinger
2015-05-07  7:40 ` [Libtirpc-devel] " Thorsten Kukuk
2015-05-07  8:23   ` Mike Frysinger
2015-05-07  8:51     ` Thorsten Kukuk
2015-05-07 11:52 ` Thorsten Kukuk
2015-05-07 15:12   ` Mike Frysinger
2015-05-07 15:24     ` Steve Dickson
2015-05-07 15:38   ` Steve Dickson
2015-05-07 16:33     ` Thorsten Kukuk
2015-05-07 16:55       ` Steve Dickson
2015-05-07 18:12         ` Thorsten Kukuk
2015-05-07 20:04           ` Steve Dickson
2015-05-07 20:12             ` Steve Dickson
2015-05-07 20:24               ` [PATCH V2] Fix Build " Steve Dickson
2015-05-08  2:03                 ` Mike Frysinger
2015-05-08  8:17                   ` Thorsten Kukuk [this message]
2015-05-08 21:27                     ` Steve Dickson
2015-05-08 22:34                       ` Thorsten Kukuk
2015-05-08  3:33                 ` Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150508081717.GA16376@suse.de \
    --to=kukuk@suse.de \
    --cc=SteveD@redhat.com \
    --cc=libtirpc-devel@lists.sourceforge.net \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).