[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