Example #1
0
int
ndmca_test_data_listen (struct ndm_session *sess, ndmp9_error expect_err,
			ndmp9_addr_type addr_type)
{
	struct ndmconn *	conn = sess->plumb.data;
	struct ndm_control_agent *ca = sess->control_acb;
	int			rc;

	/* close previous test if there is one */
	ndmca_test_close (sess);

	switch (conn->protocol_version) {
	default:	return -1234;

#ifndef NDMOS_OPTION_NO_NDMP3
	case NDMP3VER:
	    NDMC_WITH(ndmp3_data_listen, NDMP3VER)
		request->addr_type = addr_type;

		rc = NDMTEST_CALL(conn);
		if (rc) return rc;

		if (expect_err == NDMP9_NO_ERR
		 && request->addr_type
		    != reply->data_connection_addr.addr_type) {
			/* TODO: use proper test format */
			ndmalogf (sess, "Test", 1,
				"DATA_LISTEN addr_type mismatch");
			return -1;
		}
		ndmp_3to9_addr (&reply->data_connection_addr, &ca->data_addr);
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP3 */
#ifndef NDMOS_OPTION_NO_NDMP4
	case NDMP4VER:
	    NDMC_WITH(ndmp4_data_listen, NDMP4VER)
		request->addr_type = addr_type;

		rc = NDMTEST_CALL(conn);
		if (rc) return rc;

		if (expect_err == NDMP9_NO_ERR
		 && request->addr_type
		    != reply->connect_addr.addr_type) {
			/* TODO: use proper test format */
			ndmalogf (sess, "Test", 1,
				"DATA_LISTEN addr_type mismatch");
			return -1;
		}
		ndmp_4to9_addr (&reply->connect_addr, &ca->data_addr);
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP4 */
	}

	return 0;
}
Example #2
0
int
ndmca_test_tape_read_2cnt (struct ndm_session *sess, ndmp9_error expect_err,
  char *buf, unsigned count, unsigned true_count)
{
	struct ndmconn *	conn = sess->plumb.tape;
	int			rc;

	/* close previous test if there is one */
	ndmca_test_close (sess);

	switch (conn->protocol_version) {
	default:	return -1234;

#ifndef NDMOS_OPTION_NO_NDMP2
	case NDMP2VER:
	    NDMC_WITH(ndmp2_tape_read, NDMP2VER)
		request->count = count;
		rc = NDMTEST_CALL(conn);
		if (rc == 0 && expect_err == NDMP9_NO_ERR) {
			if (reply->data_in.data_in_len == true_count) {
				bcopy (reply->data_in.data_in_val,
							buf, true_count);
			} else {
				rc = -1;
			}
		}
		NDMC_FREE_REPLY();
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP2 */
#ifndef NDMOS_OPTION_NO_NDMP3
	case NDMP3VER:
	    NDMC_WITH(ndmp3_tape_read, NDMP3VER)
		request->count = count;
		rc = NDMTEST_CALL(conn);
		if (rc == 0 && expect_err == NDMP9_NO_ERR) {
			if (reply->data_in.data_in_len == true_count) {
				bcopy (reply->data_in.data_in_val,
							buf, true_count);
			} else {
				rc = -1;
			}
		}
		NDMC_FREE_REPLY();
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP3 */
#ifndef NDMOS_OPTION_NO_NDMP4
	case NDMP4VER:
	    NDMC_WITH(ndmp4_tape_read, NDMP4VER)
		request->count = count;
		rc = NDMTEST_CALL(conn);
		if (rc == 0 && expect_err == NDMP9_NO_ERR) {
			if (reply->data_in.data_in_len == true_count) {
				bcopy (reply->data_in.data_in_val,
							buf, true_count);
			} else {
				rc = -1;
			}
		}
		NDMC_FREE_REPLY();
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP4 */
	}

	return rc;
}
Example #3
0
int
ndmca_test_tape_open (struct ndm_session *sess, ndmp9_error expect_err,
  char *device, int mode)
{
	struct ndmconn *	conn = sess->plumb.tape;
	struct ndm_control_agent *ca = &sess->control_acb;
	int			rc;

	/* close previous test if there is one */
	ndmca_test_close (sess);

	switch (conn->protocol_version) {
	default:	return -1234;

#ifndef NDMOS_OPTION_NO_NDMP2
	case NDMP2VER:
	    NDMC_WITH (ndmp2_tape_open, NDMP2VER)
		if (device)
			request->device.name = device;
		else
			request->device.name = ca->job.tape_device;
		if (mode != -1)
			request->mode = mode;
		else
			request->mode = ca->tape_mode;
		rc = NDMTEST_CALL(conn);
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP2 */
#ifndef NDMOS_OPTION_NO_NDMP3
	case NDMP3VER:
	    NDMC_WITH (ndmp3_tape_open, NDMP3VER)
		if (device)
			request->device = device;
		else
			request->device = ca->job.tape_device;
		if (mode != -1)
			request->mode = mode;
		else
			request->mode = ca->tape_mode;
		rc = NDMTEST_CALL(conn);
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP3 */
#ifndef NDMOS_OPTION_NO_NDMP4
	case NDMP4VER:
	    NDMC_WITH (ndmp4_tape_open, NDMP4VER)
		if (device)
			request->device = device;
		else
			request->device = ca->job.tape_device;
		if (mode != -1)
			request->mode = mode;
		else
			request->mode = ca->tape_mode;
		rc = NDMTEST_CALL(conn);
	    NDMC_ENDWITH
	    break;
#endif /* !NDMOS_OPTION_NO_NDMP4 */
	}

	return rc;
}