diff options
author | Zhong Wang <Zhong.Wang@Sun.COM> | 2009-03-19 03:03:46 +0800 |
---|---|---|
committer | Zhong Wang <Zhong.Wang@Sun.COM> | 2009-03-19 03:03:46 +0800 |
commit | 2a8164df8a5f42c8a00f10c67d7bc84f80ae9c41 (patch) | |
tree | 5ef9c65f09194743324b20261093e076d4eeea6b /usr/src/lib/libfcoe/common/libfcoe.h | |
parent | bfe6f8f50e1ad7cfc72f4665989dc9e25e82e872 (diff) | |
download | illumos-joyent-2a8164df8a5f42c8a00f10c67d7bc84f80ae9c41.tar.gz |
PSARC/2008/310 FCoE (Fibre Channel over Ethernet) Target
6701027 Need FCoE target for Solaris
6812750 Change in stmf/fct/stmf_sbd needed for support FCoE
Diffstat (limited to 'usr/src/lib/libfcoe/common/libfcoe.h')
-rw-r--r-- | usr/src/lib/libfcoe/common/libfcoe.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/usr/src/lib/libfcoe/common/libfcoe.h b/usr/src/lib/libfcoe/common/libfcoe.h new file mode 100644 index 0000000000..30570205a7 --- /dev/null +++ b/usr/src/lib/libfcoe/common/libfcoe.h @@ -0,0 +1,120 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (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 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _LIBFCOE_H +#define _LIBFCOE_H + +#include <time.h> +#include <wchar.h> +#include <sys/param.h> +#include <sys/ethernet.h> +#include <libnvpair.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * FCOE Port Type + */ +#define FCOE_PORTTYPE_INITIATOR 0 +#define FCOE_PORTTYPE_TARGET 1 + +#define FCOE_MAX_MAC_NAME_LEN 32 +typedef unsigned char FCOE_UINT8; +typedef char FCOE_INT8; +typedef unsigned short FCOE_UINT16; +typedef short FCOE_INT16; +typedef unsigned int FCOE_UINT32; +typedef int FCOE_INT32; + +typedef unsigned int FCOE_STATUS; + +#define FCOE_STATUS_OK 0 +#define FCOE_STATUS_ERROR 1 +#define FCOE_STATUS_ERROR_INVAL_ARG 2 +#define FCOE_STATUS_ERROR_BUSY 3 +#define FCOE_STATUS_ERROR_ALREADY 4 +#define FCOE_STATUS_ERROR_PERM 5 +#define FCOE_STATUS_ERROR_OPEN_DEV 6 +#define FCOE_STATUS_ERROR_WWN_SAME 7 +#define FCOE_STATUS_ERROR_MAC_LEN 8 +#define FCOE_STATUS_ERROR_PWWN_CONFLICTED 9 +#define FCOE_STATUS_ERROR_NWWN_CONFLICTED 10 +#define FCOE_STATUS_ERROR_NEED_JUMBO_FRAME 11 +#define FCOE_STATUS_ERROR_CREATE_MAC 12 +#define FCOE_STATUS_ERROR_OPEN_MAC 13 +#define FCOE_STATUS_ERROR_CREATE_PORT 14 +#define FCOE_STATUS_ERROR_MAC_NOT_FOUND 15 +#define FCOE_STATUS_ERROR_OFFLINE_DEV 16 +#define FCOE_STATUS_ERROR_MORE_DATA 17 +#define FCOE_STATUS_ERROR_VNIC_UNSUPPORT 18 + +typedef struct fcoe_port_wwn { + uchar_t wwn[8]; +} FCOE_PORT_WWN, *PFCOE_PORT_WWN; + +typedef struct fcoe_port_attr { + FCOE_PORT_WWN port_wwn; + FCOE_UINT8 mac_link_name[MAXLINKNAMELEN]; + FCOE_UINT8 mac_factory_addr[ETHERADDRL]; + FCOE_UINT8 mac_current_addr[ETHERADDRL]; + FCOE_UINT8 port_type; + FCOE_UINT32 mtu_size; + FCOE_UINT8 mac_promisc; +} FCOE_PORT_ATTRIBUTE, *PFCOE_PORT_ATTRIBUTE; + +/* + * macLinkName: mac name with maximum lenth 32 + * portType: 0 (Initiator)/ 1(Target) + * pwwn: Port WWN + * nwwn: Nodw WWN + * promiscous: to enable promisc mode for mac interface + */ +FCOE_STATUS FCOE_CreatePort( + const FCOE_UINT8 *macLinkName, /* maximum len: 32 */ + FCOE_UINT8 portType, + FCOE_PORT_WWN pwwn, + FCOE_PORT_WWN nwwn, + FCOE_UINT8 promiscusous +); + +FCOE_STATUS FCOE_DeletePort( + const FCOE_UINT8 *macLinkName +); + +/* + * Make sure to free the memory pointed by portlist + */ +FCOE_STATUS FCOE_GetPortList( + FCOE_UINT32 *port_num, + FCOE_PORT_ATTRIBUTE **portlist +); + +#ifdef __cplusplus +} +#endif + +#endif /* _LIBFCOE_H */ |