xref: /titanic_53/usr/src/lib/libfcoe/common/libfcoe.h (revision 2a8164df8a5f42c8a00f10c67d7bc84f80ae9c41)
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