/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (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 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_MAC_IMPL_H #define _SYS_MAC_IMPL_H #pragma ident "%Z%%M% %I% %E% SMI" #include #include #ifdef __cplusplus extern "C" { #endif typedef struct mac_multicst_addr_s mac_multicst_addr_t; struct mac_multicst_addr_s { mac_multicst_addr_t *mma_nextp; uint_t mma_ref; uint8_t mma_addr[MAXADDRLEN]; }; typedef struct mac_notify_fn_s mac_notify_fn_t; struct mac_notify_fn_s { mac_notify_fn_t *mnf_nextp; mac_notify_t mnf_fn; void *mnf_arg; }; typedef struct mac_rx_fn_s mac_rx_fn_t; struct mac_rx_fn_s { mac_rx_fn_t *mrf_nextp; mac_rx_t mrf_fn; void *mrf_arg; }; typedef struct mac_txloop_fn_s mac_txloop_fn_t; struct mac_txloop_fn_s { mac_txloop_fn_t *mtf_nextp; mac_txloop_t mtf_fn; void *mtf_arg; }; typedef boolean_t (*mac_unicst_verify_t)(mac_impl_t *, const uint8_t *); typedef boolean_t (*mac_multicst_verify_t)(mac_impl_t *, const uint8_t *); struct mac_impl_s { mac_t *mi_mp; char mi_dev[MAXNAMELEN]; uint_t mi_port; char mi_name[MAXNAMELEN]; ghte_t mi_hte; uint32_t mi_ref; boolean_t mi_destroying; krwlock_t mi_state_lock; uint_t mi_active; krwlock_t mi_data_lock; link_state_t mi_link; uint_t mi_promisc; uint_t mi_devpromisc; uint8_t mi_addr[MAXADDRLEN]; mac_multicst_addr_t *mi_mmap; uint_t mi_addr_length; krwlock_t mi_notify_lock; mac_notify_fn_t *mi_mnfp; krwlock_t mi_rx_lock; mac_rx_fn_t *mi_mrfp; krwlock_t mi_txloop_lock; mac_txloop_fn_t *mi_mtfp; krwlock_t mi_resource_lock; mac_resource_add_t mi_resource_add; void *mi_resource_add_arg; kstat_t *mi_ksp; mac_unicst_verify_t mi_unicst_verify; mac_multicst_verify_t mi_multicst_verify; kmutex_t mi_activelink_lock; boolean_t mi_activelink; }; extern void mac_init(void); extern int mac_fini(void); extern void mac_stat_create(mac_impl_t *); extern void mac_stat_destroy(mac_impl_t *); #ifdef __cplusplus } #endif #endif /* _SYS_MAC_IMPL_H */