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