|
Packit |
eace71 |
/*
|
|
Packit |
eace71 |
* Copyright (c) 2009-2011, Broadcom Corporation
|
|
Packit |
eace71 |
* Copyright (c) 2014, QLogic Corporation
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* Written by: Benjamin Li (benli@broadcom.com)
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* All rights reserved.
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* Redistribution and use in source and binary forms, with or without
|
|
Packit |
eace71 |
* modification, are permitted provided that the following conditions
|
|
Packit |
eace71 |
* are met:
|
|
Packit |
eace71 |
* 1. Redistributions of source code must retain the above copyright
|
|
Packit |
eace71 |
* notice, this list of conditions and the following disclaimer.
|
|
Packit |
eace71 |
* 2. Redistributions in binary form must reproduce the above copyright
|
|
Packit |
eace71 |
* notice, this list of conditions and the following disclaimer in the
|
|
Packit |
eace71 |
* documentation and/or other materials provided with the distribution.
|
|
Packit |
eace71 |
* 3. All advertising materials mentioning features or use of this software
|
|
Packit |
eace71 |
* must display the following acknowledgement:
|
|
Packit |
eace71 |
* This product includes software developed by Adam Dunkels.
|
|
Packit |
eace71 |
* 4. The name of the author may not be used to endorse or promote
|
|
Packit |
eace71 |
* products derived from this software without specific prior
|
|
Packit |
eace71 |
* written permission.
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
Packit |
eace71 |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
Packit |
eace71 |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
eace71 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
Packit |
eace71 |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
eace71 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
Packit |
eace71 |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
eace71 |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
Packit |
eace71 |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
Packit |
eace71 |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
Packit |
eace71 |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
* nic_vlan.h - uIP user space stack VLAN utilities
|
|
Packit |
eace71 |
*
|
|
Packit |
eace71 |
*/
|
|
Packit |
eace71 |
#ifndef __NIC_VLAN_H__
|
|
Packit |
eace71 |
#define __NIC_VLAN_H__
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
#include <sys/types.h>
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
/* Used to hold entries in the vlan table */
|
|
Packit |
eace71 |
struct vlan_entry {
|
|
Packit |
eace71 |
char vlan_iface_name[16];
|
|
Packit |
eace71 |
char phy_iface_name[16];
|
|
Packit |
eace71 |
uint16_t vlan_id;
|
|
Packit |
eace71 |
};
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
struct vlan_handle {
|
|
Packit |
eace71 |
struct vlan_entry *entries;
|
|
Packit |
eace71 |
uint32_t num_of_entries;
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
uint32_t outstanding_found_handles;
|
|
Packit |
eace71 |
};
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
struct vlan_found_entry {
|
|
Packit |
eace71 |
#define VLAN_ENTRY_FOUND 1
|
|
Packit |
eace71 |
#define VLAN_ENTRY_NOT_FOUND 0
|
|
Packit |
eace71 |
uint8_t found;
|
|
Packit |
eace71 |
};
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
struct vlan_found_handle {
|
|
Packit |
eace71 |
struct vlan_handle *handle;
|
|
Packit |
eace71 |
uint32_t num_of_entries;
|
|
Packit |
eace71 |
struct vlan_found_entry *entries;
|
|
Packit |
eace71 |
};
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
/*******************************************************************************
|
|
Packit |
eace71 |
* Function Prototypes
|
|
Packit |
eace71 |
******************************************************************************/
|
|
Packit |
eace71 |
void init_vlan_table(struct vlan_handle *handle);
|
|
Packit |
eace71 |
int capture_vlan_table(struct vlan_handle *handle);
|
|
Packit |
eace71 |
void release_vlan_table(struct vlan_handle *handle);
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
int find_phy_using_vlan_interface(struct vlan_handle *handle,
|
|
Packit |
eace71 |
char *vlan_iface_name,
|
|
Packit |
eace71 |
char **phy_iface_name, uint16_t *vlan_id);
|
|
Packit |
eace71 |
int find_vlans_using_phy_interface(struct vlan_handle *handle,
|
|
Packit |
eace71 |
struct vlan_found_handle *found_handle,
|
|
Packit |
eace71 |
char *phy_iface_name);
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
int init_vlan_found_handle(struct vlan_found_handle *found_handle,
|
|
Packit |
eace71 |
struct vlan_handle *handle);
|
|
Packit |
eace71 |
void release_vlan_found_handle(struct vlan_found_handle *found_handle);
|
|
Packit |
eace71 |
|
|
Packit |
eace71 |
int valid_vlan(short int vlan);
|
|
Packit |
eace71 |
#endif /* __NIC_VLAN_H__ */
|