summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2017-03-13 14:01:24 +0100
committerNiels de Vos <ndevos@redhat.com>2017-03-17 15:11:09 +0100
commit5d3d0bc59c1115117e6e624d12227d53a474b2ec (patch)
tree85139ac97fa680ce3b52c1ff4250bb29069a12a9 /rpc
parent30e5f195a1b80ffe304b2ed70e0a2d8253d0cc42 (diff)
build: use rpcgen to generate all XDR code
Remove all generated files and have them generated when needed. This build a libgbrpcxdr.la archive with the .o files that gets linked into the libgbrpc.la archive. 'rpcgen' generates .c code that triggers warnings for various compilers. This is not something that can easily be fixed, so add rpc-pragmas.h (like GlusterFS does) to prevent these warnings. There are some functions used by gluster-blockd.c that are not part of the header and were manually added to block.h. Because block.h get regenerated now, these functions have been added to a new file block_svc.h. Note that generated and compiled files land in $(top_builddir). This directory does not need to be the same as $(top_srcdir). Change-Id: I0e764d159d6d785699537eed4e24b16883218038 Fixes: #2 Signed-off-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/Makefile.am17
-rw-r--r--rpc/block.h173
-rw-r--r--rpc/block_clnt.c100
-rw-r--r--rpc/block_svc.c120
-rw-r--r--rpc/block_svc_routines.c13
-rw-r--r--rpc/block_xdr.c105
-rw-r--r--rpc/rpcl/Makefile.am22
-rw-r--r--rpc/rpcl/block.x5
-rw-r--r--rpc/rpcl/block_svc.h20
-rw-r--r--rpc/rpcl/rpc-pragmas.h28
10 files changed, 97 insertions, 506 deletions
diff --git a/rpc/Makefile.am b/rpc/Makefile.am
index 66717bb..4dd7439 100644
--- a/rpc/Makefile.am
+++ b/rpc/Makefile.am
@@ -1,16 +1,17 @@
-noinst_LTLIBRARIES = libgbxdr.la
+SUBDIRS = rpcl
-libgbxdr_la_SOURCES = block_clnt.c block_xdr.c block_svc.c \
- block_svc_routines.c glfs-operations.c
+noinst_LTLIBRARIES = libgbrpc.la
-noinst_HEADERS = block.h glfs-operations.h
+libgbrpc_la_SOURCES = block_svc_routines.c glfs-operations.c
-libgbxdr_la_CFLAGS = $(GFAPI_CFLAGS) -DDATADIR=\"$(localstatedir)\" \
- -I$(top_srcdir)/utils/
+noinst_HEADERS = glfs-operations.h
-libgbxdr_la_LIBADD = $(GFAPI_LIBS) $(UUID)
+libgbrpc_la_CFLAGS = $(GFAPI_CFLAGS) -DDATADIR=\"$(localstatedir)\" \
+ -I$(top_srcdir)/utils/ -I$(top_builddir)/rpc/rpcl
-libgbxdr_ladir = $(includedir)/gluster-block/rpc
+libgbrpc_la_LIBADD = $(GFAPI_LIBS) $(UUID) rpcl/libgbrpcxdr.la
+
+libgbrpc_ladir = $(includedir)/gluster-block/rpc
DISTCLEANFILES = Makefile.in
diff --git a/rpc/block.h b/rpc/block.h
deleted file mode 100644
index fcf6832..0000000
--- a/rpc/block.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _BLOCK_H_RPCGEN
-#define _BLOCK_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-struct blockCreate {
- char ipaddr[255];
- char volume[255];
- char gbid[127];
- u_quad_t size;
- char block_name[255];
-};
-typedef struct blockCreate blockCreate;
-
-struct blockCreateCli {
- char volume[255];
- u_quad_t size;
- u_int mpath;
- char block_name[255];
- char *block_hosts;
-};
-typedef struct blockCreateCli blockCreateCli;
-
-struct blockDeleteCli {
- char block_name[255];
- char volume[255];
-};
-typedef struct blockDeleteCli blockDeleteCli;
-
-struct blockDelete {
- char block_name[255];
- char gbid[127];
-};
-typedef struct blockDelete blockDelete;
-
-struct blockInfoCli {
- char block_name[255];
- char volume[255];
-};
-typedef struct blockInfoCli blockInfoCli;
-
-struct blockListCli {
- char volume[255];
- u_quad_t offset;
-};
-typedef struct blockListCli blockListCli;
-
-struct blockResponse {
- int exit;
- char *out;
- u_quad_t offset;
- struct {
- u_int xdata_len;
- char *xdata_val;
- } xdata;
-};
-typedef struct blockResponse blockResponse;
-
-typedef struct blockServerDef {
- size_t nhosts;
- char **hosts;
-} blockServerDef;
-typedef blockServerDef *blockServerDefPtr;
-
-typedef enum operations {
- CREATE_SRV = 1,
- DELETE_SRV = 2,
-} operations;
-
-void
-gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp);
-
-void
-gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp);
-
-
-int
-glusterBlockCallRPC_1(char *host, void *cobj, operations opt, char **out);
-
-#define GLUSTER_BLOCK_CLI 212153113
-#define GLUSTER_BLOCK_CLI_VERS 1
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define BLOCK_CREATE_CLI 1
-extern blockResponse * block_create_cli_1(blockCreateCli *, CLIENT *);
-extern blockResponse * block_create_cli_1_svc(blockCreateCli *, struct svc_req *);
-#define BLOCK_LIST_CLI 2
-extern blockResponse * block_list_cli_1(blockListCli *, CLIENT *);
-extern blockResponse * block_list_cli_1_svc(blockListCli *, struct svc_req *);
-#define BLOCK_INFO_CLI 3
-extern blockResponse * block_info_cli_1(blockInfoCli *, CLIENT *);
-extern blockResponse * block_info_cli_1_svc(blockInfoCli *, struct svc_req *);
-#define BLOCK_DELETE_CLI 4
-extern blockResponse * block_delete_cli_1(blockDeleteCli *, CLIENT *);
-extern blockResponse * block_delete_cli_1_svc(blockDeleteCli *, struct svc_req *);
-extern int gluster_block_cli_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-#else /* K&R C */
-#define BLOCK_CREATE_CLI 1
-extern blockResponse * block_create_cli_1();
-extern blockResponse * block_create_cli_1_svc();
-#define BLOCK_LIST_CLI 2
-extern blockResponse * block_list_cli_1();
-extern blockResponse * block_list_cli_1_svc();
-#define BLOCK_INFO_CLI 3
-extern blockResponse * block_info_cli_1();
-extern blockResponse * block_info_cli_1_svc();
-#define BLOCK_DELETE_CLI 4
-extern blockResponse * block_delete_cli_1();
-extern blockResponse * block_delete_cli_1_svc();
-extern int gluster_block_cli_1_freeresult ();
-#endif /* K&R C */
-
-#define GLUSTER_BLOCK 21215311
-#define GLUSTER_BLOCK_VERS 1
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define BLOCK_CREATE 1
-extern blockResponse * block_create_1(blockCreate *, CLIENT *);
-extern blockResponse * block_create_1_svc(blockCreate *, struct svc_req *);
-#define BLOCK_DELETE 2
-extern blockResponse * block_delete_1(blockDelete *, CLIENT *);
-extern blockResponse * block_delete_1_svc(blockDelete *, struct svc_req *);
-extern int gluster_block_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-#else /* K&R C */
-#define BLOCK_CREATE 1
-extern blockResponse * block_create_1();
-extern blockResponse * block_create_1_svc();
-#define BLOCK_DELETE 2
-extern blockResponse * block_delete_1();
-extern blockResponse * block_delete_1_svc();
-extern int gluster_block_1_freeresult ();
-#endif /* K&R C */
-
-/* the xdr functions */
-
-#if defined(__STDC__) || defined(__cplusplus)
-extern bool_t xdr_blockCreate (XDR *, blockCreate*);
-extern bool_t xdr_blockCreateCli (XDR *, blockCreateCli*);
-extern bool_t xdr_blockDeleteCli (XDR *, blockDeleteCli*);
-extern bool_t xdr_blockDelete (XDR *, blockDelete*);
-extern bool_t xdr_blockInfoCli (XDR *, blockInfoCli*);
-extern bool_t xdr_blockListCli (XDR *, blockListCli*);
-extern bool_t xdr_blockResponse (XDR *, blockResponse*);
-
-#else /* K&R C */
-extern bool_t xdr_blockCreate ();
-extern bool_t xdr_blockCreateCli ();
-extern bool_t xdr_blockDeleteCli ();
-extern bool_t xdr_blockDelete ();
-extern bool_t xdr_blockInfoCli ();
-extern bool_t xdr_blockListCli ();
-extern bool_t xdr_blockResponse ();
-
-#endif /* K&R C */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_BLOCK_H_RPCGEN */
diff --git a/rpc/block_clnt.c b/rpc/block_clnt.c
deleted file mode 100644
index 4c10231..0000000
--- a/rpc/block_clnt.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#include <memory.h> /* for memset */
-#include "block.h"
-
-/* Default timeout can be changed using clnt_control() */
-static struct timeval TIMEOUT = { 25, 0 };
-
-blockResponse *
-block_create_cli_1(blockCreateCli *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_CREATE_CLI,
- (xdrproc_t) xdr_blockCreateCli, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
-
-blockResponse *
-block_list_cli_1(blockListCli *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_LIST_CLI,
- (xdrproc_t) xdr_blockListCli, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
-
-blockResponse *
-block_info_cli_1(blockInfoCli *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_INFO_CLI,
- (xdrproc_t) xdr_blockInfoCli, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
-
-blockResponse *
-block_delete_cli_1(blockDeleteCli *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_DELETE_CLI,
- (xdrproc_t) xdr_blockDeleteCli, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
-
-blockResponse *
-block_create_1(blockCreate *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_CREATE,
- (xdrproc_t) xdr_blockCreate, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
-
-blockResponse *
-block_delete_1(blockDelete *argp, CLIENT *clnt)
-{
- static blockResponse clnt_res;
-
- memset((char *)&clnt_res, 0, sizeof(clnt_res));
- if (clnt_call (clnt, BLOCK_DELETE,
- (xdrproc_t) xdr_blockDelete, (caddr_t) argp,
- (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&clnt_res);
-}
diff --git a/rpc/block_svc.c b/rpc/block_svc.c
deleted file mode 100644
index 8c94d30..0000000
--- a/rpc/block_svc.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#include "block.h"
-
-#ifndef SIG_PF
-#define SIG_PF void(*)(int)
-#endif
-
-void
-gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp)
-{
- union {
- blockCreateCli block_create_cli_1_arg;
- blockListCli block_list_cli_1_arg;
- blockInfoCli block_info_cli_1_arg;
- blockDeleteCli block_delete_cli_1_arg;
- } argument;
- char *result;
- xdrproc_t _xdr_argument, _xdr_result;
- char *(*local)(char *, struct svc_req *);
-
- switch (rqstp->rq_proc) {
- case NULLPROC:
- (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
- return;
-
- case BLOCK_CREATE_CLI:
- _xdr_argument = (xdrproc_t) xdr_blockCreateCli;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_create_cli_1_svc;
- break;
-
- case BLOCK_LIST_CLI:
- _xdr_argument = (xdrproc_t) xdr_blockListCli;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_list_cli_1_svc;
- break;
-
- case BLOCK_INFO_CLI:
- _xdr_argument = (xdrproc_t) xdr_blockInfoCli;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_info_cli_1_svc;
- break;
-
- case BLOCK_DELETE_CLI:
- _xdr_argument = (xdrproc_t) xdr_blockDeleteCli;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_delete_cli_1_svc;
- break;
-
- default:
- svcerr_noproc (transp);
- return;
- }
- memset ((char *)&argument, 0, sizeof (argument));
- if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- svcerr_decode (transp);
- return;
- }
- result = (*local)((char *)&argument, rqstp);
- if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
- svcerr_systemerr (transp);
- }
- if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- fprintf (stderr, "%s", "unable to free arguments");
- exit (1);
- }
- return;
-}
-
-void
-gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp)
-{
- union {
- blockCreate block_create_1_arg;
- blockDelete block_delete_1_arg;
- } argument;
- char *result;
- xdrproc_t _xdr_argument, _xdr_result;
- char *(*local)(char *, struct svc_req *);
-
- switch (rqstp->rq_proc) {
- case NULLPROC:
- (void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
- return;
-
- case BLOCK_CREATE:
- _xdr_argument = (xdrproc_t) xdr_blockCreate;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_create_1_svc;
- break;
-
- case BLOCK_DELETE:
- _xdr_argument = (xdrproc_t) xdr_blockDelete;
- _xdr_result = (xdrproc_t) xdr_blockResponse;
- local = (char *(*)(char *, struct svc_req *)) block_delete_1_svc;
- break;
-
- default:
- svcerr_noproc (transp);
- return;
- }
- memset ((char *)&argument, 0, sizeof (argument));
- if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- svcerr_decode (transp);
- return;
- }
- result = (*local)((char *)&argument, rqstp);
- if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
- svcerr_systemerr (transp);
- }
- if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- fprintf (stderr, "%s", "unable to free arguments");
- exit (1);
- }
- return;
-}
diff --git a/rpc/block_svc_routines.c b/rpc/block_svc_routines.c
index f72ff42..13a1132 100644
--- a/rpc/block_svc_routines.c
+++ b/rpc/block_svc_routines.c
@@ -37,6 +37,12 @@
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
+typedef enum operations {
+ CREATE_SRV = 1,
+ DELETE_SRV = 2
+} operations;
+
+
typedef struct blockRemoteObj {
struct glfs *glfs;
void *obj;
@@ -65,6 +71,13 @@ typedef struct blockRemoteCreateResp {
} blockRemoteCreateResp;
+typedef struct blockServerDef {
+ size_t nhosts;
+ char **hosts;
+} blockServerDef;
+typedef blockServerDef *blockServerDefPtr;
+
+
static char *
getLastWordNoDot(char *line)
{
diff --git a/rpc/block_xdr.c b/rpc/block_xdr.c
deleted file mode 100644
index 9a83b42..0000000
--- a/rpc/block_xdr.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#include "block.h"
-
-bool_t
-xdr_blockCreate (XDR *xdrs, blockCreate *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->ipaddr, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->volume, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->gbid, 127,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_u_quad_t (xdrs, &objp->size))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockCreateCli (XDR *xdrs, blockCreateCli *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->volume, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_u_quad_t (xdrs, &objp->size))
- return FALSE;
- if (!xdr_u_int (xdrs, &objp->mpath))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_string (xdrs, &objp->block_hosts, ~0))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockDeleteCli (XDR *xdrs, blockDeleteCli *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->volume, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockDelete (XDR *xdrs, blockDelete *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->gbid, 127,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockInfoCli (XDR *xdrs, blockInfoCli *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_vector (xdrs, (char *)objp->volume, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockListCli (XDR *xdrs, blockListCli *objp)
-{
- if (!xdr_vector (xdrs, (char *)objp->volume, 255,
- sizeof (char), (xdrproc_t) xdr_char))
- return FALSE;
- if (!xdr_u_quad_t (xdrs, &objp->offset))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_blockResponse (XDR *xdrs, blockResponse *objp)
-{
- if (!xdr_int (xdrs, &objp->exit))
- return FALSE;
- if (!xdr_string (xdrs, &objp->out, ~0))
- return FALSE;
- if (!xdr_u_quad_t (xdrs, &objp->offset))
- return FALSE;
- if (!xdr_bytes (xdrs, (char **)&objp->xdata.xdata_val, (u_int *) &objp->xdata.xdata_len, ~0))
- return FALSE;
- return TRUE;
-}
diff --git a/rpc/rpcl/Makefile.am b/rpc/rpcl/Makefile.am
new file mode 100644
index 0000000..3aa6f0d
--- /dev/null
+++ b/rpc/rpcl/Makefile.am
@@ -0,0 +1,22 @@
+libgbrpcxdr_la_SOURCES = block_clnt.c block_xdr.c block_svc.c
+
+noinst_LTLIBRARIES = libgbrpcxdr.la
+noinst_HEADERS = block.h block_svc.h rpc-pragmas.h
+
+EXTRA_DIST = block.x
+BUILT_SOURCES = block.h block_clnt.c block_svc.c block_xdr.c
+
+DISTCLEANFILES = Makefile.in $(BUILT_SOURCES)
+CLEANFILES = *~ $(BUILT_SOURCES)
+
+block.h: block.x
+ rpcgen -h -o $(top_builddir)/rpc/rpcl/$@ $^
+
+block_xdr.c: block.x
+ rpcgen -c -o $(top_builddir)/rpc/rpcl/$@ $^
+
+block_clnt.c: block.x
+ rpcgen -l -o $(top_builddir)/rpc/rpcl/$@ $^
+
+block_svc.c: block.x
+ rpcgen -m -o $(top_builddir)/rpc/rpcl/$@ $^
diff --git a/rpc/rpcl/block.x b/rpc/rpcl/block.x
index e876ba4..4d840ff 100644
--- a/rpc/rpcl/block.x
+++ b/rpc/rpcl/block.x
@@ -1,3 +1,8 @@
+/* rpcgen generates code that results in unused-variable warnings */
+#ifdef RPC_XDR
+%#include "rpc-pragmas.h"
+#endif
+
struct blockCreate {
char ipaddr[255];
char volume[255];
diff --git a/rpc/rpcl/block_svc.h b/rpc/rpcl/block_svc.h
new file mode 100644
index 0000000..8d1a378
--- /dev/null
+++ b/rpc/rpcl/block_svc.h
@@ -0,0 +1,20 @@
+/*
+ Copyright (c) 2017 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of gluster-block.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+# ifndef _BLOCK_SVC_H
+# define _BLOCK_SVC_H
+
+void
+gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp);
+
+void
+gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp);
+
+# endif /* _BLOCK_SVC_H */
diff --git a/rpc/rpcl/rpc-pragmas.h b/rpc/rpcl/rpc-pragmas.h
new file mode 100644
index 0000000..91bd501
--- /dev/null
+++ b/rpc/rpcl/rpc-pragmas.h
@@ -0,0 +1,28 @@
+/*
+ Copyright (c) 2017 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of gluster-block.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+#ifndef RPC_PRAGMAS_H
+#define RPC_PRAGMAS_H
+
+#if defined(__GNUC__)
+#if __GNUC__ >= 4
+#if !defined(__clang__)
+#if !defined(__NetBSD__)
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#endif
+#else
+#pragma clang diagnostic ignored "-Wunused-variable"
+#pragma clang diagnostic ignored "-Wunused-value"
+#endif
+#endif
+#endif
+
+#endif /* RPC_PRAGMAS_H */