diff options
Diffstat (limited to 'xlators/encryption/rot-13/src/rot-13.c')
| -rw-r--r-- | xlators/encryption/rot-13/src/rot-13.c | 94 |
1 files changed, 44 insertions, 50 deletions
diff --git a/xlators/encryption/rot-13/src/rot-13.c b/xlators/encryption/rot-13/src/rot-13.c index 738b8414f..b9ac29a72 100644 --- a/xlators/encryption/rot-13/src/rot-13.c +++ b/xlators/encryption/rot-13/src/rot-13.c @@ -1,22 +1,12 @@ /* - Copyright (c) 2006-2009 Z RESEARCH, Inc. <http://www.zresearch.com> - This file is part of GlusterFS. - - GlusterFS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3 of the License, - or (at your option) any later version. - - GlusterFS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see - <http://www.gnu.org/licenses/>. -*/ + Copyright (c) 2006-2012 Red Hat, Inc. <http://www.redhat.com> + This file is part of GlusterFS. + 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. +*/ #include <ctype.h> #include <sys/uio.h> @@ -32,13 +22,13 @@ #include "rot-13.h" /* - * This is a rot13 ``encryption'' xlator. It rot13's data when - * writing to disk and rot13's it back when reading it. + * This is a rot13 ``encryption'' xlator. It rot13's data when + * writing to disk and rot13's it back when reading it. * This xlator is meant as an example, NOT FOR PRODUCTION * USE ;) (hence no error-checking) */ -void +void rot13 (char *buf, int len) { int i; @@ -67,15 +57,16 @@ rot13_readv_cbk (call_frame_t *frame, int32_t op_errno, struct iovec *vector, int32_t count, - struct stat *stbuf, - struct iobref *iobref) + struct iatt *stbuf, + struct iobref *iobref, dict_t *xdata) { rot_13_private_t *priv = (rot_13_private_t *)this->private; - + if (priv->decrypt_read) rot13_iovec (vector, count); - STACK_UNWIND (frame, op_ret, op_errno, vector, count, stbuf, iobref); + STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, + stbuf, iobref, xdata); return 0; } @@ -84,13 +75,13 @@ rot13_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, - off_t offset) + off_t offset, uint32_t flags, dict_t *xdata) { STACK_WIND (frame, rot13_readv_cbk, FIRST_CHILD (this), FIRST_CHILD (this)->fops->readv, - fd, size, offset); + fd, size, offset, flags, xdata); return 0; } @@ -100,9 +91,11 @@ rot13_writev_cbk (call_frame_t *frame, xlator_t *this, int32_t op_ret, int32_t op_errno, - struct stat *stbuf) + struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata) { - STACK_UNWIND (frame, op_ret, op_errno, stbuf); + STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf, + xdata); return 0; } @@ -111,20 +104,20 @@ rot13_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector, - int32_t count, - off_t offset, - struct iobref *iobref) + int32_t count, + off_t offset, uint32_t flags, + struct iobref *iobref, dict_t *xdata) { rot_13_private_t *priv = (rot_13_private_t *)this->private; if (priv->encrypt_write) rot13_iovec (vector, count); - STACK_WIND (frame, + STACK_WIND (frame, rot13_writev_cbk, FIRST_CHILD (this), FIRST_CHILD (this)->fops->writev, - fd, vector, count, offset, - iobref); + fd, vector, count, offset, flags, + iobref, xdata); return 0; } @@ -135,7 +128,7 @@ init (xlator_t *this) rot_13_private_t *priv = NULL; if (!this->children || this->children->next) { - gf_log ("rot13", GF_LOG_ERROR, + gf_log ("rot13", GF_LOG_ERROR, "FATAL: rot13 should have exactly one child"); return -1; } @@ -144,9 +137,11 @@ init (xlator_t *this) gf_log (this->name, GF_LOG_WARNING, "dangling volume. check volfile "); } - - priv = CALLOC (sizeof (rot_13_private_t), 1); - ERR_ABORT (priv); + + priv = GF_CALLOC (sizeof (rot_13_private_t), 1, 0); + if (!priv) + return -1; + priv->decrypt_read = 1; priv->encrypt_write = 1; @@ -173,13 +168,16 @@ init (xlator_t *this) return 0; } -void +void fini (xlator_t *this) { rot_13_private_t *priv = this->private; - - FREE (priv); - + + if (!priv) + return; + this->private = NULL; + GF_FREE (priv); + return; } @@ -188,18 +186,14 @@ struct xlator_fops fops = { .writev = rot13_writev }; -struct xlator_mops mops = { -}; - -struct xlator_cbks cbks = { -}; +struct xlator_cbks cbks; struct volume_options options[] = { - { .key = {"encrypt-write"}, + { .key = {"encrypt-write"}, .type = GF_OPTION_TYPE_BOOL }, - { .key = {"decrypt-read"}, - .type = GF_OPTION_TYPE_BOOL + { .key = {"decrypt-read"}, + .type = GF_OPTION_TYPE_BOOL }, { .key = {NULL} }, }; |
