b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * CDDL HEADER START
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The contents of this file are subject to the terms of the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Common Development and Distribution License (the "License").
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * You may not use this file except in compliance with the License.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * or http://www.opensolaris.org/os/licensing.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * See the License for the specific language governing permissions
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * and limitations under the License.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * When distributing Covered Code, include this CDDL HEADER in each
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * If applicable, add the following below this CDDL HEADER, with the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * fields enclosed by brackets "[]" replaced with your own identifying
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * information: Portions Copyright [yyyy] [name of copyright owner]
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * CDDL HEADER END
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Use is subject to license terms.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifndef _SYS_SIMNET_IMPL_H
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _SYS_SIMNET_IMPL_H
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#include <sys/types.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/list.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/mutex.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/mac.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/net80211.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <inet/wifi_ioctl.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifdef __cplusplus
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaiextern "C" {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define MAX_SIMNET_ESSCONF 25 /* Max num of WiFi scan results */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define MAX_ESSLIST_ARGS 10 /* Max num of ESS list arguments */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define MAX_ESSLIST_ARGLEN 50 /* Max ESS list argument len */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct simnet_dev;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct simnet_wifidev {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct simnet_dev *swd_sdev;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai wl_essid_t swd_essid;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai wl_bssid_t swd_bssid;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai wl_rssi_t swd_rssi; /* signal strength */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai wl_linkstatus_t swd_linkstatus;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int swd_esslist_num;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai wl_ess_conf_t *swd_esslist[MAX_SIMNET_ESSCONF];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} simnet_wifidev_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct simnet_stats {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t rbytes;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t obytes;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t xmit_errors;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t xmit_count;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t recv_count;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t recv_errors;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} simnet_stats_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct simnet_dev {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai list_node_t sd_listnode;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_type; /* WiFi, Ethernet etc. */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai datalink_id_t sd_link_id;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy zoneid_t sd_zoneid; /* zone where created */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct simnet_dev *sd_peer_dev; /* Attached peer, if any */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_flags; /* Device flags SDF_* */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_refcount;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai /* Num of active threads using the device */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_threadcount;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai kcondvar_t sd_threadwait;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai mac_handle_t sd_mh;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai simnet_wifidev_t *sd_wifidev;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai boolean_t sd_promisc;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai kmutex_t sd_instlock;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai /* Num of multicast addresses stored in sd_mcastaddrs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_mcastaddr_count;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai /* Multicast address list stored in single buffer */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t *sd_mcastaddrs;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint_t sd_mac_len;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uchar_t sd_mac_addr[MAXMACADDRLEN];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai simnet_stats_t sd_stats;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} simnet_dev_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/* Simnet device flags */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define SDF_SHUTDOWN 0x00000001 /* Device shutdown, no new ops */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define SDF_STARTED 0x00000002 /* Device started, allow ops */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define SIMNET_MAX_MTU 9000 /* Max MTU supported by simnet driver */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifdef __cplusplus
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai}
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYS_SIMNET_IMPL_H */