Skip to content
Snippets Groups Projects
Commit 53a089ba authored by Steven Murray's avatar Steven Murray Committed by Steven Murray
Browse files

Added the rmc_mnt() client function call.

parent dd991f8d
No related branches found
No related tags found
No related merge requests found
/******************************************************************************
* rmc/rmc_mnt.c
*
* This file is part of the Castor project.
* See http://castor.web.cern.ch/castor
*
* Copyright (C) 2003 CERN
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*
*
* @author Steven.Murray@cern.ch
*****************************************************************************/
/* rmc_mnt - mount a cartridge into a drive that maybe in either */
/* a SCSI compatible or an ACS compatible tape library */
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <netinet/in.h>
#include "h/marshall.h"
#include "h/rmc_api.h"
#include "h/rmc_constants.h"
#include "h/serrno.h"
#include <errno.h>
#include <string.h>
int rmc_mnt(
const char *const server,
const char *const vid,
const char *const loader)
{
const gid_t gid = getgid();
const uid_t uid = getuid();
/* The total length of the fixed size members of the request message */
/* is Magic (4 bytes) + request ID (4 bytes) + length (4 bytes) + */
/* uid (4 bytes) + gid (4 bytes) = 20 bytes */
const int msglen = 20 + strlen(vid) + 1 + strlen(loader) + 1;
char repbuf[1];
char *sbp = NULL;
char sendbuf[RMC_REQBUFSZ];
/* Consider the function arguments invalid if the total size of the */
/* request message would be greater than RMC_REQBUFSZ */
if(msglen > RMC_REQBUFSZ) {
errno = ERMCUNREC;
serrno = errno;
return -1;
}
/* Build request header */
sbp = sendbuf;
marshall_LONG (sbp, RMC_MAGIC);
marshall_LONG (sbp, RMC_MOUNT);
marshall_LONG (sbp, msglen);
/* Build request body */
marshall_LONG (sbp, uid);
marshall_LONG (sbp, gid);
marshall_STRING (sbp, vid);
marshall_STRING (sbp, loader);
/* Being paranoid; checking the calculated message length against */
/* the number of bytes marshalled */
if(sbp - sendbuf != msglen) {
errno = SEINTERNAL;
serrno = errno;
return -1;
}
return send2rmc (server, sendbuf, msglen, repbuf, sizeof(repbuf));
}
.\" Copyright (C) 2002 by CERN/IT/PDP/DM
.\" All rights reserved
.\"
.TH RMC_MNT 3 "$Date: 2013/11/18 16:21:00 $" CASTOR "rmc Library Functions"
.SH NAME
rmc_mnt \- send a request to the Remote Media Changer daemon to have a volume mounted
.SH SYNOPSIS
.B #include <sys/types.h>
.br
\fB#include "rmc_api.h"\fR
.sp
.BI "int rmc_mnt (char *" server ,
.BI "char *" vid ,
.BI "char *" loader );
.SH DESCRIPTION
.B rmc_mnt
asks the Remote Media Changer server running on
.I server
to mount the volume
.I vid
on the drive specified by
.IR loader .
.TP
.I server
specifies the Remote Media Changer to be contacted.
.TP
.I vid
is the volume visual identifier.
It must be at most six characters long.
.TP
.I loader
specifies the drive in the robot in one of the following forms:
.RS
.TP
acsACS_NUMBER,LSM_NUMBER,PANEL_NUMBER,TRANSPORT_NUMBER
.TP
manual
.TP
smc@hostname,drive_ordinal
.RE
.LP
This function requires TP_SYSTEM privilege in the Cupv database.
.SH RETURN VALUE
This routine returns 0 if the operation was successful or -1 if the operation
failed. In the latter case,
.B serrno
is set appropriately.
.SH ERRORS
.TP 1.2i
.B SECOMERR
Communication error.
.TP
.B ERMCUNREC
Unknown host or invalid loader or vid too long or requester does not have
TP_SYSTEM privilege in the Cupv database.
.TP
.B ERMCFASTR
Unit attention.
.TP
.B ERMCOMSGR
Hardware error or Medium Removal Prevented.
.SH SEE ALSO
.BR Cupvlist(1) ,
.SH AUTHOR
\fBCASTOR\fP Team <castor.support@cern.ch>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment