1*d62bc4baSyz147064 /* 2*d62bc4baSyz147064 * CDDL HEADER START 3*d62bc4baSyz147064 * 4*d62bc4baSyz147064 * The contents of this file are subject to the terms of the 5*d62bc4baSyz147064 * Common Development and Distribution License (the "License"). 6*d62bc4baSyz147064 * You may not use this file except in compliance with the License. 7*d62bc4baSyz147064 * 8*d62bc4baSyz147064 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*d62bc4baSyz147064 * or http://www.opensolaris.org/os/licensing. 10*d62bc4baSyz147064 * See the License for the specific language governing permissions 11*d62bc4baSyz147064 * and limitations under the License. 12*d62bc4baSyz147064 * 13*d62bc4baSyz147064 * When distributing Covered Code, include this CDDL HEADER in each 14*d62bc4baSyz147064 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*d62bc4baSyz147064 * If applicable, add the following below this CDDL HEADER, with the 16*d62bc4baSyz147064 * fields enclosed by brackets "[]" replaced with your own identifying 17*d62bc4baSyz147064 * information: Portions Copyright [yyyy] [name of copyright owner] 18*d62bc4baSyz147064 * 19*d62bc4baSyz147064 * CDDL HEADER END 20*d62bc4baSyz147064 */ 21*d62bc4baSyz147064 /* 22*d62bc4baSyz147064 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*d62bc4baSyz147064 * Use is subject to license terms. 24*d62bc4baSyz147064 */ 25*d62bc4baSyz147064 26*d62bc4baSyz147064 /* 27*d62bc4baSyz147064 * This file includes structures, macros used to communicate with linkmgmt 28*d62bc4baSyz147064 * daemon. 29*d62bc4baSyz147064 */ 30*d62bc4baSyz147064 31*d62bc4baSyz147064 #ifndef _LIBDLMGMT_H 32*d62bc4baSyz147064 #define _LIBDLMGMT_H 33*d62bc4baSyz147064 34*d62bc4baSyz147064 #pragma ident "%Z%%M% %I% %E% SMI" 35*d62bc4baSyz147064 36*d62bc4baSyz147064 #include <sys/types.h> 37*d62bc4baSyz147064 #include <libdladm.h> 38*d62bc4baSyz147064 39*d62bc4baSyz147064 #ifdef __cplusplus 40*d62bc4baSyz147064 extern "C" { 41*d62bc4baSyz147064 #endif 42*d62bc4baSyz147064 43*d62bc4baSyz147064 /* 44*d62bc4baSyz147064 * datalink management related macros, structures. 45*d62bc4baSyz147064 */ 46*d62bc4baSyz147064 47*d62bc4baSyz147064 /* 48*d62bc4baSyz147064 * Door call commands. 49*d62bc4baSyz147064 */ 50*d62bc4baSyz147064 #define DLMGMT_CMD_CREATE_LINKID (DLMGMT_CMD_BASE + 0) 51*d62bc4baSyz147064 #define DLMGMT_CMD_DESTROY_LINKID (DLMGMT_CMD_BASE + 1) 52*d62bc4baSyz147064 #define DLMGMT_CMD_REMAP_LINKID (DLMGMT_CMD_BASE + 2) 53*d62bc4baSyz147064 #define DLMGMT_CMD_CREATECONF (DLMGMT_CMD_BASE + 3) 54*d62bc4baSyz147064 #define DLMGMT_CMD_READCONF (DLMGMT_CMD_BASE + 4) 55*d62bc4baSyz147064 #define DLMGMT_CMD_WRITECONF (DLMGMT_CMD_BASE + 5) 56*d62bc4baSyz147064 #define DLMGMT_CMD_UP_LINKID (DLMGMT_CMD_BASE + 6) 57*d62bc4baSyz147064 #define DLMGMT_CMD_SETATTR (DLMGMT_CMD_BASE + 7) 58*d62bc4baSyz147064 #define DLMGMT_CMD_UNSETATTR (DLMGMT_CMD_BASE + 8) 59*d62bc4baSyz147064 #define DLMGMT_CMD_REMOVECONF (DLMGMT_CMD_BASE + 9) 60*d62bc4baSyz147064 #define DLMGMT_CMD_DESTROYCONF (DLMGMT_CMD_BASE + 10) 61*d62bc4baSyz147064 #define DLMGMT_CMD_GETATTR (DLMGMT_CMD_BASE + 11) 62*d62bc4baSyz147064 63*d62bc4baSyz147064 typedef struct dlmgmt_door_createid_s { 64*d62bc4baSyz147064 int ld_cmd; 65*d62bc4baSyz147064 char ld_link[MAXLINKNAMELEN]; 66*d62bc4baSyz147064 datalink_class_t ld_class; 67*d62bc4baSyz147064 uint32_t ld_media; 68*d62bc4baSyz147064 boolean_t ld_prefix; 69*d62bc4baSyz147064 uint32_t ld_flags; 70*d62bc4baSyz147064 } dlmgmt_door_createid_t; 71*d62bc4baSyz147064 72*d62bc4baSyz147064 typedef struct dlmgmt_door_destroyid_s { 73*d62bc4baSyz147064 int ld_cmd; 74*d62bc4baSyz147064 datalink_id_t ld_linkid; 75*d62bc4baSyz147064 uint32_t ld_flags; 76*d62bc4baSyz147064 } dlmgmt_door_destroyid_t; 77*d62bc4baSyz147064 78*d62bc4baSyz147064 typedef struct dlmgmt_door_remapid_s { 79*d62bc4baSyz147064 int ld_cmd; 80*d62bc4baSyz147064 datalink_id_t ld_linkid; 81*d62bc4baSyz147064 char ld_link[MAXLINKNAMELEN]; 82*d62bc4baSyz147064 } dlmgmt_door_remapid_t; 83*d62bc4baSyz147064 84*d62bc4baSyz147064 typedef struct dlmgmt_door_upid_s { 85*d62bc4baSyz147064 int ld_cmd; 86*d62bc4baSyz147064 datalink_id_t ld_linkid; 87*d62bc4baSyz147064 } dlmgmt_door_upid_t; 88*d62bc4baSyz147064 89*d62bc4baSyz147064 typedef struct dlmgmt_door_createconf_s { 90*d62bc4baSyz147064 int ld_cmd; 91*d62bc4baSyz147064 char ld_link[MAXLINKNAMELEN]; 92*d62bc4baSyz147064 datalink_id_t ld_linkid; 93*d62bc4baSyz147064 datalink_class_t ld_class; 94*d62bc4baSyz147064 uint32_t ld_media; 95*d62bc4baSyz147064 } dlmgmt_door_createconf_t; 96*d62bc4baSyz147064 97*d62bc4baSyz147064 typedef struct dlmgmt_door_setattr_s { 98*d62bc4baSyz147064 int ld_cmd; 99*d62bc4baSyz147064 dladm_conf_t ld_conf; 100*d62bc4baSyz147064 char ld_attr[MAXLINKATTRLEN]; 101*d62bc4baSyz147064 size_t ld_attrsz; 102*d62bc4baSyz147064 dladm_datatype_t ld_type; 103*d62bc4baSyz147064 char ld_attrval[1]; 104*d62bc4baSyz147064 } dlmgmt_door_setattr_t; 105*d62bc4baSyz147064 106*d62bc4baSyz147064 typedef struct dlmgmt_door_unsetattr_s { 107*d62bc4baSyz147064 int ld_cmd; 108*d62bc4baSyz147064 dladm_conf_t ld_conf; 109*d62bc4baSyz147064 char ld_attr[MAXLINKATTRLEN]; 110*d62bc4baSyz147064 } dlmgmt_door_unsetattr_t; 111*d62bc4baSyz147064 112*d62bc4baSyz147064 typedef struct dlmgmt_door_writeconf_s { 113*d62bc4baSyz147064 int ld_cmd; 114*d62bc4baSyz147064 dladm_conf_t ld_conf; 115*d62bc4baSyz147064 } dlmgmt_door_writeconf_t; 116*d62bc4baSyz147064 117*d62bc4baSyz147064 typedef struct dlmgmt_door_removeconf_s { 118*d62bc4baSyz147064 int ld_cmd; 119*d62bc4baSyz147064 datalink_id_t ld_linkid; 120*d62bc4baSyz147064 } dlmgmt_door_removeconf_t; 121*d62bc4baSyz147064 122*d62bc4baSyz147064 typedef struct dlmgmt_door_destroyconf_s { 123*d62bc4baSyz147064 int ld_cmd; 124*d62bc4baSyz147064 dladm_conf_t ld_conf; 125*d62bc4baSyz147064 } dlmgmt_door_destroyconf_t; 126*d62bc4baSyz147064 127*d62bc4baSyz147064 typedef struct dlmgmt_door_readconf_s { 128*d62bc4baSyz147064 int ld_cmd; 129*d62bc4baSyz147064 datalink_id_t ld_linkid; 130*d62bc4baSyz147064 } dlmgmt_door_readconf_t; 131*d62bc4baSyz147064 132*d62bc4baSyz147064 typedef struct dlmgmt_door_getattr_s { 133*d62bc4baSyz147064 int ld_cmd; 134*d62bc4baSyz147064 dladm_conf_t ld_conf; 135*d62bc4baSyz147064 char ld_attr[MAXLINKATTRLEN]; 136*d62bc4baSyz147064 } dlmgmt_door_getattr_t; 137*d62bc4baSyz147064 138*d62bc4baSyz147064 typedef union dlmgmt_door_arg_s { 139*d62bc4baSyz147064 int ld_cmd; 140*d62bc4baSyz147064 dlmgmt_upcall_arg_create_t kcreate; 141*d62bc4baSyz147064 dlmgmt_upcall_arg_destroy_t kdestroy; 142*d62bc4baSyz147064 dlmgmt_upcall_arg_getattr_t kgetattr; 143*d62bc4baSyz147064 dlmgmt_door_getlinkid_t getlinkid; 144*d62bc4baSyz147064 dlmgmt_door_getnext_t getnext; 145*d62bc4baSyz147064 dlmgmt_door_createid_t createid; 146*d62bc4baSyz147064 dlmgmt_door_destroyid_t destroyid; 147*d62bc4baSyz147064 dlmgmt_door_remapid_t remapid; 148*d62bc4baSyz147064 dlmgmt_door_upid_t upid; 149*d62bc4baSyz147064 dlmgmt_door_createconf_t createconf; 150*d62bc4baSyz147064 dlmgmt_door_getname_t getname; 151*d62bc4baSyz147064 dlmgmt_door_getattr_t getattr; 152*d62bc4baSyz147064 dlmgmt_door_setattr_t setattr; 153*d62bc4baSyz147064 dlmgmt_door_writeconf_t writeconf; 154*d62bc4baSyz147064 dlmgmt_door_removeconf_t removeconf; 155*d62bc4baSyz147064 dlmgmt_door_destroyconf_t destroyconf; 156*d62bc4baSyz147064 dlmgmt_door_readconf_t readconf; 157*d62bc4baSyz147064 } dlmgmt_door_arg_t; 158*d62bc4baSyz147064 159*d62bc4baSyz147064 typedef struct dlmgmt_handle_retval_s { 160*d62bc4baSyz147064 uint_t lr_err; 161*d62bc4baSyz147064 dladm_conf_t lr_conf; 162*d62bc4baSyz147064 } dlmgmt_createconf_retval_t, dlmgmt_readconf_retval_t; 163*d62bc4baSyz147064 164*d62bc4baSyz147064 typedef struct dlmgmt_null_retval_s dlmgmt_remapid_retval_t, 165*d62bc4baSyz147064 dlmgmt_upid_retval_t, 166*d62bc4baSyz147064 dlmgmt_destroyid_retval_t, 167*d62bc4baSyz147064 dlmgmt_setattr_retval_t, 168*d62bc4baSyz147064 dlmgmt_unsetattr_retval_t, 169*d62bc4baSyz147064 dlmgmt_writeconf_retval_t, 170*d62bc4baSyz147064 dlmgmt_removeconf_retval_t, 171*d62bc4baSyz147064 dlmgmt_destroyconf_retval_t; 172*d62bc4baSyz147064 173*d62bc4baSyz147064 typedef struct dlmgmt_linkid_retval_s dlmgmt_createid_retval_t; 174*d62bc4baSyz147064 175*d62bc4baSyz147064 typedef union dlmgmt_retval { 176*d62bc4baSyz147064 uint_t lr_err; /* return error code */ 177*d62bc4baSyz147064 dlmgmt_create_retval_t kcreate; 178*d62bc4baSyz147064 dlmgmt_destroy_retval_t kdestroy; 179*d62bc4baSyz147064 dlmgmt_getattr_retval_t getattr; 180*d62bc4baSyz147064 dlmgmt_getname_retval_t getname; 181*d62bc4baSyz147064 dlmgmt_getlinkid_retval_t getlinkid; 182*d62bc4baSyz147064 dlmgmt_getnext_retval_t getnext; 183*d62bc4baSyz147064 dlmgmt_createid_retval_t createid; 184*d62bc4baSyz147064 dlmgmt_destroyid_retval_t destroyid; 185*d62bc4baSyz147064 dlmgmt_remapid_retval_t remapid; 186*d62bc4baSyz147064 dlmgmt_upid_retval_t upid; 187*d62bc4baSyz147064 dlmgmt_createconf_retval_t createconf; 188*d62bc4baSyz147064 dlmgmt_readconf_retval_t readconf; 189*d62bc4baSyz147064 dlmgmt_setattr_retval_t setattr; 190*d62bc4baSyz147064 dlmgmt_writeconf_retval_t writeconf; 191*d62bc4baSyz147064 dlmgmt_removeconf_retval_t removeconf; 192*d62bc4baSyz147064 dlmgmt_destroyconf_retval_t destroyconf; 193*d62bc4baSyz147064 } dlmgmt_retval_t; 194*d62bc4baSyz147064 195*d62bc4baSyz147064 #ifdef __cplusplus 196*d62bc4baSyz147064 } 197*d62bc4baSyz147064 #endif 198*d62bc4baSyz147064 199*d62bc4baSyz147064 #endif /* _LIBDLMGMT_H */ 200