summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/cladm.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/cladm.h')
-rw-r--r--usr/src/uts/common/sys/cladm.h158
1 files changed, 158 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/cladm.h b/usr/src/uts/common/sys/cladm.h
new file mode 100644
index 0000000000..4850d6d89e
--- /dev/null
+++ b/usr/src/uts/common/sys/cladm.h
@@ -0,0 +1,158 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 1998-2002 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_CLADM_H
+#define _SYS_CLADM_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+#include <sys/clconf.h>
+#include <netinet/in.h>
+
+
+/*
+ * This file defines interfaces which are private to Sun Clustering.
+ * Others should not depend on this in any way as it may change or be
+ * removed completely.
+ */
+
+/*
+ * cladm() facilities; see below for definitions pertinent to each of these
+ * facilities.
+ */
+#define CL_INITIALIZE 0 /* bootstrapping information */
+#define CL_CONFIG 1 /* configuration information */
+
+
+/*
+ * Command definitions for each of the facilities.
+ * The type of the data pointer and the direction of the data transfer
+ * is listed for each command.
+ */
+
+/*
+ * CL_INITIALIZE facility commands.
+ */
+#define CL_GET_BOOTFLAG 0 /* Return cluster config/boot status */
+
+/*
+ * Definitions for the flag bits returned by CL_GET_BOOTFLAG.
+ */
+#define CLUSTER_CONFIGURED 0x0001 /* system is configured as a cluster */
+#define CLUSTER_BOOTED 0x0002 /* system is booted as a cluster */
+
+#ifdef _KERNEL
+#define CLUSTER_INSTALLING 0x0004 /* cluster is being installed */
+#define CLUSTER_DCS_ENABLED 0x0008 /* cluster device framework enabled */
+#endif /* _KERNEL */
+
+/*
+ * CL_CONFIG facility commands.
+ * The CL_GET_NETADDRS and CL_GET_NUM_NETADDRS are contract private interfaces
+ * per PSARC/2001/579-01.
+ */
+#define CL_NODEID 0 /* Return nodeid of this node. */
+#define CL_HIGHEST_NODEID 1 /* Return highest configured nodeid. */
+#define CL_GDEV_PREFIX 2 /* Return path to global namespace. */
+#define CL_GET_NETADDRS 3 /* Get array of network addresses */
+ /* controlled by Sun Cluster. */
+#define CL_GET_NUM_NETADDRS 4 /* Get the number of data structure */
+ /* entries in the array that will be */
+ /* returned using CL_GET_NETADDRS. */
+
+/*
+ * The cladm system call can provide an array of cluster controlled
+ * network addresses and associated netmasks. The cladm arguments
+ * must be as follows: the argument fac is specified as CL_CONFIG,
+ * the argument cmd is specified as CL_GET_NETADDRS, and argument arg
+ * is the location of a structure of type cladm_netaddrs_t. The
+ * cladm_num_netaddrs is used as input for the requested number
+ * of array entries, and is used as ouput for the number of valid array
+ * entries available.
+ *
+ * The caller must allocate sufficient memory for the array of
+ * structures of type cladm_netaddr_entry_t and specify the starting
+ * location as cladm_netaddrs_array. The number of entries included
+ * in the array is determined using cladm with argument fac specified
+ * as CL_CONFIG, argument cmd specified as CL_GET_NUM_NETADDRS, and
+ * argument arg is the location of a structure of type cladm_netaddrs_t.
+ * The determined number of array entries is returned in
+ * cladm_num_netaddrs.
+ *
+ * These commands support the yielding of DR operation control (by the
+ * RCM Framework) to Sun Cluster for cluster controlled adapters.
+ *
+ * These data structures are contract private per PSARC/2001/579-01.
+ */
+typedef struct {
+ int32_t cl_ipversion; /* IPV4_VERSION or IPV6_VERSION */
+ union {
+ struct {
+ ipaddr_t ipv4_netaddr;
+ ipaddr_t ipv4_netmask;
+ } cl_ipv4;
+ struct {
+ uint32_t ipv6_netaddr[4];
+ uint32_t ipv6_netmask[4];
+ } cl_ipv6;
+ } cl_ipv_un;
+} cladm_netaddr_entry_t;
+
+typedef struct {
+ uint32_t cladm_num_netaddrs;
+ cladm_netaddr_entry_t *cladm_netaddrs_array;
+} cladm_netaddrs_t;
+
+#if defined(_SYSCALL32)
+typedef struct {
+ uint32_t cladm_num_netaddrs;
+ caddr32_t cladm_netaddrs_array;
+} cladm_netaddrs32_t;
+#endif /* defined(_SYSCALL32) */
+
+
+#ifdef _KERNEL
+extern int cladmin(int fac, int cmd, void *data);
+extern int cluster_bootflags;
+#else
+#if defined(__STDC__)
+extern int _cladm(int fac, int cmd, void *data);
+#else /* !defined(__STDC__) */
+extern int _cladm();
+#endif /* defined(__STDC__) */
+#endif /* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _SYS_CLADM_H */