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

📄 cisco_card.h

📁 思科路由器仿真器,用来仿7200系列得,可以在电脑上模拟路由器
💻 H
字号:
/* * Cisco router simulation platform. * Copyright (c) 2007 Christophe Fillot (cf@utc.fr) * * Generic Cisco card routines and definitions. */#ifndef __CISCO_CARD_H__#define __CISCO_CARD_H__#include <pthread.h>#include "utils.h"#include "net.h"#include "net_io.h"#include "cisco_eeprom.h"#define CISCO_CARD_MAX_WIC  8#define CISCO_CARD_MAX_SUBSLOTS  16/* Card types */enum {   CISCO_CARD_TYPE_UNDEF = 0,   CISCO_CARD_TYPE_PA,   CISCO_CARD_TYPE_NM,   CISCO_CARD_TYPE_WIC,};/* Card flags */enum {   CISCO_CARD_FLAG_OVERRIDE = 1,};/* Forward declarations */struct cisco_card;struct cisco_card_driver;/* Prototype of card driver initialization function */typedef int (*cisco_card_init_fn)(vm_instance_t *vm,struct cisco_card *card);/* Prototype of card driver shutdown function */typedef int (*cisco_card_shutdown_fn)(vm_instance_t *vm,                                      struct cisco_card *card);/* Prototype of card NIO get sub-slot info function */typedef int (*cisco_card_get_sub_info_fn)(vm_instance_t *vm,struct cisco_card *card,                              u_int port_id,                              struct cisco_card_driver ***drv_array,                              u_int *subcard_type);/* Prototype of card NIO set function */typedef int (*cisco_card_set_nio_fn)(vm_instance_t *vm,struct cisco_card *card,                                     u_int port_id,netio_desc_t *nio);/* Prototype of card NIO unset function */typedef int (*cisco_card_unset_nio_fn)(vm_instance_t *vm,                                       struct cisco_card *card,                                       u_int port_id);/* Prototype of card NIO show info function */typedef int (*cisco_card_show_info_fn)(vm_instance_t *vm,                                       struct cisco_card *card);/* Cisco NIO binding to a slot/port */struct cisco_nio_binding {   netio_desc_t *nio;   u_int port_id,orig_port_id;   struct cisco_nio_binding *prev,*next;};/* Generic Cisco card driver */struct cisco_card_driver {   char *dev_type;   int supported;   int wic_slots;   cisco_card_init_fn card_init;   cisco_card_shutdown_fn card_shutdown;   cisco_card_get_sub_info_fn card_get_sub_info;   cisco_card_set_nio_fn card_set_nio;   cisco_card_unset_nio_fn card_unset_nio;   cisco_card_show_info_fn card_show_info;};/* Generic Cisco card */struct cisco_card {   char *dev_name;                       /* Device name */   char *dev_type;                       /* Device Type */   u_int card_type;                      /* Card type (NM,PA,WIC,...) */   u_int card_flags;                     /* Card flags */   u_int card_id;                        /* Card ID (slot or sub-slot) */   u_int slot_id,subslot_id;             /* Slot and Sub-slot ID */   struct cisco_eeprom eeprom;           /* EEPROM */   struct pci_bus *pci_bus;              /* PCI bus */   struct cisco_card_driver *driver;     /* Driver */   void *drv_info;                       /* Private driver info */   struct cisco_nio_binding *nio_list;   /* NIO bindings to ports */   struct cisco_card *parent;            /* Parent card */   struct cisco_card *sub_slots[CISCO_CARD_MAX_SUBSLOTS];   /* Sub-slots */};/* Set EEPROM definition for the specified Cisco card */int cisco_card_set_eeprom(vm_instance_t *vm,struct cisco_card *card,                          const struct cisco_eeprom *eeprom);/* Unset EEPROM definition */int cisco_card_unset_eeprom(struct cisco_card *card);/* Check if a card has a valid EEPROM defined */int cisco_card_check_eeprom(struct cisco_card *card);/* Get slot info */struct cisco_card *vm_slot_get_card_ptr(vm_instance_t *vm,u_int slot_id);/* Check if a slot has an active card */int vm_slot_active(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Set a flag for a card */int vm_slot_set_flag(vm_instance_t *vm,u_int slot_id,u_int port_id,u_int flag);/* Add a slot binding */int vm_slot_add_binding(vm_instance_t *vm,char *dev_type,                        u_int slot_id,u_int port_id);/* Remove a slot binding */int vm_slot_remove_binding(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Add a network IO binding */int vm_slot_add_nio_binding(vm_instance_t *vm,u_int slot_id,u_int port_id,                            char *nio_name);/* Remove a NIO binding */int vm_slot_remove_nio_binding(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Remove all NIO bindings for the specified slot (sub-slots included) */int vm_slot_remove_all_nio_bindings(vm_instance_t *vm,u_int slot_id);/* Enable a Network IO descriptor for the specified slot */int vm_slot_enable_nio(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Disable Network IO descriptor for the specified slot */int vm_slot_disable_nio(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Enable all NIO for the specified slot (sub-slots included) */int vm_slot_enable_all_nio(vm_instance_t *vm,u_int slot_id);/* Disable all NIO for the specified slot (sub-slots included) */int vm_slot_disable_all_nio(vm_instance_t *vm,u_int slot_id);/* Initialize the specified slot (sub-slots included) */int vm_slot_init(vm_instance_t *vm,u_int slot_id);/* Initialize all slots of a VM */int vm_slot_init_all(vm_instance_t *vm);/* Shutdown the specified slot (sub-slots included) */int vm_slot_shutdown(vm_instance_t *vm,u_int slot_id);/* Shutdown all slots of a VM */int vm_slot_shutdown_all(vm_instance_t *vm);/* Show info about the specified slot (sub-slots included) */int vm_slot_show_info(vm_instance_t *vm,u_int slot_id);/* Show info about all slots */int vm_slot_show_all_info(vm_instance_t *vm);/* Check if the specified slot has a valid EEPROM defined */int vm_slot_check_eeprom(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Returns the EEPROM data of the specified slot */struct cisco_eeprom *vm_slot_get_eeprom(vm_instance_t *vm,u_int slot_id,u_int port_id);/* Save config for the specified slot (sub-slots included) */int vm_slot_save_config(vm_instance_t *vm,u_int slot_id,FILE *fd);/* Save config for all slots */int vm_slot_save_all_config(vm_instance_t *vm,FILE *fd);/* Show slot drivers */int vm_slot_show_drivers(vm_instance_t *vm);/* Create a Network Module (command line) */int vm_slot_cmd_create(vm_instance_t *vm,char *str);/* Add a Network IO descriptor binding (command line) */int vm_slot_cmd_add_nio(vm_instance_t *vm,char *str);#endif

⌨️ 快捷键说明

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