--- /dev/null
+/* -*- c -*-
+ *
+ * Auristor/YFS fileserver and cache manager opcodes. Please do not add or
+ * modify opcodes here without consulting Auristor, Inc..
+ *
+ * Copyright (c) 2015-2020 AuriStor, Inc. <https://www.auristor.com/>
+ * 255 W 94th St, New York NY 10025-6985 United States, Earth, Sol, Milky Way
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+typedef uint32_t afs_uint32;
+typedef int32_t afs_int32;
+typedef uint64_t afs_uint64;
+typedef int64_t afs_int64;
+typedef afs_uint64 YFSVolumeId;
+
+const ENDPOINT_IPV4 = 0;
+const ENDPOINT_IPV6 = 1;
+struct endpoint {
+ uint32_t Type;
+ opaque Data; /* Address and port */
+};
--- /dev/null
+/* -*- c -*-
+ *
+ * Auristor/YFS Volume Location server opcodes. Please do not add or modify
+ * opcodes here without consulting Auristor, Inc..
+ *
+ * Copyright (c) 2015-2020 AuriStor, Inc. <https://www.auristor.com/>
+ * 255 W 94th St, New York NY 10025-6985 United States, Earth, Sol, Milky Way
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+
+package YFSVL_
+
+const YFSVL_SERVICEID = 2503;
+const YVL_MAXNAMELEN = 512;
+const YVL_MAXNSERVERS = 128;
+
+/*
+ * VL_MINVOLUMEID represents the lowest volume id that can be issued
+ * by the Location Service. All volume ids smaller than the
+ * VL_MINVOLUMEID are reserved for allocation and internal use by
+ * individual volservers.
+ */
+const VL_MINVOLUMEID = 0x100002;
+
+
+/*
+ * When vldbentry_location.partition is VLPART_UUID the uuid field is a
+ * partition uuid instead of a fileserver uuid.
+ */
+const VLPART_UUID = 0xFFFFFFFF;
+
+struct vldbentry64_location {
+ afsUUID uuid;
+ afs_uint32 unique;
+ afs_uint32 partition;
+ afs_uint32 flags;
+};
+typedef vldbentry64_location vldbentry64_locations<YVL_MAXNSERVERS>;
+
+struct vldbentry64 {
+ string name<YVL_MAXNAMELEN>;
+ vldbentry64_locations locations;
+ YFSVolumeId volumeId[MAXTYPES];
+ YFSVolumeId cloneId;
+ afs_uint32 flags;
+ afs_uint32 matchType;
+ afs_uint32 matchLocation;
+};
+
+const NMAXBULKENTRIES64 = 10000000;
+typedef vldbentry64 bulkentries64<NMAXBULKENTRIES64>;
+
+const MAXENDPOINTS = 16;
+typedef endpoint endpoints<MAXENDPOINTS>;
+
+/* Security flags */
+const VLF_SEC_RXNULL = 0x010000;
+const VLF_SEC_RXKAD_CLEAR = 0x020000;
+const VLF_SEC_RXKAD_AUTH = 0x040000;
+const VLF_SEC_RXKAD_CRYPT = 0x080000;
+const VLF_SEC_YFS_RXGK_CLEAR = 0x100000;
+const VLF_SEC_YFS_RXGK_AUTH = 0x200000;
+const VLF_SEC_YFS_RXGK_CRYPT = 0x400000;
+
+const VLF_SEC_MASK = 0x0fff0000;
+
+/* RegisterAddrs flags */
+const VLREGADDR_CLASS_RXNULL = 0x01;
+const VLREGADDR_CLASS_RXKAD = 0x02;
+const VLREGADDR_CLASS_YFS_RXGK = 0x03;
+
+const VLREGADDR_LEVEL_RXNULL_CLEAR = 0x00;
+
+const VLREGADDR_LEVEL_RXKAD_CLEAR = 0x01;
+const VLREGADDR_LEVEL_RXKAD_AUTH = 0x02;
+const VLREGADDR_LEVEL_RXKAD_CRYPT = 0x03;
+
+const VLREGADDR_LEVEL_YFS_RXGK_CLEAR = 0x01;
+const VLREGADDR_LEVEL_YFS_RXGK_AUTH = 0x02;
+const VLREGADDR_LEVEL_YFS_RXGK_CRYPT = 0x03;
+
+const MAX_SEC_LEVELS = 16;
+struct sec_level {
+ afs_uint32 sec_class;
+ afs_uint32 level;
+};
+typedef struct sec_level sec_levels<MAX_SEC_LEVELS>;
+
+
+RegisterAddrs(
+ IN afsUUID *uuidp,
+ IN sec_levels *levels,
+ IN endpoints *addrs
+) = 64001;
+
+const YFS_SERVER_INDEX = 0;
+const YFS_SERVER_UUID = 1;
+const YFS_SERVER_ENDPOINT = 2;
+
+union yfsServerAttributes switch (afs_int32 type) {
+ case YFS_SERVER_INDEX:
+ afs_int32 index;
+ case YFS_SERVER_UUID:
+ opr_uuid uuid;
+ case YFS_SERVER_ENDPOINT:
+ endpoint endpoint;
+};
+
+altonly GetEndpoints(
+ IN yfsServerAttributes *attr,
+ OUT opr_uuid *uuid,
+ OUT afs_int32 *uniquifier,
+ OUT endpoints *fsEndpoints,
+ OUT endpoints *volEndpoints
+) = 64002;
+
+CreateEntryU(
+ IN uvldbentry *newentry
+) = 64003;
+
+ReplaceEntryU(
+ IN afs_uint32 Volid,
+ IN afs_int32 voltype,
+ IN uvldbentry *newentry,
+ IN afs_int32 ReleaseType
+) = 64004;
+
+ListAttributesU2(
+ IN VldbListByAttributes *attributes,
+ IN string volumename<YVL_MAXNAMELEN>,
+ IN afs_int32 startindex,
+ OUT afs_int32 *nentries,
+ OUT ubulkentries *blkentries,
+ OUT afs_int32 *nextstartindex
+) = 64005;
+
+CreateEntry64(
+ IN vldbentry64 *newentry
+) = 64006;
+
+ReplaceEntry64(
+ IN YFSVolumeId volId,
+ IN afs_int32 voltype,
+ IN vldbentry64 *newentry,
+ IN afs_int32 ReleaseType
+) = 64007;
+
+DeleteEntry64(
+ IN YFSVolumeId volId,
+ IN afs_int32 voltype
+) = 64008;
+
+GetNewVolumeId64(
+ IN afs_uint64 bumpcount,
+ OUT YFSVolumeId *newvolId
+) = 64009;
+
+SetLock64(
+ IN YFSVolumeId volId,
+ IN afs_int32 voltype,
+ IN afs_int32 voloper
+) = 64010;
+
+ReleaseLock64(
+ IN YFSVolumeId volId,
+ IN afs_int32 voltype,
+ IN afs_int32 ReleaseType
+) = 64011;
+
+/*
+ * If bit one is unset, return FS UUIDs in vldbentry64_location.uuid
+ */
+const VLGET_FS_UUID = 0x0;
+const VLGET_PART_UUID = 0x1;
+
+GetEntryByName64(
+ IN string volumename<YVL_MAXNAMELEN>,
+ IN afs_uint32 flags, /* VLGET flags */
+ OUT vldbentry64 *entry
+) = 64012;
+
+GetEntryByID64(
+ IN YFSVolumeId volId,
+ IN afs_int32 voltype,
+ IN afs_uint32 flags, /* VLGET flags */
+ OUT vldbentry64 *entry
+) = 64013;
+
+const YVL_MAXCELLNAME = 256;
+
+GetCellName(
+ OUT string cellName<YVL_MAXCELLNAME>
+) = 64014;
+
+altonly GetFSSecLevels(
+ IN afsUUID *fs_uuid,
+ OUT sec_levels *fs_sec_levels
+) = 64015;
+
+altonly RemoveFS(
+ IN afsUUID *fs_uuid
+) = 64816;
+
+altonly RegisterEndpoints(
+ IN afsUUID *uuidp,
+ IN sec_levels *levels,
+ IN endpoints *addrs,
+ OUT string cellName<YVL_MAXCELLNAME>
+) = 64817;
+
+EchoEndpoint(
+ OUT endpoint ep
+) multi = 64818;