⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eth_switch.h

📁 思科路由器仿真器,用来仿7200系列得,可以在电脑上模拟路由器
💻 H
字号:
/* * Cisco router simulation platform. * Copyright (c) 2006 Christophe Fillot (cf@utc.fr) * * Virtual Ethernet switch definitions. */#ifndef __ETH_SWITCH_H__#define __ETH_SWITCH_H__#include <pthread.h>#include "utils.h"#include "net.h"#include "net_io.h"/* Hash entries for the MAC address table */#define ETHSW_HASH_SIZE  4096/* Maximum port number */#define ETHSW_MAX_NIO    64/* Maximum packet size */#define ETHSW_MAX_PKT_SIZE  2048/* Port types: access or 802.1Q */enum {   ETHSW_PORT_TYPE_ACCESS = 1,   ETHSW_PORT_TYPE_DOT1Q,   ETHSW_PORT_TYPE_ISL,};/* Received packet */typedef struct ethsw_packet ethsw_packet_t;struct ethsw_packet {   u_char *pkt;   ssize_t pkt_len;   netio_desc_t *input_port;   u_int input_vlan;   int input_tag;};/* MAC address table entry */typedef struct ethsw_mac_entry ethsw_mac_entry_t;struct ethsw_mac_entry {   netio_desc_t *nio;   n_eth_addr_t mac_addr;   m_uint16_t vlan_id;};/* Virtual Ethernet switch */typedef struct ethsw_table ethsw_table_t;struct ethsw_table {   char *name;   pthread_mutex_t lock;   int debug;      /* Virtual Ports */   netio_desc_t *nio[ETHSW_MAX_NIO];   /* MAC address table */   ethsw_mac_entry_t mac_addr_table[ETHSW_HASH_SIZE];};/* Packet input vector */typedef void (*ethsw_input_vector_t)(ethsw_table_t *t,ethsw_packet_t *sp,                                     netio_desc_t *output_port);/* "foreach" vector */typedef void (*ethsw_foreach_entry_t)(ethsw_table_t *t,                                      ethsw_mac_entry_t *entry,                                      void *opt);#define ETHSW_LOCK(t)   pthread_mutex_lock(&(t)->lock)#define ETHSW_UNLOCK(t) pthread_mutex_unlock(&(t)->lock)/* Acquire a reference to an Ethernet switch (increment reference count) */ethsw_table_t *ethsw_acquire(char *name);/* Release an Ethernet switch (decrement reference count) */int ethsw_release(char *name);/* Create a virtual ethernet switch */ethsw_table_t *ethsw_create(char *name);/* Add a NetIO descriptor to a virtual ethernet switch */int ethsw_add_netio(ethsw_table_t *t,char *nio_name);/* Remove a NetIO descriptor from a virtual ethernet switch */int ethsw_remove_netio(ethsw_table_t *t,char *nio_name);/* Clear the MAC address table */int ethsw_clear_mac_addr_table(ethsw_table_t *t);/* Iterate over all entries of the MAC address table */int ethsw_iterate_mac_addr_table(ethsw_table_t *t,ethsw_foreach_entry_t cb,                                 void *opt_arg);/* Set port as an access port */int ethsw_set_access_port(ethsw_table_t *t,char *nio_name,u_int vlan_id);/* Set port as a 802.1q trunk port */int ethsw_set_dot1q_port(ethsw_table_t *t,char *nio_name,u_int native_vlan);/* Save the configuration of a switch */void ethsw_save_config(ethsw_table_t *t,FILE *fd);/* Save configurations of all Ethernet switches */void ethsw_save_config_all(FILE *fd);/* Delete a virtual ethernet switch */int ethsw_delete(char *name);/* Delete all virtual ethernet switches */int ethsw_delete_all(void);/* Start a virtual Ethernet switch */int ethsw_start(char *filename);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -