[Pvfs2-cvs] commit by nlmills in pvfs2/src/client/sysint:
sys-getcred.sm client-state-machine.c client-state-machine.h
module.mk.in
CVS commit program
cvs at parl.clemson.edu
Wed Dec 3 23:40:43 EST 2008
Update of /anoncvs/pvfs2/src/client/sysint
In directory parlweb1:/tmp/cvs-serv7806/src/client/sysint
Modified Files:
Tag: cu-security-branch
client-state-machine.c client-state-machine.h module.mk.in
Added Files:
Tag: cu-security-branch
sys-getcred.sm
Log Message:
began work on sys-getcred client state machine
--- /dev/null 2004-06-24 14:04:38.000000000 -0400
+++ sys-getcred.sm 2008-12-03 23:40:43.000000000 -0500
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 Clemson University and The University of Chicago
+ *
+ * See COPYING in top-level directory.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+/* TODO: include openssl stuff */
+
+#include "client-state-machine.h"
+#include "pvfs2-debug.h"
+#include "job.h"
+#include "gossip.h"
+#include "pint-util.h"
+#include "pvfs2-internal.h"
+/* TODO: include security stuff */
+
+extern job_context_id pint_client_sm_context;
+
+%%
+
+machine pvfs2_client_getcred_sm
+{
+ /* TODO: replace with real states */
+ state entry
+ {
+ run getcred_entry;
+ default => terminate;
+ }
+}
+
+%%
+
+PVFS_error PVFS_isys_getcred(const char *certificate,
+ PVFS_sysresp_getcred *resp_p,
+ PVFS_sys_op_id *op_id,
+ void *user_ptr)
+{
+ PVFS_error ret = -PVFS_EINVAL;
+ PINT_smcb *smcb = NULL;
+ PINT_client_sm *sm_p = NULL;
+
+ gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_isys_getcred entered\n");
+
+ if (!certificate || !resp_p)
+ {
+ gossip_err("invalid (NULL) argument\n");
+ return ret;
+ }
+
+ PINT_smcb_alloc(&smcb, PVFS_SYS_GETCRED,
+ sizeof(struct PINT_client_sm),
+ client_op_state_get_machine,
+ client_state_machine_terminate,
+ pint_client_sm_context);
+ if (!smcb)
+ {
+ return -PVFS_ENOMEM;
+ }
+ sm_p = PINT_sm_frame(smcb, PINT_FRAME_CURRENT);
+
+ /* TODO: continue filling out stuff */
+
+ return PINT_client_state_machine_post(smcb, op_id, user_ptr);
+}
+
+PVFS_error PVFS_sys_getcred(const char *certificate,
+ PVFS_sysresp_getcred *resp_p)
+{
+ PVFS_error ret = -PVFS_EINVAL;
+ PVFS_error error = 0;
+ PVFS_sys_op_id op_id;
+
+ gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_sys_getcred entered\n");
+
+ ret = PVFS_isys_getcred(certificate, resp_p, &op_id, NULL);
+ if (ret)
+ {
+ PVFS_perror_gossip("PVFS_isys_getcred call", ret);
+ error = ret;
+ }
+ else
+ {
+ ret = PVFS_sys_wait(op_id, "getcred", &error);
+ if (ret)
+ {
+ PVFS_perror_gossip("PVFS_sys_wait call", ret);
+ error = ret;
+ }
+ }
+
+ PINT_sys_release(op_id);
+ return error;
+}
+
+/* TODO: replace with real states */
+static int getcred_entry(struct PINT_smcb *smcb, job_status_s *js_p)
+{
+
+ js_p->error_code = 0;
+ return SM_ACTION_COMPLETE;
+}
+
+
+/*
+ * Local variables:
+ * mode: c
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ *
+ * vim: ft=c ts=8 sts=4 sw=4 expandtab
+ */
Index: client-state-machine.c
===================================================================
RCS file: /anoncvs/pvfs2/src/client/sysint/client-state-machine.c,v
diff -p -u -r1.94.2.3 -r1.94.2.4
--- client-state-machine.c 21 Jul 2008 22:02:47 -0000 1.94.2.3
+++ client-state-machine.c 4 Dec 2008 04:40:43 -0000 1.94.2.4
@@ -222,6 +222,7 @@ struct PINT_client_op_entry_s PINT_clien
{&pvfs2_client_statfs_sm},
{&pvfs2_fs_add_sm},
{&pvfs2_client_readdirplus_sm},
+ {&pvfs2_client_getcred_sm}
};
struct PINT_client_op_entry_s PINT_client_sm_mgmt_table[] =
@@ -887,6 +888,7 @@ const char *PINT_client_get_name_str(int
{ PVFS_DEV_UNEXPECTED, "PVFS_DEV_UNEXPECTED" },
{ PVFS_SYS_FS_ADD, "PVFS_SYS_FS_ADD" },
{ PVFS_SYS_STATFS, "PVFS_SYS_STATFS" },
+ { PVFS_SYS_GETCRED, "PVFS_SYS_GETCRED" },
{ 0, "UNKNOWN" }
};
Index: client-state-machine.h
===================================================================
RCS file: /anoncvs/pvfs2/src/client/sysint/client-state-machine.h,v
diff -p -u -r1.173.4.6 -r1.173.4.7
--- client-state-machine.h 15 Aug 2008 19:19:55 -0000 1.173.4.6
+++ client-state-machine.h 4 Dec 2008 04:40:43 -0000 1.173.4.7
@@ -29,6 +29,7 @@
#include "pint-sysint-utils.h"
#include "pint-perf-counter.h"
#include "state-machine.h"
+#include "security-types.h"
#include "security-util.h"
#define MAX_LOOKUP_SEGMENTS PVFS_REQ_LIMIT_PATH_SEGMENT_COUNT
@@ -493,6 +494,14 @@ typedef struct
int32_t dirent_limit; /* input parameter */
} PINT_sm_readdir_state;
+struct PINT_client_getcred_sm
+{
+ char *certificate;
+ PVFS_sig signature;
+ uint32_t sig_size;
+ PVFS_sysresp_getcred *getcred_resp;
+};
+
typedef struct PINT_client_sm
{
/* this code removed and corresponding fields added to the generic
@@ -555,6 +564,7 @@ typedef struct PINT_client_sm
struct PINT_client_perf_count_timer_sm perf_count_timer;
struct PINT_sysdev_unexp_sm sysdev_unexp;
struct PINT_client_job_timer_sm job_timer;
+ struct PINT_client_getcred_sm getcred;
} u;
} PINT_client_sm;
@@ -632,6 +642,7 @@ enum
PVFS_SYS_STATFS = 18,
PVFS_SYS_FS_ADD = 19,
PVFS_SYS_READDIRPLUS = 20,
+ PVFS_SYS_GETCRED = 21,
PVFS_MGMT_SETPARAM_LIST = 70,
PVFS_MGMT_NOOP = 71,
PVFS_MGMT_STATFS_LIST = 72,
@@ -650,7 +661,7 @@ enum
PVFS_DEV_UNEXPECTED = 400
};
-#define PVFS_OP_SYS_MAXVALID 21
+#define PVFS_OP_SYS_MAXVALID 22
#define PVFS_OP_SYS_MAXVAL 69
#define PVFS_OP_MGMT_MAXVALID 81
#define PVFS_OP_MGMT_MAXVAL 199
@@ -756,6 +767,7 @@ extern struct PINT_state_machine_s pvfs2
extern struct PINT_state_machine_s pvfs2_client_list_eattr_sm;
extern struct PINT_state_machine_s pvfs2_client_statfs_sm;
extern struct PINT_state_machine_s pvfs2_fs_add_sm;
+extern struct PINT_state_machine_s pvfs2_client_getcred_sm;
/* nested state machines (helpers) */
extern struct PINT_state_machine_s pvfs2_client_lookup_ncache_sm;
Index: module.mk.in
===================================================================
RCS file: /anoncvs/pvfs2/src/client/sysint/module.mk.in,v
diff -p -u -r1.88.4.1 -r1.88.4.2
--- module.mk.in 8 Jul 2008 20:21:50 -0000 1.88.4.1
+++ module.mk.in 4 Dec 2008 04:40:43 -0000 1.88.4.2
@@ -50,7 +50,8 @@ CLIENT_SMCGEN := \
$(DIR)/mgmt-remove-object.c \
$(DIR)/mgmt-remove-dirent.c \
$(DIR)/mgmt-create-dirent.c \
- $(DIR)/mgmt-get-dirdata-handle.c
+ $(DIR)/mgmt-get-dirdata-handle.c \
+ $(DIR)/sys-getcred.c
# track generated .c files that need to be removed during dist clean, etc.
SMCGEN += $(CLIENT_SMCGEN)
More information about the Pvfs2-cvs
mailing list