From patchwork Thu May 7 11:52:48 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thorsten Kukuk X-Patchwork-Id: 6357291 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 3E412BEEE1 for ; Thu, 7 May 2015 11:52:54 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 49A5A203AF for ; Thu, 7 May 2015 11:52:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 74423203AD for ; Thu, 7 May 2015 11:52:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752434AbbEGLwu (ORCPT ); Thu, 7 May 2015 07:52:50 -0400 Received: from cantor2.suse.de ([195.135.220.15]:37783 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751583AbbEGLwt (ORCPT ); Thu, 7 May 2015 07:52:49 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 4465AACCD; Thu, 7 May 2015 11:52:48 +0000 (UTC) Date: Thu, 7 May 2015 13:52:48 +0200 From: Thorsten Kukuk To: Mike Frysinger Cc: libtirpc-devel@lists.sourceforge.net, linux-nfs@vger.kernel.org Subject: Re: [Libtirpc-devel] [PATCH libtirpc] fix build w/gssapi disabled Message-ID: <20150507115248.GA20243@suse.de> References: <1430983149-22199-1-git-send-email-vapier@gentoo.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1430983149-22199-1-git-send-email-vapier@gentoo.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi, On Thu, May 07, Mike Frysinger wrote: > Starting with commit d5259e751111cb108c784b044296185f543fc0be (Add header > definitions for rpc_gss_*() APIs), the gss headers were pulled in all the > time leading to build failures like so: > CC libtirpc_la-bindresvport.lo > In file included from ../tirpc/rpc/svc_auth.h:44:0, > from ../tirpc/rpc/rpc.h:68, > from bindresvport.c:46: > ../tirpc/rpc/rpcsec_gss.h:38:27: fatal error: gssapi/gssapi.h: No such file or directory Here is my proof of concept how I think we should solve this. But there is one part of your patch I have no solution for: > --- a/tirpc/rpc/svc_auth.h > +++ b/tirpc/rpc/svc_auth.h [...] > @@ -63,8 +67,10 @@ typedef struct SVCAUTH { > int (*svc_ah_destroy)(struct SVCAUTH *); > } *svc_ah_ops; > caddr_t svc_ah_private; > +#ifdef HAVE_RPCSEC_GSS > svc_rpc_gss_parms_t svc_gss_params; > rpc_gss_rawcred_t raw_cred; > +#endif > } SVCAUTH; You are changeing the size of a struct here. I'm not sure if this will work, if an application is compiled with headers where it is disabled and then runs with a tirpc where it is enabled. Or the other way around. Does somebody have an idea how to solve that? Else here is my patch: diff --git a/Makefile.am b/Makefile.am index 2bf725c..2bce3b0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,9 +4,11 @@ ACLOCAL_AMFLAGS = -I m4 noinst_HEADERS = tirpc/reentrant.h \ tirpc/getpeereid.h \ tirpc/libc_private.h \ - tirpc/un-namespace.h + tirpc/un-namespace.h \ + tirpc/tirpc-features.h.in nobase_include_HEADERS = tirpc/netconfig.h \ + tirpc/tirpc-features.h \ tirpc/rpcsvc/crypt.x \ tirpc/rpcsvc/crypt.h \ tirpc/rpc/xdr.h \ diff --git a/configure.ac b/configure.ac index 711b054..290c635 100644 --- a/configure.ac +++ b/configure.ac @@ -10,6 +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]) GSSAPI_CFLAGS=`krb5-config --cflags gssapi` GSSAPI_LIBS=`krb5-config --libs gssapi` AC_SUBST([GSSAPI_CFLAGS]) @@ -41,7 +42,7 @@ AC_ARG_ENABLE(symvers, AM_CONDITIONAL(SYMVERS, test "x$enable_symvers" = xyes) AC_PROG_CC -AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_HEADERS([config.h tirpc/tirpc-features.h]) AC_PROG_LIBTOOL AC_HEADER_DIRENT AC_PREFIX_DEFAULT(/usr) diff --git a/tirpc/rpc/rpc.h b/tirpc/rpc/rpc.h index 1dbb391..8f37454 100644 --- a/tirpc/rpc/rpc.h +++ b/tirpc/rpc/rpc.h @@ -35,6 +35,8 @@ #ifndef _TIRPC_RPC_H #define _TIRPC_RPC_H +#include + #include /* some typedefs */ #include #include @@ -60,7 +62,7 @@ #include /* protocol for des style cred */ #endif /* HAVE_AUTHDES */ -#ifdef HAVE_RPCSEC_GSS +#ifdef HAVE_GSSAPI #include /* RPCSEC_GSS */ #endif diff --git a/tirpc/rpc/svc_auth.h b/tirpc/rpc/svc_auth.h index 44b38bf..b308d2b 100644 --- a/tirpc/rpc/svc_auth.h +++ b/tirpc/rpc/svc_auth.h @@ -41,6 +41,10 @@ #ifndef _RPC_SVC_AUTH_H #define _RPC_SVC_AUTH_H +#include + +#ifdef HAVE_GSSAPI + #include typedef struct { @@ -51,6 +55,8 @@ typedef struct { u_int seq_num; } svc_rpc_gss_parms_t; +#endif /* HAVE_GSSAPI */ + /* * Interface to server-side authentication flavors. */ diff --git a/tirpc/tirpc-features.h.in b/tirpc/tirpc-features.h.in index e69de29..72e18bc 100644 --- a/tirpc/tirpc-features.h.in +++ b/tirpc/tirpc-features.h.in @@ -0,0 +1,10 @@ +#ifndef _TIRPC_FEATURES_H +#define _TIRPC_FEATURES_H + +/* Define to 1 if DES authentication is enabled */ +#undef HAVE_AUTHDES + +/* Define to 1 if GSSAPI is enabled */ +#undef HAVE_GSSAPI + +#endif /* _TIRPC_FEATURES_H */