diff options
Diffstat (limited to 'usr/src/uts/common/sys/cladm.h')
-rw-r--r-- | usr/src/uts/common/sys/cladm.h | 158 |
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 */ |