AFS
view release on metacpan or search on metacpan
/***********************************************************************
*
* AFS.xs - AFS extensions for Perl
*
* RCS-Id: @(#)$RCS-Id: src/AFS.xs 73757dc Thu Oct 23 12:46:20 2014 +0200 Norbert E Gruener$
*
* Copyright (c) 2003, International Business Machines Corporation and others.
*
* This software has been released under the terms of the IBM Public
* License. For details, see the IBM-LICENSE file in the LICENCES
* directory or online at http://www.openafs.org/dl/license10.html
*
* Contributors
* 2004-2014: Norbert E. Gruener <nog@MPA-Garching.MPG.de>
* 2003: Alf Wachsmann <alfw@slac.stanford.edu>
* Venkata Phani Kiran Achanta <neo_phani@hotmail.com>, and
* Norbert E. Gruener <nog@MPA-Garching.MPG.de>
* 2001-2002: Norbert E. Gruener <nog@MPA-Garching.MPG.de>
*
* The original library was written by Roland Schemers <schemers@slapshot.stanford.edu>
* and is covered by the following copyright:
*
* Copyright (c) 1994 Board of Trustees, Leland Stanford Jr. University
* For conditions of distribution and use, see the copyright notice in
* the Stanford-LICENCE file.
*
* The code for the original library were mainly taken from the AFS
* source distribution, which comes with this message:
*
* Copyright (C) 1989-1994 Transarc Corporation - All rights reserved
* P_R_P_Q_# (C) COPYRIGHT IBM CORPORATION 1987, 1988, 1989
*
***********************************************************************/
#include "EXTERN.h"
#ifdef __sgi /* needed to get a clean compile */
#include <setjmp.h>
#endif
#include "perl.h"
#include "XSUB.h"
#define NEED_newRV_noinc
#define NEED_sv_2pv_flags
#include "ppport.h"
#include <afs/param.h>
/* tired of seeing messages about TRUE/FALSE being redefined in rx/xdr.h */
#undef TRUE
#undef FALSE
#include <rx/xdr.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/stat.h>
#undef INIT
#include <afs/stds.h>
#include <afs/afs.h>
#include <afs/vice.h>
#include <afs/venus.h>
#undef VIRTUE
#undef VICE
#include <afs/prs_fs.h>
#include <afs/afsint.h>
#include <afs/auth.h>
#include <afs/cellconfig.h>
#if defined(AFS_3_4)
#else
#include <afs/dirpath.h>
#endif
#include <ubik.h>
#include <rx/rxkad.h>
#include <afs/vldbint.h>
#include <afs/volser.h>
#ifndef RV_RDONLY
#define RV_FULLRST 0x000001
#define RV_OFFLINE 0x000002
#define RV_CRDUMP 0x000010
#define RV_CRKEEP 0x000020
#define RV_CRNEW 0x000040
#define RV_LUDUMP 0x000100
#define RV_LUKEEP 0x000200
#define RV_LUNEW 0x000400
#define RV_RDONLY 0x010000
#define RV_CPINCR 0x020000
#define RV_NOVLDB 0x040000
#define RV_NOCLONE 0x080000
#define RV_NODEL 0x100000
#endif
#include <afs/vlserver.h>
#include <afs/volint.h>
#include <afs/cmd.h>
#include <afs/usd.h>
#include <afs/ptclient.h>
#include <afs/pterror.h>
#include <afs/print.h>
#include <afs/kauth.h>
#include <afs/kautils.h>
#include <afs/bosint.h>
#include <afs/bnode.h>
#include <afs/ktime.h>
#if defined(AFS_OLD_COM_ERR)
#include <com_err.h>
#else
#include <afs/com_err.h>
#endif
#include <des.h>
#if defined(AFS_3_4) || defined(AFS_3_5)
#else
#define int32 afs_int32
#define uint32 afs_uint32
#endif
const char *const xs_version = "AFS.xs (Version 2.6.4)";
/* here because it seemed too painful to #define KERNEL before #inc afs.h */
struct VenusFid {
int32 Cell;
struct AFSFid Fid;
};
/* tpf nog 03/29/99 */
/* the following was added by leg@andrew, 10/9/96 */
/*#ifdef __hpux*//* only on hp700_ux90 systems */
#if defined(__hpux) || defined(_AIX) || defined(sun) || defined(__sun__) || defined(__sgi) || defined(__linux)
static int32 name_is_numeric(char *);
#endif
typedef SV *AFS__ACL;
typedef struct ktc_principal *AFS__KTC_PRINCIPAL;
typedef struct ktc_token *AFS__KTC_TOKEN;
typedef struct ktc_encryptionKey *AFS__KTC_EKEY;
typedef struct ubik_client *AFS__KAS;
typedef struct ubik_client *AFS__PTS;
typedef struct ubik_client *AFS__VLDB;
typedef struct ubik_client *AFS__VOS;
typedef struct rx_connection *AFS__BOS;
extern struct ubik_client *cstruct;
#include "afs_prototypes.h"
extern int afs_setpag();
static rxkad_level vsu_rxkad_level = rxkad_clear;
static struct ktc_token the_null_token;
static int32 convert_numeric_names = 1;
static int32 rx_initialized = 0;
#define MAXSIZE 2048
#define MAXINSIZE 1300
#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
#endif
#define AFS_ASK 0
#define AFS_ABORT 1
#define AFS_FULL 2
#define AFS_INC 3
#ifdef AFS_PTHREAD_ENV
#undef clock_haveCurrentTime
#undef clock_UpdateTime
struct clock clock_now;
#endif /* AFS_PTHREAD_ENV*/
/* error handling macros */
#define ERROR_EXIT(code) {error=(code); goto error_exit;}
#define SETCODE(code) set_code(code)
#define BSETCODE(code, msg) bv_set_code(code, msg)
#define VSETCODE(code, msg) bv_set_code(code, msg)
#define KSETCODE(code, msg) k_set_code(code, msg)
#define PSETCODE(msg) p_set_code(msg)
static int32 raise_exception = 0;
void safe_hv_store (HV* ahv,char * key ,int i ,SV * asv,int j) {
if (! hv_store(ahv, key, i, asv, j)) {
fprintf(stderr,"Panic ... internal error. hv_store failed.\n");
exit(1);
}
return;
}
static void bv_set_code(code, msg)
int32 code;
const char *msg;
{
SV *sv = get_sv("AFS::CODE", TRUE);
sv_setiv(sv, (IV) code);
/* printf("BV_SET_CODE %s (%d)\n", msg, code); */
if (code == 0) {
sv_setpv(sv, "");
}
else {
if (raise_exception) {
char buffer[1024];
sprintf(buffer, "AFS exception: %s (%d)", msg, code);
croak(buffer);
}
/* printf("BV_SET_CODE %s (%d)\n", msg, code); */
sv_setpv(sv, (char *) msg);
}
SvIOK_on(sv);
}
static void p_set_code(msg)
const char *msg;
{
int32 code = errno;
SV *sv = get_sv("AFS::CODE", TRUE);
sv_setiv(sv, (IV) code);
/* printf("P_SET_CODE %s (%d)\n", msg, code); */
if (code == 0) {
sv_setpv(sv, "");
}
else {
char buffer[1024];
if (raise_exception) {
sprintf(buffer, "AFS exception: %s (%s) (%d)", msg, error_message(code), code);
croak(buffer);
PPCODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
STRLEN insize;
if (!setpath)
path = NULL;
if (setout) {
space[0] = '\0';
vi.out_size = MAXSIZE;
vi.out = space;
}
else {
vi.out_size = 0;
vi.out = 0;
}
if (setin) {
vi.in = (char *) SvPV(ST(2), insize);
vi.in_size = insize;
}
else {
vi.in = 0;
vi.in_size = 0;
}
code = pioctl(path, op, &vi, follow);
SETCODE(code);
if (code == 0 && setout) {
EXTEND(sp, 1);
printf("out_size = %d\n", vi.out_size);
PUSHs(sv_2mortal(newSVpv(vi.out, vi.out_size)));
}
}
void
fs_getvolstats(dir,follow=1)
char * dir
int32 follow
PPCODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
HV *stats;
vi.out_size = MAXSIZE;
vi.in_size = 0;
vi.out = space;
code = pioctl(dir, VIOCGETVOLSTAT, &vi, follow);
SETCODE(code);
if (code == 0) {
stats = newHV();
if (parse_volstat(stats, space)) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newRV_noinc((SV *) stats)));
}
else {
hv_undef(stats);
}
}
}
void
fs_whereis(dir,ip=0,follow=1)
char * dir
int32 ip
int32 follow
PPCODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
vi.out_size = MAXSIZE;
vi.in_size = 0;
vi.out = space;
code = pioctl(dir, VIOCWHEREIS, &vi, follow);
SETCODE(code);
if (code == 0) {
struct in_addr *hosts = (struct in_addr *) space;
struct hostent *ht;
int i;
char *h;
for (i = 0; i < MAXHOSTS; i++) {
if (hosts[i].s_addr == 0)
break;
if (ip == 0) {
ht = gethostbyaddr((const char *) &hosts[i], sizeof(struct in_addr), AF_INET);
if (ht == NULL)
h = (char *) inet_ntoa(hosts[i]);
else
h = ht->h_name;
}
else {
h = (char *) inet_ntoa(hosts[i]);
}
XPUSHs(sv_2mortal(newSVpv(h, strlen(h))));
}
}
}
void
fs_checkservers(fast,cell=0,ip=0)
int32 fast
char * cell
int32 ip
PPCODE:
{
struct chservinfo checkserv;
struct ViceIoctl vi;
int32 code, *num;
char space[MAXSIZE];
checkserv.magic = 0x12345678;
checkserv.tflags = 2;
if (fast)
checkserv.tflags |= 0x1;
set.status = 0x2;
vi.in_size = sizeof(set);
vi.in = (char *) &set;
vi.out_size = 0;
vi.out = (char *) 0;
code = pioctl(0, VIOC_SETCELLSTATUS, &vi, 0);
SETCODE(code);
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSViv(code == 0)));
}
}
void
fs_wscell()
CODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
vi.in_size = 0;
vi.out_size = MAXSIZE;
vi.out = (caddr_t) space;
code = pioctl(NULL, VIOC_GET_WS_CELL, &vi, 0);
SETCODE(code);
ST(0) = sv_newmortal();
if (code == 0) {
sv_setpv(ST(0), space);
}
}
void
fs__getacl(dir,follow=1)
char * dir
int32 follow
PPCODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
HV *ph, *nh;
vi.out_size = MAXSIZE;
vi.in_size = 0;
vi.out = space;
code = pioctl(dir, VIOCGETAL, &vi, follow);
SETCODE(code);
if (code == 0) {
ph = newHV();
nh = newHV();
if (parse_acl(space, ph, nh)) {
AV *acl;
acl = newAV();
av_store(acl, 0, newRV_noinc((SV *) ph));
av_store(acl, 1, newRV_noinc((SV *) nh));
EXTEND(sp, 1);
PUSHs(sv_bless(sv_2mortal(newRV_noinc((SV *) acl)), gv_stashpv("AFS::ACL", 1)));
}
else {
hv_undef(ph);
hv_undef(nh);
}
}
}
int32
fs_setacl(dir,acl,follow=1)
char * dir
SV * acl
int32 follow
CODE:
{
struct ViceIoctl vi;
int32 code;
char space[MAXSIZE];
char acls[MAXSIZE], *p;
HV *ph, *nh;
AV *object;
SV **sv;
HE *he;
int plen, nlen;
int32 rights;
char *name, *perm;
if (sv_isa(acl, "AFS::ACL") && SvROK(acl)
&& (SvTYPE(SvRV(acl)) == SVt_PVAV)
) {
object = (AV *) SvRV(acl);
}
else {
croak("acl is not of type AFS::ACL");
}
ph = nh = NULL;
sv = av_fetch(object, 0, 0);
if (sv) {
SV *sph = *sv;
if (SvROK(sph) && (SvTYPE(SvRV(sph)) == SVt_PVHV)) {
ph = (HV *) SvRV(sph);
}
}
sv = av_fetch(object, 1, 0);
if (sv) {
SV *snh = *sv;
if (SvROK(snh) && (SvTYPE(SvRV(snh)) == SVt_PVHV)) {
nh = (HV *) SvRV(snh);
}
}
plen = nlen = 0;
p = acls;
*p = 0;
code = 0;
if (ph) {
hv_iterinit(ph);
}
OUTPUT:
RETVAL
void
bos_listkeys(self, showkey=0)
AFS::BOS self
int showkey
PREINIT:
afs_int32 i, kvno, code = 0;
struct ktc_encryptionKey tkey;
struct bozo_keyInfo keyInfo;
int everWorked = 0;
char index[5];
HV *list = (HV*)sv_2mortal((SV*)newHV());
PPCODE:
{
for (i = 0;; i++) {
HV *key = (HV *) sv_2mortal((SV *) newHV());
code = BOZO_ListKeys(self, i, &kvno, &tkey, &keyInfo);
if (code)
break;
everWorked = 1;
/* first check if key is returned */
if ((!ka_KeyIsZero((char *) &tkey, sizeof(tkey))) && showkey) {
/* ka_PrintBytes ((char *)&tkey, sizeof(tkey)); */
safe_hv_store(key, "key", 3, newSVpv((char *) &tkey, sizeof(tkey)), 0);
}
else {
if (keyInfo.keyCheckSum == 0) { /* shouldn't happen */
/* printf ("key version is %d\n", kvno); */
}
else {
safe_hv_store(key, "keyCheckSum", 11, newSVuv(keyInfo.keyCheckSum), 0);
}
}
sprintf(index, "%d", kvno);
safe_hv_store(list, index, strlen(index), newRV_inc((SV *) (key)), 0);
} /* for loop */
if (everWorked) {
/* fprintf(stderr, "Keys last changed on %d.\n", keyInfo.mod_sec); */
EXTEND(sp, 2);
PUSHs(sv_2mortal(newSViv(keyInfo.mod_sec)));
PUSHs(newRV_inc((SV *) (list)));
}
if (code != BZDOM) {
char buffer[256];
sprintf(buffer, "AFS::BOS: %s error encountered while listing keys\n", em(code));
BSETCODE(code, buffer);
}
else {
code = 0;
}
if (everWorked) {
XSRETURN(2);
}
else {
XSRETURN_EMPTY;
hv_undef(list);
}
}
int32
bos_getrestricted(self)
AFS::BOS self
CODE:
{
#ifdef BOS_RESTRICTED_MODE
int32 val, code;
RETVAL = 0;
code = BOZO_GetRestrictedMode(self, &val);
if (code) {
char buffer[256];
sprintf(buffer, "AFS::BOS: failed to get restricted mode (%s)\n", em(code));
BSETCODE(code, buffer);
}
RETVAL = val;
#else
RETVAL = 0;
not_here("AFS::BOS::getrestricted");
#endif
}
OUTPUT:
RETVAL
int32
bos_setrestricted(self, mode)
AFS::BOS self
char *mode
CODE:
{
#ifdef BOS_RESTRICTED_MODE
int32 val, code;
util_GetInt32(mode, &val);
code = BOZO_SetRestrictedMode(self, val);
if (code) {
char buffer[256];
sprintf(buffer, "AFS::BOS: failed to set restricted mode (%s)\n", em(code));
BSETCODE(code, buffer);
}
RETVAL = (code == 0);
#else
RETVAL = 0;
not_here("AFS::BOS::setrestricted");
#endif
}
OUTPUT:
RETVAL
int32
bos_salvage(self, partition=NULL, volume=NULL, all=0, outName=NULL, showlog=0, parallel=NULL, tmpDir=NULL, orphans=NULL, localauth=0, tmpname=NULL, debug=0, nowrite=0, force=0, oktozap=0, rootfiles=0, salvagedirs=0, blockreads=0, ListResidencies=0, S...
AFS::BOS self
char *partition
char *volume
int32 all
char *outName
int32 showlog
char *parallel
char *tmpDir
code = ubik_Call(PR_NameToID, server, 0, &lnames, &lids);
SETCODE(code);
if (code == 0 && lids.idlist_val) {
EXTEND(sp, lids.idlist_len);
for (i = 0; i < lids.idlist_len; i++) {
id = lids.idlist_val[i];
if (id == ANONYMOUSID && !anon) {
PUSHs(sv_newmortal());
}
else {
PUSHs(sv_2mortal(newSViv(id)));
}
}
if (lids.idlist_val)
free(lids.idlist_val);
}
if (lnames.namelist_val)
safefree(lnames.namelist_val);
PUTBACK;
return;
}
}
else if (SvTYPE(SvRV(object)) == SVt_PVHV) {
int32 code = 0, id;
int i, len;
HV *hv;
HE *he;
namelist lnames;
idlist lids;
char *key;
I32 keylen;
hv = (HV *) SvRV(object);
len = 0;
hv_iterinit(hv);
while (hv_iternext(hv))
len++;
if (len != 0) {
lnames.namelist_len = len;
lnames.namelist_val = (prname *) safemalloc(PR_MAXNAMELEN * len);
hv_iterinit(hv);
i = 0;
while ((he = hv_iternext(hv))) {
key = hv_iterkey(he, &keylen);
strncpy(lnames.namelist_val[i], key, PR_MAXNAMELEN);
i++;
}
lids.idlist_len = 0;
lids.idlist_val = 0;
code = ubik_Call(PR_NameToID, server, 0, &lnames, &lids);
SETCODE(code);
if (code == 0 && lids.idlist_val) {
hv_iterinit(hv);
i = 0;
while ((he = hv_iternext(hv))) {
key = hv_iterkey(he, &keylen);
id = lids.idlist_val[i];
if (id == ANONYMOUSID && !anon) {
safe_hv_store(hv, key, keylen, newSVsv(&PL_sv_undef), 0);
}
else {
safe_hv_store(hv, key, keylen, newSViv(id), 0);
}
i++;
}
if (lids.idlist_val)
free(lids.idlist_val);
}
if (lnames.namelist_val)
safefree(lnames.namelist_val);
}
if (code == 0) {
ST(0) = sv_2mortal(newRV_inc((SV *) hv));
}
else {
ST(0) = sv_newmortal();
}
XSRETURN(1);
}
else {
croak("object is not a scaler, ARRAY reference, or HASH reference");
}
}
void
pts_PR_NameToID(server,object)
AFS::PTS server
SV * object
PPCODE:
{
int32 code, id;
int i, len;
AV *av;
SV *sv;
char *name;
STRLEN namelen;
namelist lnames;
idlist lids;
if (!SvROK(object) || SvTYPE(SvRV(object)) != SVt_PVAV) {
croak("object is not an ARRAY reference");
}
av = (AV *) SvRV(object);
len = av_len(av);
if (len != -1) {
lnames.namelist_len = len + 1;
lnames.namelist_val = (prname *) safemalloc(PR_MAXNAMELEN * (len + 1));
for (i = 0; i <= len; i++) {
sv = *av_fetch(av, i, 0);
if (sv) {
name = SvPV(sv, namelen);
strncpy(lnames.namelist_val[i], name, PR_MAXNAMELEN);
}
}
lids.idlist_len = 0;
lids.idlist_val = 0;
code = ubik_Call(PR_NameToID, server, 0, &lnames, &lids);
SETCODE(code);
if (code == 0 && lids.idlist_val) {
EXTEND(sp, lids.idlist_len);
for (i = 0; i < lids.idlist_len; i++) {
id = lids.idlist_val[i];
PUSHs(sv_2mortal(newSViv(id)));
}
if (lids.idlist_val)
free(lids.idlist_val);
}
if (lnames.namelist_val)
safefree(lnames.namelist_val);
PUTBACK;
return;
}
}
void
pts_name(server,object,anon=1)
AFS::PTS server
SV * object
int32 anon
PPCODE:
{
if (!SvROK(object)) {
int32 code, id;
char name[PR_MAXNAMELEN];
id = SvIV(object);
code = internal_pr_name(server, id, name);
SETCODE(code);
ST(0) = sv_newmortal();
if (code == 0) {
if (!anon && check_name_for_id(name, id)) {
/* return undef */
}
else {
sv_setpv(ST(0), name);
}
}
XSRETURN(1);
}
else if (SvTYPE(SvRV(object)) == SVt_PVAV) {
int32 code;
int i, len;
AV *av;
SV *sv;
char *name;
namelist lnames;
idlist lids;
av = (AV *) SvRV(object);
len = av_len(av);
if (len != -1) {
lids.idlist_len = len + 1;
lids.idlist_val = (int32 *) safemalloc(sizeof(int32) * (len + 1));
lnames.namelist_len = 0;
lnames.namelist_val = 0;
for (i = 0; i <= len; i++) {
sv = *av_fetch(av, i, 0);
if (sv) {
lids.idlist_val[i] = SvIV(sv);
}
}
code = ubik_Call(PR_IDToName, server, 0, &lids, &lnames);
SETCODE(code);
if (code == 0 && lnames.namelist_val) {
EXTEND(sp, lnames.namelist_len);
for (i = 0; i < lnames.namelist_len; i++) {
name = lnames.namelist_val[i];
if (!anon && check_name_for_id(name, lids.idlist_val[i])) {
PUSHs(sv_newmortal());
}
else {
PUSHs(sv_2mortal(newSVpv(name, strlen(name))));
}
}
if (lnames.namelist_val)
free(lnames.namelist_val);
}
if (lids.idlist_val)
safefree(lids.idlist_val);
PUTBACK;
return;
}
}
else if (SvTYPE(SvRV(object)) == SVt_PVHV) {
int32 code = 0;
int i, len;
HV *hv;
SV *sv;
HE *he;
char *name;
namelist lnames;
idlist lids;
char *key;
I32 keylen;
hv = (HV *) SvRV(object);
len = 0;
hv_iterinit(hv);
while (hv_iternext(hv))
len++;
if (len != 0) {
lids.idlist_len = len;
lids.idlist_val = (int32 *) safemalloc(sizeof(int32) * len);
lnames.namelist_len = 0;
lnames.namelist_val = 0;
hv_iterinit(hv);
i = 0;
sv = sv_newmortal();
while ((he = hv_iternext(hv))) {
key = hv_iterkey(he, &keylen);
sv_setpvn(sv, key, keylen);
lids.idlist_val[i] = SvIV(sv);
i++;
}
code = ubik_Call(PR_IDToName, server, 0, &lids, &lnames);
SETCODE(code);
if (code == 0 && lnames.namelist_val) {
hv_iterinit(hv);
i = 0;
while ((he = hv_iternext(hv))) {
key = hv_iterkey(he, &keylen);
name = lnames.namelist_val[i];
if (!anon && check_name_for_id(name, lids.idlist_val[i])) {
safe_hv_store(hv, key, keylen, newSVsv(&PL_sv_undef), 0);
}
else {
safe_hv_store(hv, key, keylen, newSVpv(name, strlen(name)), 0);
}
i++;
}
if (lnames.namelist_val)
free(lnames.namelist_val);
}
if (lids.idlist_val)
safefree(lids.idlist_val);
}
if (code == 0) {
ST(0) = sv_2mortal(newRV_inc((SV *) hv));
}
else {
ST(0) = sv_newmortal();
}
XSRETURN(1);
}
else {
croak("object is not a scaler, ARRAY reference, or HASH reference");
}
}
void
pts_PR_IDToName(server,object)
AFS::PTS server
SV * object
PPCODE:
{
int32 code;
int i, len;
AV *av;
SV *sv;
char *name;
namelist lnames;
idlist lids;
if (!SvROK(object) || SvTYPE(SvRV(object)) != SVt_PVAV) {
croak("object is not an ARRAY reference");
}
av = (AV *) SvRV(object);
len = av_len(av);
if (len != -1) {
lids.idlist_len = len + 1;
lids.idlist_val = (int32 *) safemalloc(sizeof(int32) * (len + 1));
lnames.namelist_len = 0;
lnames.namelist_val = 0;
for (i = 0; i <= len; i++) {
sv = *av_fetch(av, i, 0);
if (sv) {
lids.idlist_val[i] = SvIV(sv);
}
}
code = ubik_Call(PR_IDToName, server, 0, &lids, &lnames);
SETCODE(code);
if (code == 0 && lnames.namelist_val) {
EXTEND(sp, lnames.namelist_len);
SETCODE(code);
ST(0) = sv_newmortal();
if (code == 0)
sv_setiv(ST(0), (flag != 0));
XSRETURN(1);
}
void
pts_PR_IsAMemberOf(server,uid,gid)
AFS::PTS server
int32 uid
int32 gid
PPCODE:
{
int32 code, flag;
code = ubik_Call(PR_IsAMemberOf, server, 0, uid, gid, &flag);
SETCODE(code);
ST(0) = sv_newmortal();
if (code == 0)
sv_setiv(ST(0), (flag != 0));
XSRETURN(1);
}
MODULE = AFS PACKAGE = AFS::KAS PREFIX = kas_
int32
kas__DESTROY(server)
AFS::KAS server
CODE:
{
int32 code;
code = ubik_ClientDestroy(server);
SETCODE(code);
RETVAL = (code == 0);
}
OUTPUT:
RETVAL
void
kas_KAM_GetEntry(server,user,inst)
AFS::KAS server
char * user
char * inst
PPCODE:
{
int32 code;
struct kaentryinfo entry;
code = ubik_Call(KAM_GetEntry, server, 0, user, inst, KAMAJORVERSION, &entry);
SETCODE(code);
if (code == 0) {
HV *stats = newHV();
if (parse_kaentryinfo(stats, &entry)) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newRV_noinc((SV *) stats)));
}
else {
hv_undef(stats);
}
}
}
void
kas_KAM_Debug(server,version)
AFS::KAS server
int32 version
PPCODE:
{
int32 code;
struct ka_debugInfo entry;
code = ubik_Call(KAM_Debug, server, 0, version, 0, &entry);
SETCODE(code);
if (code == 0) {
HV *stats = newHV();
if (parse_ka_debugInfo(stats, &entry)) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newRV_noinc((SV *) stats)));
}
else {
hv_undef(stats);
}
}
}
void
kas_KAM_GetStats(server,version)
AFS::KAS server
int32 version
PPCODE:
{
int32 code;
int32 admin_accounts;
struct kasstats kas;
struct kadstats kad;
code = ubik_Call(KAM_GetStats, server, 0, version, &admin_accounts, &kas, &kad);
SETCODE(code);
if (code == 0) {
HV *stats = newHV();
HV *dstats = newHV();
if (parse_ka_getstats(stats, dstats, &kas, &kad)) {
EXTEND(sp, 3);
PUSHs(sv_2mortal(newSViv(admin_accounts)));
PUSHs(sv_2mortal(newRV_noinc((SV *) stats)));
PUSHs(sv_2mortal(newRV_noinc((SV *) dstats)));
}
else {
hv_undef(stats);
hv_undef(dstats);
}
}
}
void
kas_KAM_GetRandomKey(server)
AFS::KAS server
PPCODE:
{
int32 code;
struct ktc_encryptionKey *key;
key = (struct ktc_encryptionKey *) safemalloc(sizeof(*key));
code = ubik_Call(KAM_GetRandomKey, server, 0, key);
SETCODE(code);
if (code == 0) {
SV *st = sv_newmortal();
sv_setref_pv(st, "AFS::KTC_EKEY", (void *) key);
PUSHs(st);
}
else {
safefree(key);
}
}
void
kas_KAM_CreateUser(server,user,inst,key)
AFS::KAS server
char * user
char * inst
AFS::KTC_EKEY key
PPCODE:
{
int32 code;
code = ubik_Call(KAM_CreateUser, server, 0, user, inst, *key);
SETCODE(code);
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSViv(code == 0)));
}
void
kas_KAM_SetPassword(server,user,inst,kvno,key)
AFS::KAS server
char * user
char * inst
int32 kvno
AFS::KTC_EKEY key
PPCODE:
{
int32 code;
code = ubik_Call(KAM_SetPassword, server, 0, user, inst, kvno, *key);
SETCODE(code);
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSViv(code == 0)));
}
else {
safefree(p);
}
XSRETURN(1);
}
void
afs_ktc_GetToken(server)
AFS::KTC_PRINCIPAL server
PPCODE:
{
int32 code;
struct ktc_principal *c;
struct ktc_token *t;
c = (struct ktc_principal *) safemalloc(sizeof(struct ktc_principal));
t = (struct ktc_token *) safemalloc(sizeof(struct ktc_token));
code = ktc_GetToken(server, t, sizeof(*t), c);
SETCODE(code);
if (code == 0) {
SV *st, *sc;
EXTEND(sp, 2);
st = sv_newmortal();
sv_setref_pv(st, "AFS::KTC_TOKEN", (void *) t);
PUSHs(st);
sc = sv_newmortal();
sv_setref_pv(sc, "AFS::KTC_PRINCIPAL", (void *) c);
PUSHs(sc);
}
else {
safefree(c);
safefree(t);
}
}
void
afs_ktc_FromString(s)
SV *s
PPCODE:
{
SV *sv;
STRLEN len;
char *str;
struct ktc_token *t;
str = SvPV(s, len);
EXTEND(sp, 1);
if (len == sizeof(struct ktc_token)) {
t = (struct ktc_token *) safemalloc(sizeof(struct ktc_token));
memcpy((void *) t, (void *) str, sizeof(struct ktc_token));
sv = sv_newmortal();
sv_setref_pv(sv, "AFS::KTC_TOKEN", (void *) t);
PUSHs(sv);
}
else {
PUSHs(&PL_sv_undef);
}
}
void
afs_ktc_SetToken(server,token,client,flags=0)
AFS::KTC_PRINCIPAL server
AFS::KTC_TOKEN token
AFS::KTC_PRINCIPAL client
int32 flags
PPCODE:
{
int32 code;
code = ktc_SetToken(server, token, client, flags);
SETCODE(code);
ST(0) = sv_2mortal(newSViv(code == 0));
XSRETURN(1);
}
void
afs_ktc_ForgetAllTokens()
PPCODE:
{
int32 code;
code = ktc_ForgetAllTokens();
SETCODE(code);
ST(0) = sv_2mortal(newSViv(code == 0));
XSRETURN(1);
}
void
afs_error_message(code)
int32 code
PPCODE:
{
ST(0) = sv_newmortal();
sv_setpv(ST(0), (char *) error_message(code));
XSRETURN(1);
}
/* this function is generated automatically by constant_gen */
/* You didn't think I would type in this crap did you? */
/* thats what perl is for :-) */
#if defined(AFS_3_4)
void
constant(name, arg=0)
char * name
int arg
PPCODE:
{
ST(0) = sv_newmortal();
errno = EINVAL;
switch (name[0]) {
case 'A':
switch (name[1]) {
case 'F':
switch (name[2]) {
case 'S':
if (strEQ(name,"AFSCONF_FAILURE")) sv_setiv(ST(0),AFSCONF_FAILURE);
else if (strEQ(name,"AFSCONF_FULL")) sv_setiv(ST(0),AFSCONF_FULL);
else if (strEQ(name,"AFSCONF_NOCELL")) sv_setiv(ST(0),AFSCONF_NOCELL);
else if (strEQ(name,"AFSCONF_NODB")) sv_setiv(ST(0),AFSCONF_NODB);
else if (strEQ(name,"AFSCONF_NOTFOUND")) sv_setiv(ST(0),AFSCONF_NOTFOUND);
else if (strEQ(name,"AFSCONF_SYNTAX")) sv_setiv(ST(0),AFSCONF_SYNTAX);
else if (strEQ(name,"AFSCONF_UNKNOWN")) sv_setiv(ST(0),AFSCONF_UNKNOWN);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[2]) {
case 'O':
if (strEQ(name,"ANONYMOUSID")) sv_setiv(ST(0),ANONYMOUSID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'Y':
if (strEQ(name,"ANYUSERID")) sv_setiv(ST(0),ANYUSERID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
switch (name[2]) {
case 'T':
if (strEQ(name,"AUTHUSERID")) sv_setiv(ST(0),AUTHUSERID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
switch (name[1]) {
case 'O':
switch (name[2]) {
case 'S':
if (strEQ(name,"COSIZE")) sv_setiv(ST(0),COSIZE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'R':
switch (name[2]) {
case 'O':
if (strEQ(name,"CROSS_CELL")) sv_setiv(ST(0),CROSS_CELL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'K':
switch (name[1]) {
case 'A':
switch (name[2]) {
case 'A':
if (strEQ(name,"KAANSWERTOOLONG")) sv_setiv(ST(0),KAANSWERTOOLONG);
else if (strEQ(name,"KAASSOCUSER")) sv_setiv(ST(0),KAASSOCUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'B':
if (strEQ(name,"KABADARGUMENT")) sv_setiv(ST(0),KABADARGUMENT);
else if (strEQ(name,"KABADCMD")) sv_setiv(ST(0),KABADCMD);
else if (strEQ(name,"KABADCPW")) sv_setiv(ST(0),KABADCPW);
else if (strEQ(name,"KABADCREATE")) sv_setiv(ST(0),KABADCREATE);
else if (strEQ(name,"KABADINDEX")) sv_setiv(ST(0),KABADINDEX);
else if (strEQ(name,"KABADKEY")) sv_setiv(ST(0),KABADKEY);
else if (strEQ(name,"KABADNAME")) sv_setiv(ST(0),KABADNAME);
else if (strEQ(name,"KABADPROTOCOL")) sv_setiv(ST(0),KABADPROTOCOL);
else if (strEQ(name,"KABADREQUEST")) sv_setiv(ST(0),KABADREQUEST);
else if (strEQ(name,"KABADSERVER")) sv_setiv(ST(0),KABADSERVER);
else if (strEQ(name,"KABADTICKET")) sv_setiv(ST(0),KABADTICKET);
else if (strEQ(name,"KABADUSER")) sv_setiv(ST(0),KABADUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
if (strEQ(name,"KACLOCKSKEW")) sv_setiv(ST(0),KACLOCKSKEW);
else if (strEQ(name,"KACREATEFAIL")) sv_setiv(ST(0),KACREATEFAIL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
if (strEQ(name,"KADATABASEINCONSISTENT")) sv_setiv(ST(0),KADATABASEINCONSISTENT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
if (strEQ(name,"KAEMPTY")) sv_setiv(ST(0),KAEMPTY);
else if (strEQ(name,"KAEXIST")) sv_setiv(ST(0),KAEXIST);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'F':
if (strEQ(name,"KAFADMIN")) sv_setiv(ST(0),KAFADMIN);
else if (strEQ(name,"KAFASSOC")) sv_setiv(ST(0),KAFASSOC);
else if (strEQ(name,"KAFASSOCROOT")) sv_setiv(ST(0),KAFASSOCROOT);
else if (strEQ(name,"KAFFREE")) sv_setiv(ST(0),KAFFREE);
else if (strEQ(name,"KAFNEWASSOC")) sv_setiv(ST(0),KAFNEWASSOC);
else if (strEQ(name,"KAFNOCPW")) sv_setiv(ST(0),KAFNOCPW);
else if (strEQ(name,"KAFNORMAL")) sv_setiv(ST(0),KAFNORMAL);
else if (strEQ(name,"KAFNOSEAL")) sv_setiv(ST(0),KAFNOSEAL);
else if (strEQ(name,"KAFNOTGS")) sv_setiv(ST(0),KAFNOTGS);
else if (strEQ(name,"KAFOLDKEYS")) sv_setiv(ST(0),KAFOLDKEYS);
else if (strEQ(name,"KAFSPECIAL")) sv_setiv(ST(0),KAFSPECIAL);
else if (strEQ(name,"KAF_SETTABLE_FLAGS")) sv_setiv(ST(0),KAF_SETTABLE_FLAGS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
if (strEQ(name,"KAINTERNALERROR")) sv_setiv(ST(0),KAINTERNALERROR);
else if (strEQ(name,"KAIO")) sv_setiv(ST(0),KAIO);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'K':
if (strEQ(name,"KAKEYCACHEINVALID")) sv_setiv(ST(0),KAKEYCACHEINVALID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'L':
if (strEQ(name,"KALOCKED")) sv_setiv(ST(0),KALOCKED);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'M':
if (strEQ(name,"KAMAJORVERSION")) sv_setiv(ST(0),KAMAJORVERSION);
else if (strEQ(name,"KAMINORVERSION")) sv_setiv(ST(0),KAMINORVERSION);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
if (strEQ(name,"KANOAUTH")) sv_setiv(ST(0),KANOAUTH);
else if (strEQ(name,"KANOCELL")) sv_setiv(ST(0),KANOCELL);
else if (strEQ(name,"KANOCELLS")) sv_setiv(ST(0),KANOCELLS);
else if (strEQ(name,"KANOENT")) sv_setiv(ST(0),KANOENT);
else if (strEQ(name,"KANOKEYS")) sv_setiv(ST(0),KANOKEYS);
else if (strEQ(name,"KANORECURSE")) sv_setiv(ST(0),KANORECURSE);
else if (strEQ(name,"KANOTICKET")) sv_setiv(ST(0),KANOTICKET);
else if (strEQ(name,"KANOTSPECIAL")) sv_setiv(ST(0),KANOTSPECIAL);
else if (strEQ(name,"KANULLPASSWORD")) sv_setiv(ST(0),KANULLPASSWORD);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"KAOLDINTERFACE")) sv_setiv(ST(0),KAOLDINTERFACE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
if (strEQ(name,"KAPWEXPIRED")) sv_setiv(ST(0),KAPWEXPIRED);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'R':
if (strEQ(name,"KAREADPW")) sv_setiv(ST(0),KAREADPW);
else if (strEQ(name,"KAREUSED")) sv_setiv(ST(0),KAREUSED);
else if (strEQ(name,"KARXFAIL")) sv_setiv(ST(0),KARXFAIL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
if (strEQ(name,"KATOOMANYKEYS")) sv_setiv(ST(0),KATOOMANYKEYS);
else if (strEQ(name,"KATOOMANYUBIKS")) sv_setiv(ST(0),KATOOMANYUBIKS);
else if (strEQ(name,"KATOOSOON")) sv_setiv(ST(0),KATOOSOON);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
if (strEQ(name,"KAUBIKCALL")) sv_setiv(ST(0),KAUBIKCALL);
else if (strEQ(name,"KAUBIKINIT")) sv_setiv(ST(0),KAUBIKINIT);
else if (strEQ(name,"KAUNKNOWNKEY")) sv_setiv(ST(0),KAUNKNOWNKEY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"KA_ADMIN_INST")) sv_setpv(ST(0),KA_ADMIN_INST);
else if (strEQ(name,"KA_ADMIN_NAME")) sv_setpv(ST(0),KA_ADMIN_NAME);
else if (strEQ(name,"KA_AUTHENTICATION_SERVICE")) sv_setiv(ST(0),KA_AUTHENTICATION_SERVICE);
else if (strEQ(name,"KA_ISLOCKED")) sv_setiv(ST(0),KA_ISLOCKED);
else if (strEQ(name,"KA_MAINTENANCE_SERVICE")) sv_setiv(ST(0),KA_MAINTENANCE_SERVICE);
else if (strEQ(name,"KA_NOREUSEPW")) sv_setiv(ST(0),KA_NOREUSEPW);
else if (strEQ(name,"KA_REUSEPW")) sv_setiv(ST(0),KA_REUSEPW);
else if (strEQ(name,"KA_TGS_NAME")) sv_setpv(ST(0),KA_TGS_NAME);
else if (strEQ(name,"KA_TICKET_GRANTING_SERVICE")) sv_setiv(ST(0),KA_TICKET_GRANTING_SERVICE);
else if (strEQ(name,"KA_USERAUTH_DOSETPAG")) sv_setiv(ST(0),KA_USERAUTH_DOSETPAG);
else if (strEQ(name,"KA_USERAUTH_DOSETPAG2")) sv_setiv(ST(0),KA_USERAUTH_DOSETPAG2);
else if (strEQ(name,"KA_USERAUTH_VERSION")) sv_setiv(ST(0),KA_USERAUTH_VERSION);
else if (strEQ(name,"KA_USERAUTH_VERSION_MASK")) sv_setiv(ST(0),KA_USERAUTH_VERSION_MASK);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
switch (name[2]) {
case 'C':
if (strEQ(name,"KTC_TIME_UNCERTAINTY")) sv_setiv(ST(0),KTC_TIME_UNCERTAINTY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'M':
switch (name[1]) {
case 'A':
switch (name[2]) {
case 'X':
if (strEQ(name,"MAXKAKVNO")) sv_setiv(ST(0),MAXKAKVNO);
else if (strEQ(name,"MAXKTCNAMELEN")) sv_setiv(ST(0),MAXKTCNAMELEN);
else if (strEQ(name,"MAXKTCREALMLEN")) sv_setiv(ST(0),MAXKTCREALMLEN);
else if (strEQ(name,"MAXKTCTICKETLEN")) sv_setiv(ST(0),MAXKTCTICKETLEN);
else if (strEQ(name,"MAXKTCTICKETLIFETIME")) sv_setiv(ST(0),MAXKTCTICKETLIFETIME);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
switch (name[2]) {
case 'N':
if (strEQ(name,"MINKTCTICKETLEN")) sv_setiv(ST(0),MINKTCTICKETLEN);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[1]) {
case 'E':
switch (name[2]) {
case 'V':
if (strEQ(name,"NEVERDATE")) sv_setiv(ST(0),NEVERDATE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
switch (name[1]) {
case 'R':
switch (name[2]) {
case 'A':
if (strEQ(name,"PRACCESS")) sv_setiv(ST(0),PRACCESS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'B':
if (strEQ(name,"PRBADARG")) sv_setiv(ST(0),PRBADARG);
else if (strEQ(name,"PRBADID")) sv_setiv(ST(0),PRBADID);
else if (strEQ(name,"PRBADNAM")) sv_setiv(ST(0),PRBADNAM);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
if (strEQ(name,"PRCELL")) sv_setiv(ST(0),PRCELL);
else if (strEQ(name,"PRCONT")) sv_setiv(ST(0),PRCONT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
if (strEQ(name,"PRDBADDR")) sv_setiv(ST(0),PRDBADDR);
else if (strEQ(name,"PRDBBAD")) sv_setiv(ST(0),PRDBBAD);
else if (strEQ(name,"PRDBFAIL")) sv_setiv(ST(0),PRDBFAIL);
else if (strEQ(name,"PRDBVERSION")) sv_setiv(ST(0),PRDBVERSION);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
if (strEQ(name,"PREXIST")) sv_setiv(ST(0),PREXIST);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'F':
if (strEQ(name,"PRFOREIGN")) sv_setiv(ST(0),PRFOREIGN);
else if (strEQ(name,"PRFREE")) sv_setiv(ST(0),PRFREE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'G':
if (strEQ(name,"PRGROUPEMPTY")) sv_setiv(ST(0),PRGROUPEMPTY);
else if (strEQ(name,"PRGRP")) sv_setiv(ST(0),PRGRP);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
if (strEQ(name,"PRIDEXIST")) sv_setiv(ST(0),PRIDEXIST);
else if (strEQ(name,"PRINCONSISTENT")) sv_setiv(ST(0),PRINCONSISTENT);
else if (strEQ(name,"PRINST")) sv_setiv(ST(0),PRINST);
else if (strEQ(name,"PRIVATE_SHIFT")) sv_setiv(ST(0),PRIVATE_SHIFT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
if (strEQ(name,"PRNOENT")) sv_setiv(ST(0),PRNOENT);
else if (strEQ(name,"PRNOIDS")) sv_setiv(ST(0),PRNOIDS);
else if (strEQ(name,"PRNOMORE")) sv_setiv(ST(0),PRNOMORE);
else if (strEQ(name,"PRNOTGROUP")) sv_setiv(ST(0),PRNOTGROUP);
else if (strEQ(name,"PRNOTUSER")) sv_setiv(ST(0),PRNOTUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
if (strEQ(name,"PRPERM")) sv_setiv(ST(0),PRPERM);
else if (strEQ(name,"PRP_ADD_ANY")) sv_setiv(ST(0),PRP_ADD_ANY);
else if (strEQ(name,"PRP_ADD_MEM")) sv_setiv(ST(0),PRP_ADD_MEM);
else if (strEQ(name,"PRP_GROUP_DEFAULT")) sv_setiv(ST(0),PRP_GROUP_DEFAULT);
else if (strEQ(name,"PRP_MEMBER_ANY")) sv_setiv(ST(0),PRP_MEMBER_ANY);
else if (strEQ(name,"PRP_MEMBER_MEM")) sv_setiv(ST(0),PRP_MEMBER_MEM);
else if (strEQ(name,"PRP_OWNED_ANY")) sv_setiv(ST(0),PRP_OWNED_ANY);
else if (strEQ(name,"PRP_REMOVE_MEM")) sv_setiv(ST(0),PRP_REMOVE_MEM);
else if (strEQ(name,"PRP_STATUS_ANY")) sv_setiv(ST(0),PRP_STATUS_ANY);
else if (strEQ(name,"PRP_STATUS_MEM")) sv_setiv(ST(0),PRP_STATUS_MEM);
else if (strEQ(name,"PRP_USER_DEFAULT")) sv_setiv(ST(0),PRP_USER_DEFAULT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'Q':
if (strEQ(name,"PRQUOTA")) sv_setiv(ST(0),PRQUOTA);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
if (strEQ(name,"PRSFS_ADMINISTER")) sv_setiv(ST(0),PRSFS_ADMINISTER);
else if (strEQ(name,"PRSFS_DELETE")) sv_setiv(ST(0),PRSFS_DELETE);
else if (strEQ(name,"PRSFS_INSERT")) sv_setiv(ST(0),PRSFS_INSERT);
else if (strEQ(name,"PRSFS_LOCK")) sv_setiv(ST(0),PRSFS_LOCK);
else if (strEQ(name,"PRSFS_LOOKUP")) sv_setiv(ST(0),PRSFS_LOOKUP);
else if (strEQ(name,"PRSFS_READ")) sv_setiv(ST(0),PRSFS_READ);
else if (strEQ(name,"PRSFS_USR0")) sv_setiv(ST(0),PRSFS_USR0);
else if (strEQ(name,"PRSFS_USR1")) sv_setiv(ST(0),PRSFS_USR1);
else if (strEQ(name,"PRSFS_USR2")) sv_setiv(ST(0),PRSFS_USR2);
else if (strEQ(name,"PRSFS_USR3")) sv_setiv(ST(0),PRSFS_USR3);
else if (strEQ(name,"PRSFS_USR4")) sv_setiv(ST(0),PRSFS_USR4);
else if (strEQ(name,"PRSFS_USR5")) sv_setiv(ST(0),PRSFS_USR5);
else if (strEQ(name,"PRSFS_USR6")) sv_setiv(ST(0),PRSFS_USR6);
else if (strEQ(name,"PRSFS_USR7")) sv_setiv(ST(0),PRSFS_USR7);
else if (strEQ(name,"PRSFS_WRITE")) sv_setiv(ST(0),PRSFS_WRITE);
else if (strEQ(name,"PRSIZE")) sv_setiv(ST(0),PRSIZE);
else if (strEQ(name,"PRSUCCESS")) sv_setiv(ST(0),PRSUCCESS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
if (strEQ(name,"PRTOOMANY")) sv_setiv(ST(0),PRTOOMANY);
else if (strEQ(name,"PRTYPE")) sv_setiv(ST(0),PRTYPE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
if (strEQ(name,"PRUSER")) sv_setiv(ST(0),PRUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"PR_HIGHEST_OPCODE")) sv_setiv(ST(0),PR_HIGHEST_OPCODE);
else if (strEQ(name,"PR_LOWEST_OPCODE")) sv_setiv(ST(0),PR_LOWEST_OPCODE);
else if (strEQ(name,"PR_MAXGROUPS")) sv_setiv(ST(0),PR_MAXGROUPS);
else if (strEQ(name,"PR_MAXLIST")) sv_setiv(ST(0),PR_MAXLIST);
else if (strEQ(name,"PR_MAXNAMELEN")) sv_setiv(ST(0),PR_MAXNAMELEN);
else if (strEQ(name,"PR_NUMBER_OPCODES")) sv_setiv(ST(0),PR_NUMBER_OPCODES);
else if (strEQ(name,"PR_REMEMBER_TIMES")) sv_setiv(ST(0),PR_REMEMBER_TIMES);
else if (strEQ(name,"PR_SF_ALLBITS")) sv_setiv(ST(0),PR_SF_ALLBITS);
else if (strEQ(name,"PR_SF_NGROUPS")) sv_setiv(ST(0),PR_SF_NGROUPS);
else if (strEQ(name,"PR_SF_NUSERS")) sv_setiv(ST(0),PR_SF_NUSERS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'R':
switch (name[1]) {
case 'X':
switch (name[2]) {
case 'K':
if (strEQ(name,"RXKADBADKEY")) sv_setiv(ST(0),RXKADBADKEY);
else if (strEQ(name,"RXKADBADTICKET")) sv_setiv(ST(0),RXKADBADTICKET);
else if (strEQ(name,"RXKADDATALEN")) sv_setiv(ST(0),RXKADDATALEN);
else if (strEQ(name,"RXKADEXPIRED")) sv_setiv(ST(0),RXKADEXPIRED);
else if (strEQ(name,"RXKADILLEGALLEVEL")) sv_setiv(ST(0),RXKADILLEGALLEVEL);
else if (strEQ(name,"RXKADINCONSISTENCY")) sv_setiv(ST(0),RXKADINCONSISTENCY);
else if (strEQ(name,"RXKADLEVELFAIL")) sv_setiv(ST(0),RXKADLEVELFAIL);
else if (strEQ(name,"RXKADNOAUTH")) sv_setiv(ST(0),RXKADNOAUTH);
else if (strEQ(name,"RXKADOUTOFSEQUENCE")) sv_setiv(ST(0),RXKADOUTOFSEQUENCE);
else if (strEQ(name,"RXKADPACKETSHORT")) sv_setiv(ST(0),RXKADPACKETSHORT);
else if (strEQ(name,"RXKADSEALEDINCON")) sv_setiv(ST(0),RXKADSEALEDINCON);
else if (strEQ(name,"RXKADTICKETLEN")) sv_setiv(ST(0),RXKADTICKETLEN);
else if (strEQ(name,"RXKADUNKNOWNKEY")) sv_setiv(ST(0),RXKADUNKNOWNKEY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"RX_SCINDEX_KAD")) sv_setiv(ST(0),RX_SCINDEX_KAD);
else if (strEQ(name,"RX_SCINDEX_NULL")) sv_setiv(ST(0),RX_SCINDEX_NULL);
else if (strEQ(name,"RX_SCINDEX_VAB")) sv_setiv(ST(0),RX_SCINDEX_VAB);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
switch (name[1]) {
case 'Y':
switch (name[2]) {
case 'S':
if (strEQ(name,"SYSADMINID")) sv_setiv(ST(0),SYSADMINID);
else if (strEQ(name,"SYSBACKUPID")) sv_setiv(ST(0),SYSBACKUPID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
switch (name[1]) {
case 'B':
switch (name[2]) {
case 'A':
if (strEQ(name,"UBADHOST")) sv_setiv(ST(0),UBADHOST);
else if (strEQ(name,"UBADLOCK")) sv_setiv(ST(0),UBADLOCK);
else if (strEQ(name,"UBADLOG")) sv_setiv(ST(0),UBADLOG);
else if (strEQ(name,"UBADTYPE")) sv_setiv(ST(0),UBADTYPE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
switch (name[2]) {
case 'O':
if (strEQ(name,"UDONE")) sv_setiv(ST(0),UDONE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
switch (name[2]) {
case 'O':
if (strEQ(name,"UEOF")) sv_setiv(ST(0),UEOF);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
switch (name[2]) {
case 'N':
if (strEQ(name,"UINTERNAL")) sv_setiv(ST(0),UINTERNAL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"UIOERROR")) sv_setiv(ST(0),UIOERROR);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'L':
switch (name[2]) {
case 'O':
if (strEQ(name,"ULOGIO")) sv_setiv(ST(0),ULOGIO);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[2]) {
case 'H':
if (strEQ(name,"UNHOSTS")) sv_setiv(ST(0),UNHOSTS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"UNOENT")) sv_setiv(ST(0),UNOENT);
else if (strEQ(name,"UNOQUORUM")) sv_setiv(ST(0),UNOQUORUM);
else if (strEQ(name,"UNOSERVERS")) sv_setiv(ST(0),UNOSERVERS);
else if (strEQ(name,"UNOTSYNC")) sv_setiv(ST(0),UNOTSYNC);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
switch (name[2]) {
case 'Y':
if (strEQ(name,"USYNC")) sv_setiv(ST(0),USYNC);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
switch (name[2]) {
case 'W':
if (strEQ(name,"UTWOENDS")) sv_setiv(ST(0),UTWOENDS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'V':
switch (name[1]) {
case 'I':
switch (name[2]) {
case 'O':
if (strEQ(name,"VIOCACCESS")) sv_setiv(ST(0),VIOCACCESS);
else if (strEQ(name,"VIOCCKBACK")) sv_setiv(ST(0),VIOCCKBACK);
else if (strEQ(name,"VIOCCKCONN")) sv_setiv(ST(0),VIOCCKCONN);
else if (strEQ(name,"VIOCCKSERV")) sv_setiv(ST(0),VIOCCKSERV);
else if (strEQ(name,"VIOCDISGROUP")) sv_setiv(ST(0),VIOCDISGROUP);
else if (strEQ(name,"VIOCENGROUP")) sv_setiv(ST(0),VIOCENGROUP);
else if (strEQ(name,"VIOCFLUSH")) sv_setiv(ST(0),VIOCFLUSH);
else if (strEQ(name,"VIOCFLUSHCB")) sv_setiv(ST(0),VIOCFLUSHCB);
else if (strEQ(name,"VIOCGETAL")) sv_setiv(ST(0),VIOCGETAL);
else if (strEQ(name,"VIOCGETCACHEPARMS")) sv_setiv(ST(0),VIOCGETCACHEPARMS);
else if (strEQ(name,"VIOCGETCELL")) sv_setiv(ST(0),VIOCGETCELL);
else if (strEQ(name,"VIOCGETFID")) sv_setiv(ST(0),VIOCGETFID);
else if (strEQ(name,"VIOCGETTIME")) sv_setiv(ST(0),VIOCGETTIME);
else if (strEQ(name,"VIOCGETTOK")) sv_setiv(ST(0),VIOCGETTOK);
else if (strEQ(name,"VIOCGETVCXSTATUS")) sv_setiv(ST(0),VIOCGETVCXSTATUS);
else if (strEQ(name,"VIOCGETVOLSTAT")) sv_setiv(ST(0),VIOCGETVOLSTAT);
else if (strEQ(name,"VIOCLISTGROUPS")) sv_setiv(ST(0),VIOCLISTGROUPS);
else if (strEQ(name,"VIOCNEWCELL")) sv_setiv(ST(0),VIOCNEWCELL);
else if (strEQ(name,"VIOCNOP")) sv_setiv(ST(0),VIOCNOP);
else if (strEQ(name,"VIOCPREFETCH")) sv_setiv(ST(0),VIOCPREFETCH);
else if (strEQ(name,"VIOCSETAL")) sv_setiv(ST(0),VIOCSETAL);
else if (strEQ(name,"VIOCSETCACHESIZE")) sv_setiv(ST(0),VIOCSETCACHESIZE);
else if (strEQ(name,"VIOCSETTOK")) sv_setiv(ST(0),VIOCSETTOK);
else if (strEQ(name,"VIOCSETVOLSTAT")) sv_setiv(ST(0),VIOCSETVOLSTAT);
else if (strEQ(name,"VIOCSTAT")) sv_setiv(ST(0),VIOCSTAT);
else if (strEQ(name,"VIOCUNLOG")) sv_setiv(ST(0),VIOCUNLOG);
else if (strEQ(name,"VIOCUNPAG")) sv_setiv(ST(0),VIOCUNPAG);
else if (strEQ(name,"VIOCWAITFOREVER")) sv_setiv(ST(0),VIOCWAITFOREVER);
else if (strEQ(name,"VIOCWHEREIS")) sv_setiv(ST(0),VIOCWHEREIS);
else if (strEQ(name,"VIOC_AFS_DELETE_MT_PT")) sv_setiv(ST(0),VIOC_AFS_DELETE_MT_PT);
else if (strEQ(name,"VIOC_AFS_MARINER_HOST")) sv_setiv(ST(0),VIOC_AFS_MARINER_HOST);
else if (strEQ(name,"VIOC_AFS_STAT_MT_PT")) sv_setiv(ST(0),VIOC_AFS_STAT_MT_PT);
else if (strEQ(name,"VIOC_AFS_SYSNAME")) sv_setiv(ST(0),VIOC_AFS_SYSNAME);
else if (strEQ(name,"VIOC_EXPORTAFS")) sv_setiv(ST(0),VIOC_EXPORTAFS);
else if (strEQ(name,"VIOC_FILE_CELL_NAME")) sv_setiv(ST(0),VIOC_FILE_CELL_NAME);
else if (strEQ(name,"VIOC_FLUSHVOLUME")) sv_setiv(ST(0),VIOC_FLUSHVOLUME);
else if (strEQ(name,"VIOC_GAG")) sv_setiv(ST(0),VIOC_GAG);
else if (strEQ(name,"VIOC_GETCELLSTATUS")) sv_setiv(ST(0),VIOC_GETCELLSTATUS);
else if (strEQ(name,"VIOC_GETSPREFS")) sv_setiv(ST(0),VIOC_GETSPREFS);
else if (strEQ(name,"VIOC_GET_PRIMARY_CELL")) sv_setiv(ST(0),VIOC_GET_PRIMARY_CELL);
else if (strEQ(name,"VIOC_GET_WS_CELL")) sv_setiv(ST(0),VIOC_GET_WS_CELL);
else if (strEQ(name,"VIOC_SETCELLSTATUS")) sv_setiv(ST(0),VIOC_SETCELLSTATUS);
else if (strEQ(name,"VIOC_SETSPREFS")) sv_setiv(ST(0),VIOC_SETSPREFS);
else if (strEQ(name,"VIOC_TWIDDLE")) sv_setiv(ST(0),VIOC_TWIDDLE);
else if (strEQ(name,"VIOC_VENUSLOG")) sv_setiv(ST(0),VIOC_VENUSLOG);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
errno = 0;
XSRETURN(1);
return;
}
#else
void
constant(name, arg=0)
char * name
int arg
PPCODE:
{
ST(0) = sv_newmortal();
errno = EINVAL;
switch (name[0]) {
case 'A':
switch (name[1]) {
case 'F':
switch (name[2]) {
case 'S':
if (strEQ(name,"AFSCONF_FAILURE")) sv_setiv(ST(0),AFSCONF_FAILURE);
else if (strEQ(name,"AFSCONF_FULL")) sv_setiv(ST(0),AFSCONF_FULL);
else if (strEQ(name,"AFSCONF_NOCELL")) sv_setiv(ST(0),AFSCONF_NOCELL);
else if (strEQ(name,"AFSCONF_NODB")) sv_setiv(ST(0),AFSCONF_NODB);
else if (strEQ(name,"AFSCONF_NOTFOUND")) sv_setiv(ST(0),AFSCONF_NOTFOUND);
else if (strEQ(name,"AFSCONF_SYNTAX")) sv_setiv(ST(0),AFSCONF_SYNTAX);
else if (strEQ(name,"AFSCONF_UNKNOWN")) sv_setiv(ST(0),AFSCONF_UNKNOWN);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[2]) {
case 'O':
if (strEQ(name,"ANONYMOUSID")) sv_setiv(ST(0),ANONYMOUSID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'Y':
if (strEQ(name,"ANYUSERID")) sv_setiv(ST(0),ANYUSERID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
switch (name[2]) {
case 'T':
if (strEQ(name,"AUTHUSERID")) sv_setiv(ST(0),AUTHUSERID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
switch (name[1]) {
case 'O':
switch (name[2]) {
case 'S':
if (strEQ(name,"COSIZE")) sv_setiv(ST(0),COSIZE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'K':
switch (name[1]) {
case 'A':
switch (name[2]) {
case 'A':
if (strEQ(name,"KAANSWERTOOLONG")) sv_setiv(ST(0),KAANSWERTOOLONG);
else if (strEQ(name,"KAASSOCUSER")) sv_setiv(ST(0),KAASSOCUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'B':
if (strEQ(name,"KABADARGUMENT")) sv_setiv(ST(0),KABADARGUMENT);
else if (strEQ(name,"KABADCMD")) sv_setiv(ST(0),KABADCMD);
else if (strEQ(name,"KABADCPW")) sv_setiv(ST(0),KABADCPW);
else if (strEQ(name,"KABADCREATE")) sv_setiv(ST(0),KABADCREATE);
else if (strEQ(name,"KABADINDEX")) sv_setiv(ST(0),KABADINDEX);
else if (strEQ(name,"KABADKEY")) sv_setiv(ST(0),KABADKEY);
else if (strEQ(name,"KABADNAME")) sv_setiv(ST(0),KABADNAME);
else if (strEQ(name,"KABADPROTOCOL")) sv_setiv(ST(0),KABADPROTOCOL);
else if (strEQ(name,"KABADREQUEST")) sv_setiv(ST(0),KABADREQUEST);
else if (strEQ(name,"KABADSERVER")) sv_setiv(ST(0),KABADSERVER);
else if (strEQ(name,"KABADTICKET")) sv_setiv(ST(0),KABADTICKET);
else if (strEQ(name,"KABADUSER")) sv_setiv(ST(0),KABADUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
if (strEQ(name,"KACLOCKSKEW")) sv_setiv(ST(0),KACLOCKSKEW);
else if (strEQ(name,"KACREATEFAIL")) sv_setiv(ST(0),KACREATEFAIL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
if (strEQ(name,"KADATABASEINCONSISTENT")) sv_setiv(ST(0),KADATABASEINCONSISTENT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
if (strEQ(name,"KAEMPTY")) sv_setiv(ST(0),KAEMPTY);
else if (strEQ(name,"KAEXIST")) sv_setiv(ST(0),KAEXIST);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'F':
if (strEQ(name,"KAFADMIN")) sv_setiv(ST(0),KAFADMIN);
else if (strEQ(name,"KAFASSOC")) sv_setiv(ST(0),KAFASSOC);
else if (strEQ(name,"KAFASSOCROOT")) sv_setiv(ST(0),KAFASSOCROOT);
else if (strEQ(name,"KAFFREE")) sv_setiv(ST(0),KAFFREE);
else if (strEQ(name,"KAFNEWASSOC")) sv_setiv(ST(0),KAFNEWASSOC);
else if (strEQ(name,"KAFNOCPW")) sv_setiv(ST(0),KAFNOCPW);
else if (strEQ(name,"KAFNORMAL")) sv_setiv(ST(0),KAFNORMAL);
else if (strEQ(name,"KAFNOSEAL")) sv_setiv(ST(0),KAFNOSEAL);
else if (strEQ(name,"KAFNOTGS")) sv_setiv(ST(0),KAFNOTGS);
else if (strEQ(name,"KAFOLDKEYS")) sv_setiv(ST(0),KAFOLDKEYS);
else if (strEQ(name,"KAFSPECIAL")) sv_setiv(ST(0),KAFSPECIAL);
else if (strEQ(name,"KAF_SETTABLE_FLAGS")) sv_setiv(ST(0),KAF_SETTABLE_FLAGS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
if (strEQ(name,"KAINTERNALERROR")) sv_setiv(ST(0),KAINTERNALERROR);
else if (strEQ(name,"KAIO")) sv_setiv(ST(0),KAIO);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'K':
if (strEQ(name,"KAKEYCACHEINVALID")) sv_setiv(ST(0),KAKEYCACHEINVALID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'L':
if (strEQ(name,"KALOCKED")) sv_setiv(ST(0),KALOCKED);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'M':
if (strEQ(name,"KAMAJORVERSION")) sv_setiv(ST(0),KAMAJORVERSION);
else if (strEQ(name,"KAMINORVERSION")) sv_setiv(ST(0),KAMINORVERSION);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
if (strEQ(name,"KANOAUTH")) sv_setiv(ST(0),KANOAUTH);
else if (strEQ(name,"KANOCELL")) sv_setiv(ST(0),KANOCELL);
else if (strEQ(name,"KANOCELLS")) sv_setiv(ST(0),KANOCELLS);
else if (strEQ(name,"KANOENT")) sv_setiv(ST(0),KANOENT);
else if (strEQ(name,"KANOKEYS")) sv_setiv(ST(0),KANOKEYS);
else if (strEQ(name,"KANORECURSE")) sv_setiv(ST(0),KANORECURSE);
else if (strEQ(name,"KANOTICKET")) sv_setiv(ST(0),KANOTICKET);
else if (strEQ(name,"KANOTSPECIAL")) sv_setiv(ST(0),KANOTSPECIAL);
else if (strEQ(name,"KANULLPASSWORD")) sv_setiv(ST(0),KANULLPASSWORD);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"KAOLDINTERFACE")) sv_setiv(ST(0),KAOLDINTERFACE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
if (strEQ(name,"KAPWEXPIRED")) sv_setiv(ST(0),KAPWEXPIRED);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'R':
if (strEQ(name,"KAREADPW")) sv_setiv(ST(0),KAREADPW);
else if (strEQ(name,"KAREUSED")) sv_setiv(ST(0),KAREUSED);
else if (strEQ(name,"KARXFAIL")) sv_setiv(ST(0),KARXFAIL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
if (strEQ(name,"KATOOMANYKEYS")) sv_setiv(ST(0),KATOOMANYKEYS);
else if (strEQ(name,"KATOOMANYUBIKS")) sv_setiv(ST(0),KATOOMANYUBIKS);
else if (strEQ(name,"KATOOSOON")) sv_setiv(ST(0),KATOOSOON);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
if (strEQ(name,"KAUBIKCALL")) sv_setiv(ST(0),KAUBIKCALL);
else if (strEQ(name,"KAUBIKINIT")) sv_setiv(ST(0),KAUBIKINIT);
else if (strEQ(name,"KAUNKNOWNKEY")) sv_setiv(ST(0),KAUNKNOWNKEY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"KA_ADMIN_INST")) sv_setpv(ST(0),KA_ADMIN_INST);
else if (strEQ(name,"KA_ADMIN_NAME")) sv_setpv(ST(0),KA_ADMIN_NAME);
else if (strEQ(name,"KA_AUTHENTICATION_SERVICE")) sv_setiv(ST(0),KA_AUTHENTICATION_SERVICE);
else if (strEQ(name,"KA_ISLOCKED")) sv_setiv(ST(0),KA_ISLOCKED);
else if (strEQ(name,"KA_MAINTENANCE_SERVICE")) sv_setiv(ST(0),KA_MAINTENANCE_SERVICE);
else if (strEQ(name,"KA_NOREUSEPW")) sv_setiv(ST(0),KA_NOREUSEPW);
else if (strEQ(name,"KA_REUSEPW")) sv_setiv(ST(0),KA_REUSEPW);
else if (strEQ(name,"KA_TGS_NAME")) sv_setpv(ST(0),KA_TGS_NAME);
else if (strEQ(name,"KA_TICKET_GRANTING_SERVICE")) sv_setiv(ST(0),KA_TICKET_GRANTING_SERVICE);
else if (strEQ(name,"KA_USERAUTH_DOSETPAG")) sv_setiv(ST(0),KA_USERAUTH_DOSETPAG);
else if (strEQ(name,"KA_USERAUTH_DOSETPAG2")) sv_setiv(ST(0),KA_USERAUTH_DOSETPAG2);
else if (strEQ(name,"KA_USERAUTH_VERSION")) sv_setiv(ST(0),KA_USERAUTH_VERSION);
else if (strEQ(name,"KA_USERAUTH_VERSION_MASK")) sv_setiv(ST(0),KA_USERAUTH_VERSION_MASK);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
switch (name[2]) {
case 'C':
if (strEQ(name,"KTC_TIME_UNCERTAINTY")) sv_setiv(ST(0),KTC_TIME_UNCERTAINTY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'M':
switch (name[1]) {
case 'A':
switch (name[2]) {
case 'X':
if (strEQ(name,"MAXKAKVNO")) sv_setiv(ST(0),MAXKAKVNO);
else if (strEQ(name,"MAXKTCNAMELEN")) sv_setiv(ST(0),MAXKTCNAMELEN);
else if (strEQ(name,"MAXKTCREALMLEN")) sv_setiv(ST(0),MAXKTCREALMLEN);
else if (strEQ(name,"MAXKTCTICKETLEN")) sv_setiv(ST(0),MAXKTCTICKETLEN);
else if (strEQ(name,"MAXKTCTICKETLIFETIME")) sv_setiv(ST(0),MAXKTCTICKETLIFETIME);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
switch (name[2]) {
case 'N':
if (strEQ(name,"MINKTCTICKETLEN")) sv_setiv(ST(0),MINKTCTICKETLEN);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[1]) {
case 'E':
switch (name[2]) {
case 'V':
if (strEQ(name,"NEVERDATE")) sv_setiv(ST(0),NEVERDATE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
switch (name[1]) {
case 'R':
switch (name[2]) {
case 'A':
if (strEQ(name,"PRACCESS")) sv_setiv(ST(0),PRACCESS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'B':
if (strEQ(name,"PRBADARG")) sv_setiv(ST(0),PRBADARG);
else if (strEQ(name,"PRBADID")) sv_setiv(ST(0),PRBADID);
else if (strEQ(name,"PRBADNAM")) sv_setiv(ST(0),PRBADNAM);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'C':
if (strEQ(name,"PRCELL")) sv_setiv(ST(0),PRCELL);
else if (strEQ(name,"PRCONT")) sv_setiv(ST(0),PRCONT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
if (strEQ(name,"PRDBADDR")) sv_setiv(ST(0),PRDBADDR);
else if (strEQ(name,"PRDBBAD")) sv_setiv(ST(0),PRDBBAD);
else if (strEQ(name,"PRDBFAIL")) sv_setiv(ST(0),PRDBFAIL);
else if (strEQ(name,"PRDBVERSION")) sv_setiv(ST(0),PRDBVERSION);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
if (strEQ(name,"PREXIST")) sv_setiv(ST(0),PREXIST);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'F':
if (strEQ(name,"PRFOREIGN")) sv_setiv(ST(0),PRFOREIGN);
else if (strEQ(name,"PRFREE")) sv_setiv(ST(0),PRFREE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'G':
if (strEQ(name,"PRGROUPEMPTY")) sv_setiv(ST(0),PRGROUPEMPTY);
else if (strEQ(name,"PRGRP")) sv_setiv(ST(0),PRGRP);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
if (strEQ(name,"PRIDEXIST")) sv_setiv(ST(0),PRIDEXIST);
else if (strEQ(name,"PRINCONSISTENT")) sv_setiv(ST(0),PRINCONSISTENT);
else if (strEQ(name,"PRINST")) sv_setiv(ST(0),PRINST);
else if (strEQ(name,"PRIVATE_SHIFT")) sv_setiv(ST(0),PRIVATE_SHIFT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
if (strEQ(name,"PRNOENT")) sv_setiv(ST(0),PRNOENT);
else if (strEQ(name,"PRNOIDS")) sv_setiv(ST(0),PRNOIDS);
else if (strEQ(name,"PRNOMORE")) sv_setiv(ST(0),PRNOMORE);
else if (strEQ(name,"PRNOTGROUP")) sv_setiv(ST(0),PRNOTGROUP);
else if (strEQ(name,"PRNOTUSER")) sv_setiv(ST(0),PRNOTUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'P':
if (strEQ(name,"PRPERM")) sv_setiv(ST(0),PRPERM);
else if (strEQ(name,"PRP_ADD_ANY")) sv_setiv(ST(0),PRP_ADD_ANY);
else if (strEQ(name,"PRP_ADD_MEM")) sv_setiv(ST(0),PRP_ADD_MEM);
else if (strEQ(name,"PRP_GROUP_DEFAULT")) sv_setiv(ST(0),PRP_GROUP_DEFAULT);
else if (strEQ(name,"PRP_MEMBER_ANY")) sv_setiv(ST(0),PRP_MEMBER_ANY);
else if (strEQ(name,"PRP_MEMBER_MEM")) sv_setiv(ST(0),PRP_MEMBER_MEM);
else if (strEQ(name,"PRP_OWNED_ANY")) sv_setiv(ST(0),PRP_OWNED_ANY);
else if (strEQ(name,"PRP_REMOVE_MEM")) sv_setiv(ST(0),PRP_REMOVE_MEM);
else if (strEQ(name,"PRP_STATUS_ANY")) sv_setiv(ST(0),PRP_STATUS_ANY);
else if (strEQ(name,"PRP_STATUS_MEM")) sv_setiv(ST(0),PRP_STATUS_MEM);
else if (strEQ(name,"PRP_USER_DEFAULT")) sv_setiv(ST(0),PRP_USER_DEFAULT);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'Q':
if (strEQ(name,"PRQUOTA")) sv_setiv(ST(0),PRQUOTA);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
if (strEQ(name,"PRSFS_ADMINISTER")) sv_setiv(ST(0),PRSFS_ADMINISTER);
else if (strEQ(name,"PRSFS_DELETE")) sv_setiv(ST(0),PRSFS_DELETE);
else if (strEQ(name,"PRSFS_INSERT")) sv_setiv(ST(0),PRSFS_INSERT);
else if (strEQ(name,"PRSFS_LOCK")) sv_setiv(ST(0),PRSFS_LOCK);
else if (strEQ(name,"PRSFS_LOOKUP")) sv_setiv(ST(0),PRSFS_LOOKUP);
else if (strEQ(name,"PRSFS_READ")) sv_setiv(ST(0),PRSFS_READ);
else if (strEQ(name,"PRSFS_USR0")) sv_setiv(ST(0),PRSFS_USR0);
else if (strEQ(name,"PRSFS_USR1")) sv_setiv(ST(0),PRSFS_USR1);
else if (strEQ(name,"PRSFS_USR2")) sv_setiv(ST(0),PRSFS_USR2);
else if (strEQ(name,"PRSFS_USR3")) sv_setiv(ST(0),PRSFS_USR3);
else if (strEQ(name,"PRSFS_USR4")) sv_setiv(ST(0),PRSFS_USR4);
else if (strEQ(name,"PRSFS_USR5")) sv_setiv(ST(0),PRSFS_USR5);
else if (strEQ(name,"PRSFS_USR6")) sv_setiv(ST(0),PRSFS_USR6);
else if (strEQ(name,"PRSFS_USR7")) sv_setiv(ST(0),PRSFS_USR7);
else if (strEQ(name,"PRSFS_WRITE")) sv_setiv(ST(0),PRSFS_WRITE);
else if (strEQ(name,"PRSIZE")) sv_setiv(ST(0),PRSIZE);
else if (strEQ(name,"PRSUCCESS")) sv_setiv(ST(0),PRSUCCESS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
if (strEQ(name,"PRTOOMANY")) sv_setiv(ST(0),PRTOOMANY);
else if (strEQ(name,"PRTYPE")) sv_setiv(ST(0),PRTYPE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
if (strEQ(name,"PRUSER")) sv_setiv(ST(0),PRUSER);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"PR_HIGHEST_OPCODE")) sv_setiv(ST(0),PR_HIGHEST_OPCODE);
else if (strEQ(name,"PR_LOWEST_OPCODE")) sv_setiv(ST(0),PR_LOWEST_OPCODE);
else if (strEQ(name,"PR_MAXGROUPS")) sv_setiv(ST(0),PR_MAXGROUPS);
else if (strEQ(name,"PR_MAXLIST")) sv_setiv(ST(0),PR_MAXLIST);
else if (strEQ(name,"PR_MAXNAMELEN")) sv_setiv(ST(0),PR_MAXNAMELEN);
else if (strEQ(name,"PR_NUMBER_OPCODES")) sv_setiv(ST(0),PR_NUMBER_OPCODES);
else if (strEQ(name,"PR_REMEMBER_TIMES")) sv_setiv(ST(0),PR_REMEMBER_TIMES);
else if (strEQ(name,"PR_SF_ALLBITS")) sv_setiv(ST(0),PR_SF_ALLBITS);
else if (strEQ(name,"PR_SF_NGROUPS")) sv_setiv(ST(0),PR_SF_NGROUPS);
else if (strEQ(name,"PR_SF_NUSERS")) sv_setiv(ST(0),PR_SF_NUSERS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'R':
switch (name[1]) {
case 'X':
switch (name[2]) {
case 'K':
if (strEQ(name,"RXKADBADKEY")) sv_setiv(ST(0),RXKADBADKEY);
else if (strEQ(name,"RXKADBADTICKET")) sv_setiv(ST(0),RXKADBADTICKET);
else if (strEQ(name,"RXKADDATALEN")) sv_setiv(ST(0),RXKADDATALEN);
else if (strEQ(name,"RXKADEXPIRED")) sv_setiv(ST(0),RXKADEXPIRED);
else if (strEQ(name,"RXKADILLEGALLEVEL")) sv_setiv(ST(0),RXKADILLEGALLEVEL);
else if (strEQ(name,"RXKADINCONSISTENCY")) sv_setiv(ST(0),RXKADINCONSISTENCY);
else if (strEQ(name,"RXKADLEVELFAIL")) sv_setiv(ST(0),RXKADLEVELFAIL);
else if (strEQ(name,"RXKADNOAUTH")) sv_setiv(ST(0),RXKADNOAUTH);
else if (strEQ(name,"RXKADOUTOFSEQUENCE")) sv_setiv(ST(0),RXKADOUTOFSEQUENCE);
else if (strEQ(name,"RXKADPACKETSHORT")) sv_setiv(ST(0),RXKADPACKETSHORT);
else if (strEQ(name,"RXKADSEALEDINCON")) sv_setiv(ST(0),RXKADSEALEDINCON);
else if (strEQ(name,"RXKADTICKETLEN")) sv_setiv(ST(0),RXKADTICKETLEN);
else if (strEQ(name,"RXKADUNKNOWNKEY")) sv_setiv(ST(0),RXKADUNKNOWNKEY);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case '_':
if (strEQ(name,"RX_SCINDEX_KAD")) sv_setiv(ST(0),RX_SCINDEX_KAD);
else if (strEQ(name,"RX_SCINDEX_NULL")) sv_setiv(ST(0),RX_SCINDEX_NULL);
else if (strEQ(name,"RX_SCINDEX_VAB")) sv_setiv(ST(0),RX_SCINDEX_VAB);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
switch (name[1]) {
case 'Y':
switch (name[2]) {
case 'S':
if (strEQ(name,"SYSADMINID")) sv_setiv(ST(0),SYSADMINID);
else if (strEQ(name,"SYSBACKUPID")) sv_setiv(ST(0),SYSBACKUPID);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'U':
switch (name[1]) {
case 'B':
switch (name[2]) {
case 'A':
if (strEQ(name,"UBADHOST")) sv_setiv(ST(0),UBADHOST);
else if (strEQ(name,"UBADLOCK")) sv_setiv(ST(0),UBADLOCK);
else if (strEQ(name,"UBADLOG")) sv_setiv(ST(0),UBADLOG);
else if (strEQ(name,"UBADTYPE")) sv_setiv(ST(0),UBADTYPE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'D':
switch (name[2]) {
case 'O':
if (strEQ(name,"UDONE")) sv_setiv(ST(0),UDONE);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'E':
switch (name[2]) {
case 'O':
if (strEQ(name,"UEOF")) sv_setiv(ST(0),UEOF);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'I':
switch (name[2]) {
case 'N':
if (strEQ(name,"UINTERNAL")) sv_setiv(ST(0),UINTERNAL);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"UIOERROR")) sv_setiv(ST(0),UIOERROR);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'L':
switch (name[2]) {
case 'O':
if (strEQ(name,"ULOGIO")) sv_setiv(ST(0),ULOGIO);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'N':
switch (name[2]) {
case 'H':
if (strEQ(name,"UNHOSTS")) sv_setiv(ST(0),UNHOSTS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'O':
if (strEQ(name,"UNOENT")) sv_setiv(ST(0),UNOENT);
else if (strEQ(name,"UNOQUORUM")) sv_setiv(ST(0),UNOQUORUM);
else if (strEQ(name,"UNOSERVERS")) sv_setiv(ST(0),UNOSERVERS);
else if (strEQ(name,"UNOTSYNC")) sv_setiv(ST(0),UNOTSYNC);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'S':
switch (name[2]) {
case 'Y':
if (strEQ(name,"USYNC")) sv_setiv(ST(0),USYNC);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'T':
switch (name[2]) {
case 'W':
if (strEQ(name,"UTWOENDS")) sv_setiv(ST(0),UTWOENDS);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
case 'V':
switch (name[1]) {
case 'I':
switch (name[2]) {
case 'O':
if (strEQ(name,"VIOCACCESS")) sv_setiv(ST(0),VIOCACCESS);
else if (strEQ(name,"VIOCCKBACK")) sv_setiv(ST(0),VIOCCKBACK);
else if (strEQ(name,"VIOCCKCONN")) sv_setiv(ST(0),VIOCCKCONN);
else if (strEQ(name,"VIOCCKSERV")) sv_setiv(ST(0),VIOCCKSERV);
else if (strEQ(name,"VIOCDISGROUP")) sv_setiv(ST(0),VIOCDISGROUP);
else if (strEQ(name,"VIOCENGROUP")) sv_setiv(ST(0),VIOCENGROUP);
else if (strEQ(name,"VIOCFLUSH")) sv_setiv(ST(0),VIOCFLUSH);
else if (strEQ(name,"VIOCFLUSHCB")) sv_setiv(ST(0),VIOCFLUSHCB);
else if (strEQ(name,"VIOCGETAL")) sv_setiv(ST(0),VIOCGETAL);
else if (strEQ(name,"VIOCGETCACHEPARMS")) sv_setiv(ST(0),VIOCGETCACHEPARMS);
else if (strEQ(name,"VIOCGETCELL")) sv_setiv(ST(0),VIOCGETCELL);
else if (strEQ(name,"VIOCGETFID")) sv_setiv(ST(0),VIOCGETFID);
else if (strEQ(name,"VIOCGETTIME")) sv_setiv(ST(0),VIOCGETTIME);
else if (strEQ(name,"VIOCGETTOK")) sv_setiv(ST(0),VIOCGETTOK);
else if (strEQ(name,"VIOCGETVCXSTATUS")) sv_setiv(ST(0),VIOCGETVCXSTATUS);
else if (strEQ(name,"VIOCGETVOLSTAT")) sv_setiv(ST(0),VIOCGETVOLSTAT);
else if (strEQ(name,"VIOCLISTGROUPS")) sv_setiv(ST(0),VIOCLISTGROUPS);
else if (strEQ(name,"VIOCNEWCELL")) sv_setiv(ST(0),VIOCNEWCELL);
else if (strEQ(name,"VIOCNOP")) sv_setiv(ST(0),VIOCNOP);
else if (strEQ(name,"VIOCPREFETCH")) sv_setiv(ST(0),VIOCPREFETCH);
else if (strEQ(name,"VIOCSETAL")) sv_setiv(ST(0),VIOCSETAL);
else if (strEQ(name,"VIOCSETCACHESIZE")) sv_setiv(ST(0),VIOCSETCACHESIZE);
else if (strEQ(name,"VIOCSETTOK")) sv_setiv(ST(0),VIOCSETTOK);
else if (strEQ(name,"VIOCSETVOLSTAT")) sv_setiv(ST(0),VIOCSETVOLSTAT);
else if (strEQ(name,"VIOCSTAT")) sv_setiv(ST(0),VIOCSTAT);
else if (strEQ(name,"VIOCUNLOG")) sv_setiv(ST(0),VIOCUNLOG);
else if (strEQ(name,"VIOCUNPAG")) sv_setiv(ST(0),VIOCUNPAG);
else if (strEQ(name,"VIOCWAITFOREVER")) sv_setiv(ST(0),VIOCWAITFOREVER);
else if (strEQ(name,"VIOCWHEREIS")) sv_setiv(ST(0),VIOCWHEREIS);
else if (strEQ(name,"VIOC_AFS_DELETE_MT_PT")) sv_setiv(ST(0),VIOC_AFS_DELETE_MT_PT);
else if (strEQ(name,"VIOC_AFS_MARINER_HOST")) sv_setiv(ST(0),VIOC_AFS_MARINER_HOST);
else if (strEQ(name,"VIOC_AFS_STAT_MT_PT")) sv_setiv(ST(0),VIOC_AFS_STAT_MT_PT);
else if (strEQ(name,"VIOC_AFS_SYSNAME")) sv_setiv(ST(0),VIOC_AFS_SYSNAME);
else if (strEQ(name,"VIOC_EXPORTAFS")) sv_setiv(ST(0),VIOC_EXPORTAFS);
else if (strEQ(name,"VIOC_FILE_CELL_NAME")) sv_setiv(ST(0),VIOC_FILE_CELL_NAME);
else if (strEQ(name,"VIOC_FLUSHVOLUME")) sv_setiv(ST(0),VIOC_FLUSHVOLUME);
else if (strEQ(name,"VIOC_GAG")) sv_setiv(ST(0),VIOC_GAG);
else if (strEQ(name,"VIOC_GETCELLSTATUS")) sv_setiv(ST(0),VIOC_GETCELLSTATUS);
else if (strEQ(name,"VIOC_GETSPREFS")) sv_setiv(ST(0),VIOC_GETSPREFS);
else if (strEQ(name,"VIOC_GET_PRIMARY_CELL")) sv_setiv(ST(0),VIOC_GET_PRIMARY_CELL);
else if (strEQ(name,"VIOC_GET_WS_CELL")) sv_setiv(ST(0),VIOC_GET_WS_CELL);
else if (strEQ(name,"VIOC_SETCELLSTATUS")) sv_setiv(ST(0),VIOC_SETCELLSTATUS);
else if (strEQ(name,"VIOC_SETSPREFS")) sv_setiv(ST(0),VIOC_SETSPREFS);
else if (strEQ(name,"VIOC_TWIDDLE")) sv_setiv(ST(0),VIOC_TWIDDLE);
else if (strEQ(name,"VIOC_VENUSLOG")) sv_setiv(ST(0),VIOC_VENUSLOG);
else {
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
break;
default:
ST(0) = ST(1) = &PL_sv_undef;
return;
}
errno = 0;
XSRETURN(1);
return;
}
#endif
( run in 1.735 second using v1.01-cache-2.11-cpan-d80b1682f3f )