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

📄 atm.h

📁 思科路由器仿真器,用来仿7200系列得,可以在电脑上模拟路由器-Cisco router simulator, used to fake a 7200 series can be simulated
💻 H
字号:
/* * Cisco 7200 (Predator) simulation platform. * Copyright (c) 2005,2006 Christophe Fillot (cf@utc.fr) * * ATM definitions. */#ifndef __ATM_H__#define __ATM_H__#include <pthread.h>#include "utils.h"#include "mempool.h"#include "net_io.h"/* ATM payload size */#define ATM_HDR_SIZE           5#define ATM_PAYLOAD_SIZE       48#define ATM_CELL_SIZE          (ATM_HDR_SIZE + ATM_PAYLOAD_SIZE)#define ATM_AAL5_TRAILER_SIZE  8#define ATM_AAL5_TRAILER_POS   (ATM_CELL_SIZE - ATM_AAL5_TRAILER_SIZE)/* ATM header structure */#define ATM_HDR_VPI_MASK       0xFFF00000#define ATM_HDR_VPI_SHIFT      20#define ATM_HDR_VCI_MASK       0x000FFFF0#define ATM_HDR_VCI_SHIFT      4#define ATM_HDR_PTI_MASK       0x0000000E#define ATM_HDR_PTI_SHIFT      1/* PTI bits */#define ATM_PTI_EOP            0x00000002  /* End of packet */#define ATM_PTI_CONGESTION     0x00000004  /* Congestion detected */#define ATM_PTI_NETWORK        0x00000008  /* Network traffic *//* VP-level switch table */typedef struct atmsw_vp_conn atmsw_vp_conn_t;struct atmsw_vp_conn {   atmsw_vp_conn_t *next;   netio_desc_t *input,*output;   u_int vpi_in,vpi_out;   m_uint64_t cell_cnt;};/* VC-level switch table */typedef struct atmsw_vc_conn atmsw_vc_conn_t;struct atmsw_vc_conn {   atmsw_vc_conn_t *next;   netio_desc_t *input,*output;   u_int vpi_in,vci_in;   u_int vpi_out,vci_out;   m_uint64_t cell_cnt;};/* Virtual ATM switch table */#define ATMSW_NIO_MAX       32#define ATMSW_VP_HASH_SIZE  256#define ATMSW_VC_HASH_SIZE  1024typedef struct atmsw_table atmsw_table_t;struct atmsw_table {   char *name;   pthread_mutex_t lock;   mempool_t mp;   m_uint64_t cell_drop;   atmsw_vp_conn_t *vp_table[ATMSW_VP_HASH_SIZE];   atmsw_vc_conn_t *vc_table[ATMSW_VC_HASH_SIZE];};#define ATMSW_LOCK(t)   pthread_mutex_lock(&(t)->lock)#define ATMSW_UNLOCK(t) pthread_mutex_unlock(&(t)->lock)/* Compute HEC field for ATM header */m_uint8_t atm_compute_hec(m_uint8_t *cell_header);/* Insert HEC field into an ATM header */void atm_insert_hec(m_uint8_t *cell_header);/* Update the CRC on the data block one byte at a time */m_uint32_t atm_update_crc(m_uint32_t crc_accum,m_uint8_t *ptr,int len);/* Initialize ATM code (for HEC checksums) */void atm_init(void);/* Acquire a reference to an ATM switch (increment reference count) */atmsw_table_t *atmsw_acquire(char *name);/* Release an ATM switch (decrement reference count) */int atmsw_release(char *name);/* Create a virtual switch table */atmsw_table_t *atmsw_create_table(char *name);/* Create a VP switch connection */int atmsw_create_vpc(atmsw_table_t *t,char *nio_input,u_int vpi_in,                     char *nio_output,u_int vpi_out);/* Delete a VP switch connection */int atmsw_delete_vpc(atmsw_table_t *t,char *nio_input,u_int vpi_in,                     char *nio_output,u_int vpi_out);/* Create a VC switch connection */int atmsw_create_vcc(atmsw_table_t *t,                     char *input,u_int vpi_in,u_int vci_in,                     char *output,u_int vpi_out,u_int vci_out);/* Delete a VC switch connection */int atmsw_delete_vcc(atmsw_table_t *t,                     char *nio_input,u_int vpi_in,u_int vci_in,                     char *nio_output,u_int vpi_out,u_int vci_out);/* Save the configuration of an ATM switch */void atmsw_save_config(atmsw_table_t *t,FILE *fd);/* Save configurations of all ATM switches */void atmsw_save_config_all(FILE *fd);/* Delete an ATM switch */int atmsw_delete(char *name);/* Delete all ATM switches */int atmsw_delete_all(void);/* Start a virtual ATM switch */int atmsw_start(char *filename);#endif

⌨️ 快捷键说明

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