1*9087SZhong.Wang@Sun.COM /* 2*9087SZhong.Wang@Sun.COM * CDDL HEADER START 3*9087SZhong.Wang@Sun.COM * 4*9087SZhong.Wang@Sun.COM * The contents of this file are subject to the terms of the 5*9087SZhong.Wang@Sun.COM * Common Development and Distribution License (the "License"). 6*9087SZhong.Wang@Sun.COM * You may not use this file except in compliance with the License. 7*9087SZhong.Wang@Sun.COM * 8*9087SZhong.Wang@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*9087SZhong.Wang@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*9087SZhong.Wang@Sun.COM * See the License for the specific language governing permissions 11*9087SZhong.Wang@Sun.COM * and limitations under the License. 12*9087SZhong.Wang@Sun.COM * 13*9087SZhong.Wang@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*9087SZhong.Wang@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*9087SZhong.Wang@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*9087SZhong.Wang@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*9087SZhong.Wang@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*9087SZhong.Wang@Sun.COM * 19*9087SZhong.Wang@Sun.COM * CDDL HEADER END 20*9087SZhong.Wang@Sun.COM */ 21*9087SZhong.Wang@Sun.COM /* 22*9087SZhong.Wang@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*9087SZhong.Wang@Sun.COM * Use is subject to license terms. 24*9087SZhong.Wang@Sun.COM */ 25*9087SZhong.Wang@Sun.COM 26*9087SZhong.Wang@Sun.COM #ifndef _LIBFCOE_H 27*9087SZhong.Wang@Sun.COM #define _LIBFCOE_H 28*9087SZhong.Wang@Sun.COM 29*9087SZhong.Wang@Sun.COM #include <time.h> 30*9087SZhong.Wang@Sun.COM #include <wchar.h> 31*9087SZhong.Wang@Sun.COM #include <sys/param.h> 32*9087SZhong.Wang@Sun.COM #include <sys/ethernet.h> 33*9087SZhong.Wang@Sun.COM #include <libnvpair.h> 34*9087SZhong.Wang@Sun.COM 35*9087SZhong.Wang@Sun.COM #ifdef __cplusplus 36*9087SZhong.Wang@Sun.COM extern "C" { 37*9087SZhong.Wang@Sun.COM #endif 38*9087SZhong.Wang@Sun.COM 39*9087SZhong.Wang@Sun.COM /* 40*9087SZhong.Wang@Sun.COM * FCOE Port Type 41*9087SZhong.Wang@Sun.COM */ 42*9087SZhong.Wang@Sun.COM #define FCOE_PORTTYPE_INITIATOR 0 43*9087SZhong.Wang@Sun.COM #define FCOE_PORTTYPE_TARGET 1 44*9087SZhong.Wang@Sun.COM 45*9087SZhong.Wang@Sun.COM #define FCOE_MAX_MAC_NAME_LEN 32 46*9087SZhong.Wang@Sun.COM typedef unsigned char FCOE_UINT8; 47*9087SZhong.Wang@Sun.COM typedef char FCOE_INT8; 48*9087SZhong.Wang@Sun.COM typedef unsigned short FCOE_UINT16; 49*9087SZhong.Wang@Sun.COM typedef short FCOE_INT16; 50*9087SZhong.Wang@Sun.COM typedef unsigned int FCOE_UINT32; 51*9087SZhong.Wang@Sun.COM typedef int FCOE_INT32; 52*9087SZhong.Wang@Sun.COM 53*9087SZhong.Wang@Sun.COM typedef unsigned int FCOE_STATUS; 54*9087SZhong.Wang@Sun.COM 55*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_OK 0 56*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR 1 57*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_INVAL_ARG 2 58*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_BUSY 3 59*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_ALREADY 4 60*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_PERM 5 61*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_OPEN_DEV 6 62*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_WWN_SAME 7 63*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_MAC_LEN 8 64*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_PWWN_CONFLICTED 9 65*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_NWWN_CONFLICTED 10 66*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_NEED_JUMBO_FRAME 11 67*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_CREATE_MAC 12 68*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_OPEN_MAC 13 69*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_CREATE_PORT 14 70*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_MAC_NOT_FOUND 15 71*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_OFFLINE_DEV 16 72*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_MORE_DATA 17 73*9087SZhong.Wang@Sun.COM #define FCOE_STATUS_ERROR_VNIC_UNSUPPORT 18 74*9087SZhong.Wang@Sun.COM 75*9087SZhong.Wang@Sun.COM typedef struct fcoe_port_wwn { 76*9087SZhong.Wang@Sun.COM uchar_t wwn[8]; 77*9087SZhong.Wang@Sun.COM } FCOE_PORT_WWN, *PFCOE_PORT_WWN; 78*9087SZhong.Wang@Sun.COM 79*9087SZhong.Wang@Sun.COM typedef struct fcoe_port_attr { 80*9087SZhong.Wang@Sun.COM FCOE_PORT_WWN port_wwn; 81*9087SZhong.Wang@Sun.COM FCOE_UINT8 mac_link_name[MAXLINKNAMELEN]; 82*9087SZhong.Wang@Sun.COM FCOE_UINT8 mac_factory_addr[ETHERADDRL]; 83*9087SZhong.Wang@Sun.COM FCOE_UINT8 mac_current_addr[ETHERADDRL]; 84*9087SZhong.Wang@Sun.COM FCOE_UINT8 port_type; 85*9087SZhong.Wang@Sun.COM FCOE_UINT32 mtu_size; 86*9087SZhong.Wang@Sun.COM FCOE_UINT8 mac_promisc; 87*9087SZhong.Wang@Sun.COM } FCOE_PORT_ATTRIBUTE, *PFCOE_PORT_ATTRIBUTE; 88*9087SZhong.Wang@Sun.COM 89*9087SZhong.Wang@Sun.COM /* 90*9087SZhong.Wang@Sun.COM * macLinkName: mac name with maximum lenth 32 91*9087SZhong.Wang@Sun.COM * portType: 0 (Initiator)/ 1(Target) 92*9087SZhong.Wang@Sun.COM * pwwn: Port WWN 93*9087SZhong.Wang@Sun.COM * nwwn: Nodw WWN 94*9087SZhong.Wang@Sun.COM * promiscous: to enable promisc mode for mac interface 95*9087SZhong.Wang@Sun.COM */ 96*9087SZhong.Wang@Sun.COM FCOE_STATUS FCOE_CreatePort( 97*9087SZhong.Wang@Sun.COM const FCOE_UINT8 *macLinkName, /* maximum len: 32 */ 98*9087SZhong.Wang@Sun.COM FCOE_UINT8 portType, 99*9087SZhong.Wang@Sun.COM FCOE_PORT_WWN pwwn, 100*9087SZhong.Wang@Sun.COM FCOE_PORT_WWN nwwn, 101*9087SZhong.Wang@Sun.COM FCOE_UINT8 promiscusous 102*9087SZhong.Wang@Sun.COM ); 103*9087SZhong.Wang@Sun.COM 104*9087SZhong.Wang@Sun.COM FCOE_STATUS FCOE_DeletePort( 105*9087SZhong.Wang@Sun.COM const FCOE_UINT8 *macLinkName 106*9087SZhong.Wang@Sun.COM ); 107*9087SZhong.Wang@Sun.COM 108*9087SZhong.Wang@Sun.COM /* 109*9087SZhong.Wang@Sun.COM * Make sure to free the memory pointed by portlist 110*9087SZhong.Wang@Sun.COM */ 111*9087SZhong.Wang@Sun.COM FCOE_STATUS FCOE_GetPortList( 112*9087SZhong.Wang@Sun.COM FCOE_UINT32 *port_num, 113*9087SZhong.Wang@Sun.COM FCOE_PORT_ATTRIBUTE **portlist 114*9087SZhong.Wang@Sun.COM ); 115*9087SZhong.Wang@Sun.COM 116*9087SZhong.Wang@Sun.COM #ifdef __cplusplus 117*9087SZhong.Wang@Sun.COM } 118*9087SZhong.Wang@Sun.COM #endif 119*9087SZhong.Wang@Sun.COM 120*9087SZhong.Wang@Sun.COM #endif /* _LIBFCOE_H */ 121