summaryrefslogtreecommitdiff
path: root/usr/src/lib/libfcoe/common/libfcoe.h
diff options
context:
space:
mode:
authorZhong Wang <Zhong.Wang@Sun.COM>2009-03-19 03:03:46 +0800
committerZhong Wang <Zhong.Wang@Sun.COM>2009-03-19 03:03:46 +0800
commit2a8164df8a5f42c8a00f10c67d7bc84f80ae9c41 (patch)
tree5ef9c65f09194743324b20261093e076d4eeea6b /usr/src/lib/libfcoe/common/libfcoe.h
parentbfe6f8f50e1ad7cfc72f4665989dc9e25e82e872 (diff)
downloadillumos-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.h120
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 */