00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00032 #ifndef LCMAPS_RUNVARS_C
00033 #define LCMAPS_RUNVARS_C
00034 
00035 
00036 
00037 
00038 #include "lcmaps_config.h"
00039 #include <stdio.h>
00040 #include <stdlib.h>
00041 #include <string.h>
00042 #ifdef LCMAPS_GSI_MODE
00043 #   include <gssapi.h>
00044 #endif
00045 
00046 
00047 #include "lcmaps_log.h"
00048 #include "lcmaps_types.h"
00049 #include "lcmaps_utils.h"
00050 #include "lcmaps_arguments.h"
00051 #include "_lcmaps_runvars.h"
00052 #include "_lcmaps_credential.h"
00053 
00054 
00055 
00056 
00057 #ifdef LCMAPS_GSI_MODE
00058 #   define NUMBER_OF_RUNVARS ((int)8)
00059 #else
00060 #   define NUMBER_OF_RUNVARS ((int)6)
00061 #endif
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 
00075 static lcmaps_argument_t runvars_list[] = {
00076     { "user_dn"     , "char *"           ,  0,   NULL},
00077     { "lcmaps_cred" , "lcmaps_cred_id_t" ,  0,   NULL},
00078     { "job_request" , "lcmaps_request_t" ,  0,   NULL},
00079     { "job_request" , "char *"           ,  0,   NULL},
00080     { "fqan_list"   , "char **"          ,  0,   NULL},
00081     { "nfqan"       , "int"              ,  0,   NULL},
00082 #ifdef LCMAPS_GSI_MODE
00083     { "user_cred"   , "gss_cred_id_t"    ,  0,   NULL},
00084     { "gss_context" , "gss_ctx_id_t"     ,  0,   NULL},
00085 #endif 
00086     { NULL          , NULL               , -1,   NULL}
00087 }; 
00089 static lcmaps_request_t job_request;
00090 static lcmaps_cred_id_t lcmaps_credential;
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00119 int lcmaps_extractRunVars(
00120         lcmaps_request_t request,
00121         lcmaps_cred_id_t lcmaps_cred
00122 )
00123 {
00124     int number_of_runvars=0;
00125 
00126     
00127 
00128     number_of_runvars = lcmaps_cntArgs(runvars_list);
00129     if (NUMBER_OF_RUNVARS != number_of_runvars)
00130     {
00131         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): conflict in number of run variables:\n");
00132         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): estimated = %d, defined = %d\n",
00133                      number_of_runvars,NUMBER_OF_RUNVARS);
00134         return 1;
00135     }
00136     lcmaps_log_debug(2,"Number of runvars: %d\n",NUMBER_OF_RUNVARS);
00137     lcmaps_log_debug(2,"Address of runvars_list (first element): 0x%x\n",runvars_list);
00138 
00139     
00140 
00141     job_request=request;
00142     lcmaps_credential=lcmaps_cred;
00143 
00144     
00145 
00146 
00147     
00148     lcmaps_log_debug(2,"Setting \"user_dn\": %s, address: 0x%x\n",
00149                      lcmaps_credential.dn, &(lcmaps_credential.dn));
00150     if (lcmaps_setRunVars("user_dn" , "char *", (void *) &(lcmaps_credential.dn)) != 0)
00151     {
00152         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"user_dn\" variable\n");
00153         return 1;
00154     }
00155 
00156     
00157     lcmaps_log_debug(2,"Setting \"fqan_list\", address: 0x%x\n", &(lcmaps_credential.fqan));
00158     if (lcmaps_setRunVars("fqan_list" , "char **", (void *) &(lcmaps_credential.fqan)) != 0)
00159     {
00160         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"fqan_list\" variable\n");
00161         return 1;
00162     }
00163     
00164     lcmaps_log_debug(2,"Setting \"nfqan\": %d, address: 0x%x\n",
00165                      lcmaps_credential.nfqan, &(lcmaps_credential.nfqan));
00166     if (lcmaps_setRunVars("nfqan" , "int", (void *) &(lcmaps_credential.nfqan)) != 0)
00167     {
00168         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"nfqan\" variable\n");
00169         return 1;
00170     }
00171 
00172 #ifdef LCMAPS_GSI_MODE
00173     
00174     lcmaps_log_debug(2,"Setting \"user_cred\"\n");
00175     if (lcmaps_setRunVars("user_cred" , "gss_cred_id_t", (void *) &(lcmaps_credential.cred)) != 0)
00176     {
00177         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"user_cred\" variable\n");
00178         return 1;
00179     }
00180     
00181     
00182     lcmaps_log_debug(2,"Setting \"gss_context\"\n");
00183     if (lcmaps_setRunVars("gss_context" , "gss_ctx_id_t", (void *) &(lcmaps_credential.context)) != 0)
00184     {
00185         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"gss_context\" variable\n");
00186         return 1;
00187     }
00188 #endif 
00189 
00190     
00191     lcmaps_log_debug(2,"Setting \"lcmaps_cred\"\n");
00192     if (lcmaps_setRunVars("lcmaps_cred" , "lcmaps_cred_id_t", (void *) &lcmaps_credential) != 0)
00193     {
00194         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"lcmaps_cred\" variable\n");
00195         return 1;
00196     }
00197 
00198     
00199     lcmaps_log_debug(2,"Setting \"job_request\" of type \"lcmaps_request_t\"\n");
00200     if (lcmaps_setRunVars("job_request" , "lcmaps_request_t", (void *) &job_request) != 0)
00201     {
00202         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"job_request\" variable of type \"lcmaps_request_t\"\n");
00203         return 1;
00204     }
00205     lcmaps_log_debug(2,"Setting \"job_request\" of type \"char *\"\n");
00206     if (lcmaps_setRunVars("job_request" , "char *", (void *) &job_request) != 0)
00207     {
00208         lcmaps_log(0,"lcmaps.mod-lcmaps_extractRunVars(): error while setting \"job_request\" variable of type \"char *\"\n");
00209         return 1;
00210     }
00211 
00212     return 0;
00213 }
00214 
00215 
00216 
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00241 void * lcmaps_getRunVars(
00242         char *argName,
00243         char *argType
00244 )
00245 {
00246     
00247 
00248     return lcmaps_getArgValue(argName, argType, NUMBER_OF_RUNVARS, runvars_list);
00249 }
00250 
00251 
00252 
00253 
00254 
00255 
00256 
00257 
00258 
00259 
00260 
00261 
00282 int lcmaps_setRunVars(
00283         char *argName,
00284         char *argType,
00285         void *value
00286 )
00287 {
00288     lcmaps_argument_t *pargument=NULL;
00289 
00290     
00291 
00292 
00293 
00294     pargument=runvars_list;
00295 
00296     lcmaps_log_debug(2,"In lcmaps_setRunVars: Address of first element of runvars_list: 0x%x\n",runvars_list);
00297     lcmaps_log_debug(2,"In lcmaps_setRunVars: Address of address of first element of runvars_list: 0x%x\n",&pargument);
00298 
00299     return lcmaps_setArgValue(argName, argType, value, NUMBER_OF_RUNVARS, &pargument);
00300 }
00301 
00302 #endif 
00303 
00304 
00305 
00306 
00307 
00308 
00309 
00310