int decode_DIS_SignalJob(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_signal.rq_jid); if (rc) return rc; rc = disrfst(sock, PBS_SIGNAMESZ+1, preq->rq_ind.rq_signal.rq_signame); return rc; }
int decode_DIS_MoveJob(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_move.rq_jid); if (rc) return rc; rc = disrfst(sock, PBS_MAXDEST+1, preq->rq_ind.rq_move.rq_destin); return rc; }
int decode_DIS_QueueJob(int sock, struct batch_request *preq) { int rc; CLEAR_HEAD(preq->rq_ind.rq_queuejob.rq_attr); rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_queuejob.rq_jid); if (rc) return rc; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_queuejob.rq_destin); if (rc) return rc; return (decode_DIS_svrattrl(sock, &preq->rq_ind.rq_queuejob.rq_attr)); }
int decode_DIS_ReqHdr( struct tcp_chan *chan, struct batch_request *preq, int *proto_type, int *proto_ver) { int rc; /* We got the protocol type in process_pbs_server_port We are just hard coding it here */ *proto_type = PBS_BATCH_PROT_TYPE; *proto_ver = disrui(chan, &rc); if (rc == 0) { preq->rq_type = disrui(chan, &rc); } if (rc != 0) { return(rc); } return(disrfst(chan, PBS_MAXUSER, preq->rq_user)); } /* END decode_DIS_ReqHdr() */
int decode_DIS_TrackJob(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_track.rq_jid); if (rc) return rc; preq->rq_ind.rq_track.rq_hopcount = disrui(sock, &rc); if (rc) return rc; rc = disrfst(sock, PBS_MAXDEST+1, preq->rq_ind.rq_track.rq_location); if (rc) return rc; preq->rq_ind.rq_track.rq_state[0] = disruc(sock, &rc); return rc; }
int decode_DIS_UserMigrate(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, PBS_MAXHOSTNAME+1, preq->rq_ind.rq_user_migrate.rq_tohost); return rc; }
int decode_DIS_JobFile( int sock, struct batch_request *preq) { int rc; size_t amt; preq->rq_ind.rq_jobfile.rq_data = 0; preq->rq_ind.rq_jobfile.rq_sequence = disrui(sock, &rc); if (rc) { return(rc); } preq->rq_ind.rq_jobfile.rq_type = disrui(sock, &rc); if (rc) { return(rc); } preq->rq_ind.rq_jobfile.rq_size = disrui(sock, &rc); if (rc) { return(rc); } if ((rc = disrfst(sock, PBS_MAXSVRJOBID + 1, preq->rq_ind.rq_jobfile.rq_jobid)) != 0) { return(rc); } preq->rq_ind.rq_jobfile.rq_data = disrcs(sock, &amt, &rc); if (((long)amt != preq->rq_ind.rq_jobfile.rq_size) && (rc == 0)) rc = DIS_EOD; if (rc) { if (preq->rq_ind.rq_jobfile.rq_data) free(preq->rq_ind.rq_jobfile.rq_data); preq->rq_ind.rq_jobfile.rq_data = 0; } return(rc); }
/** * @brief * Read a release nodes from job request off the wire. * * @param[in] sock - socket where you reads the request. * @param[in] preq - the batch_request structure containing the request details. * * @return int * * @retval 0 - if successful * @retval != 0 - if not successful (an error encountered along the way) */ int decode_DIS_RelnodesJob(int sock, struct batch_request *preq) { int rc; preq->rq_ind.rq_relnodes.rq_node_list = NULL; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_relnodes.rq_jid); if (rc) return rc; preq->rq_ind.rq_relnodes.rq_node_list = disrst(sock, &rc); return rc; }
int decode_DIS_AltAuthen(int sock, struct batch_request *preq) { int rc; preq->rq_ind.rq_authen.rq_port = disrui(sock, &rc); if(rc != 0) { return(rc); } rc = disrfst(sock, PBS_MAXCREDENTIAL_LEN + 1, preq->rq_ind.rq_authen.rq_cred); return rc; }
int decode_DIS_Status(int sock, struct batch_request *preq) { int rc; CLEAR_HEAD(preq->rq_ind.rq_status.rq_attr); rc = disrfst(sock, (PBS_MAXSVRJOBID > PBS_MAXDEST ? PBS_MAXSVRJOBID : PBS_MAXDEST) + 1, preq->rq_ind.rq_status.rq_id); if (rc) return rc; rc = decode_DIS_svrattrl(sock, &preq->rq_ind.rq_status.rq_attr); return rc; }
int decode_DIS_MessageJob(int sock, struct batch_request *preq) { int rc; preq->rq_ind.rq_message.rq_text = 0; rc = disrfst(sock, PBS_MAXSVRJOBID+1, preq->rq_ind.rq_message.rq_jid); if (rc) return rc; preq->rq_ind.rq_message.rq_file = disrui(sock, &rc); if (rc) return rc; preq->rq_ind.rq_message.rq_text = disrst(sock, &rc); return rc; }
int decode_DIS_UserCred(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, PBS_MAXUSER+1, preq->rq_ind.rq_usercred.rq_user); if (rc) return rc; preq->rq_ind.rq_usercred.rq_type = disrui(sock, &rc); if (rc) return rc; preq->rq_ind.rq_usercred.rq_data = 0; preq->rq_ind.rq_usercred.rq_data = disrcs(sock, (size_t *)&preq->rq_ind.rq_usercred.rq_size, &rc); return rc; }
int decode_DIS_AltAuthen( struct tcp_chan *chan, struct batch_request *preq) { int rc; preq->rq_ind.rq_authen.rq_port = disrui(chan, &rc); if (rc != 0) { return(rc); } rc = disrfst(chan, PBS_MAXCREDENTIAL_LEN, preq->rq_ind.rq_authen.rq_cred); return rc; } /* END decode_DIS_AltAuthen() */
int decode_DIS_Status( struct tcp_chan *chan, struct batch_request *preq) { int rc; CLEAR_HEAD(preq->rq_ind.rq_status.rq_attr); rc = disrfst(chan, (PBS_MAXSVRJOBID > PBS_MAXDEST ? PBS_MAXSVRJOBID : PBS_MAXDEST), preq->rq_ind.rq_status.rq_id); if (rc) return rc; rc = decode_DIS_svrattrl(chan, &preq->rq_ind.rq_status.rq_attr); return rc; }
/** * @brief * Read a python spawn request off the wire. * Each of the argv and envp arrays is sent by writing a counted * string followed by a zero length string (""). * * @param[in] sock - socket where you reads the request. * @param[in] preq - the batch_request structure to free up. */ int decode_DIS_PySpawn(int sock, struct batch_request *preq) { int rc; rc = disrfst(sock, sizeof(preq->rq_ind.rq_py_spawn.rq_jid), preq->rq_ind.rq_py_spawn.rq_jid); if (rc) return rc; rc = read_carray(sock, &preq->rq_ind.rq_py_spawn.rq_argv); if (rc) return rc; rc = read_carray(sock, &preq->rq_ind.rq_py_spawn.rq_envp); if (rc) return rc; return rc; }
/** * @brief * Decode PBS batch request to authenticate based on external (non-resv-port) mechanisms. * The batch request contains type and the auth data. * * @param [in] sock socket connection * @param [in] preq PBS bath request * @return in * @retval 0 on success * @retval > 0 on failure */ int decode_DIS_AuthExternal(int sock, struct batch_request *preq) { int rc; int cred_len = 0; preq->rq_ind.rq_authen_external.rq_auth_type = disruc(sock, &rc); if (rc != DIS_SUCCESS) return (rc); cred_len = disrsi(sock, &rc); if (rc != DIS_SUCCESS) return (rc); switch (preq->rq_ind.rq_authen_external.rq_auth_type) { case AUTH_MUNGE: return (disrfst(sock, cred_len, preq->rq_ind.rq_authen_external.rq_authen_un.rq_munge.rq_authkey) != 0); } return DIS_EOF; }
int decode_DIS_ReqHdr( int sock, struct batch_request *preq, int *proto_type, int *proto_ver) { int rc; *proto_type = disrui(sock, &rc); if (rc != 0) { return(rc); } if (*proto_type != PBS_BATCH_PROT_TYPE) { return(DIS_PROTO); } *proto_ver = disrui(sock, &rc); if (rc) { return(rc); } preq->rq_type = disrui(sock, &rc); if (rc != 0) { return(rc); } return(disrfst(sock, PBS_MAXUSER + 1, preq->rq_user)); } /* END decode_DIS_ReqHdr() */
int decode_DIS_ReturnFiles(int sock, struct batch_request *preq) { struct rq_returnfiles *prfs; int rc; prfs = &preq->rq_ind.rq_returnfiles; if ((rc = disrfst(sock, PBS_MAXSVRJOBID, prfs->rq_jobid)) != 0) return rc; prfs->rq_return_stdout = disrsi(sock, &rc); if (rc != 0) return rc; prfs->rq_return_stderr = disrsi(sock, &rc); if (rc != 0) return rc; return 0; }