Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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));
}
Ejemplo n.º 4
0
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() */
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
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);
  }
Ejemplo n.º 8
0
/**
 * @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;
}
Ejemplo n.º 9
0
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;
  }
Ejemplo n.º 10
0
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;
  }
Ejemplo n.º 11
0
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;
}
Ejemplo n.º 12
0
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;
}
Ejemplo n.º 13
0
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() */
Ejemplo n.º 14
0
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;
  }
Ejemplo n.º 15
0
/**
 * @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;
}
Ejemplo n.º 16
0
/**
 * @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;
}
Ejemplo n.º 17
0
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() */
Ejemplo n.º 18
0
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;
  }