h3c smart link - 一个端口down 另一个起来

本文介绍了H3C S3100 EI交换机的具体配置步骤, 包括禁用STP协议, 设置Smart-Link组及端口角色, 并启用了端口的智能刷新功能。
#ifndef _SMARTLINK_TYPEDEF_H_ #define _SMARTLINK_TYPEDEF_H_ #endif #include "lib/tppacket.h" //#define DBG_MAJOR(fmt, args...) do{printf("[DBG_MAJOR=====] func %s,line %d: "fmt"\n",__FUNCTION__,__LINE__,##args);}while(0); //#define DBG_ERR(fmt, args...) do{printf("[DBG_ERR=====] func %s,line %d: "fmt"\n",__FUNCTION__,__LINE__,##args);}while(0); //#define DBG(fmt, args...) do{printf("[DBG=====] func %s,line %d: "fmt"\n",__FUNCTION__,__LINE__,##args);}while(0); #define DBG_MAJOR #define DBG_ERR #define DBG #define SMARTLINK_UP_IDX_RANGE (8 + 96) #define PAL_MQ_WAIT_FOREVER (-1) #define TPIMI_REGISTER_COMMAND(funcName) imi_function_register(IMI_TYPE_SMARTLINK, #funcName, (funcName)) #define PFM_IF_FAIL_RET_VAL(expression, ret) \ do{\ if ( OK != expression ){\ return ret;\ }\ }while(0) #define PFM_IF_FAIL_RET(expression) \ do{\ int __rv;\ __rv = (expression);\ if ( OK != __rv ){\ return __rv;\ }\ }while(0) #define PFM_ENSURE_RET_VOID(exp) \ do{\ if (!(exp)){\ DBG_ERR("Ensure %s failed.", #exp);\ return;\ }\ }while(0) /* goto done */ #define PFM_IF_FAIL_DONE(ret, expression) \ do{\ ret = (expression);\ if ( OK != ret ){\ DBG_ERR("E - %d call %s failed.",ret,#expression);\ goto done;\ }\ }while(0) #define FLUSH_TYPE_SEND 0x01 #define FLUSH_TYPE_RSP 0x02 #define MAC_LENGTH 6 #define PORT_LENGTH 2 #define FLASH_TABLE_LENGTH 512 #define MAX_SMARTLINK_GROUP 8 #define PORT_SLAVE 0 #define PORT_MASTER (1) #define NODE_ID_LEN (6) #define SMARTLINK_MAX_PKT_LEN (64) //目前只需要64字节即可,后续如果有改动则再外加 #define MAX_PORT_PER_RING (2) #define MAX_SMARTLINK_RING (getSmartlinkRingMaxNum()) //ringId从1 开始 #define SMARTLINK_RING_RUNNING_LIMIT (32) // 最多同时运行32个环 #define SMARTLINK_STACK_SIZE (4*8192) #define SMARTLINK_QUEUE_SIZE (256) #define SMARTLINK_MAX_INSTANCE (getMstpInstanceMaxNum()) #define FAILED (1) #define NON_FAILED (0) #define NO_ACTION #define G_P groupId,port #define SMARTLINK_PKT_FS (1<<0) #define SMARTLINK_PKT_EVT (1<<1) #define SMARTLINK_PKT_SF (1<<2) #define SMARTLINK_PKT_MS (1<<3) #define SMARTLINK_PKT_NR (1<<4) #define SMARTLINK_PKT_RB (1<<5) #define SMARTLINK_PKT_DNF (1<<6) //dnf #define SMARTLINK_PKT_BPR (1<<7) //用于说明端口是否为右端口 #define SMARTLINK_BRP_OFFSET (7) #define SMARTLINK_MAX_UTF8_LEN (3) #define SMARTLINK_DES_LEN (16* SMARTLINK_MAX_UTF8_LEN) #define SMARTLINK_DEFAULT_VER (1) #define SMARTLINK_DEFAULT_HOLD (0) #define SMARTLINK_DEFAULT_WTB (7) #define SMARTLINK_DEFAULT_WTR (5) #define SMARTLINK_DEFAULT_GUARD (200) #define SMARTLINK_DEFAULT_MEL (7) #define SMARTLINK_DEFAULT_GUARD_TIME (200) #define SMARTLINK_MAX_GUARD_TIME (200) #define SMARTLINK_MIN_GUARD_TIME (1) #define SMARTLINK_DEFAULT_HOLD_TIME (0) #define SMARTLINK_MAX_HOLD_TIME (100) #define SMARTLINK_MIN_HOLD_TIME (0) #define SMARTLINK_DEFAULT_WTR_TIME (5) #define SMARTLINK_MAX_WTR_TIME (12) #define SMARTLINK_MIN_WTR_TIME (1) #define SMARTLINK_DEFAULT_TC_INTERVAL (2) #define SMARTLINK_MAX_TC_INTERVAL (600) #define SMARTLINK_MIN_TC_INTERVAL (1) #define SMARTLINK_DEFAULT_TC_THRESHOLD (3) #define SMARTLINK_MAX_TC_THRESHOLD (255) #define SMARTLINK_MIN_TC_THRESHOLD (1) #define SMARTLINK_DEFAULT_VC (0) #define RING_ID_VALID(id) (id >= 1 || id <= MAX_SMARTLINK_RING) #define SMARTLINK_ID_ITER(id) for (id = 1; id <= MAX_SMARTLINK_RING; id++) #define SMARTLINK_MAX_ID_LEN (256/8) #define SMARTLINK_ID_BIT_HIT(b, d) do{d[((b) / 8)] |= (1<<((b)%8));}while(0) #define SMARTLINK_ID_BIT_CLR(b, d) do{d[((b) / 8)] &= ~(1<<((b)%8));}while(0) #define SMARTLINK_ID_BIT_HAS_ID(b, d) ((d[b/8] & (1<<(b%8))) != 0) #define SMARTLINK_ID_BIT_ITEM(id, d) \ SMARTLINK_ID_ITER(id)\ if(SMARTLINK_ID_BIT_HAS_ID(id, d)) #ifndef SMARTLINK_TRAP_PROTECT #define SMARTLINK_TRAP_PROTECT #endif // smlk状态机状态数据结构 typedef enum { SMARTLINK_DEFAULT, SMARTLINK_UNINIT, SMARTLINK_SLAVE, SMARTLINK_DOWN, SMARTLINK_BACK_TIME, SMARTLINK_MAX_STATUS }SMARTLINK_STATUS; // msg类型 typedef enum { SMARTLINK_MSG_PACKET, SMARTLINK_STATE_DEFAULT, SMARTLINK_MASTER_PORT_UP, SMARTLINK_SLAVE_PORT_UP, SMARTLINK_MASTER_PORT_DOWN, SMARTLINK_SLAVE_PORT_DOWN, SMARTLINK_FAIL_BACK, SMARTLINK_MSG_END }SMARTLINK_MSG_TYPE; /* Smart Link组配置数据结构 */ typedef struct uc_smartlink_t { int groupId; // 组号 int enabled; // 是否启用此实例 int instanceId; // [KEY] 实例ID (1~10) int masterPort; // 主端口编号(如10表示GE1/0/10) int slavePort; // 备用端口编号 int failBack; // 抢占模式:0-关闭,1-开启 int failBackTime; // 抢占延迟时间(秒),典型值为30 int ctrlVlan; // 控制VLAN }SMARTLINK_CFG_T; typedef struct uc_smart_link_Glb_t { int enable; int flush_send; int flush_receive; int rcv_vlan[MAX_SMARTLINK_GROUP+1];/* 初始或空vlan为 -1*/ }SMARTLINK_Glb_CFG_T; // typedef struct erps_msg // { // SMARTLINK_MSG_TYPE type; // TP_PACKET_T packet; // int groupId; // int port; // user_port up; // }SMARTLINK_MSG; typedef struct smart_link_srvc_msg_s { SMARTLINK_MSG_TYPE type; // TP_PACKET_T packet; SMARTLINK_CFG_T cfg; }SMARTLINK_SRVC_MSG_T; // smlk线程间消息队列数据结构 typedef struct smartLink_msg { SMARTLINK_MSG_TYPE type; TP_PACKET_T packet; SMARTLINK_CFG_T cfg; user_port up; }SMARTLINK_MSG; typedef enum { SMARTLINK_GROUP_NONE, SMARTLINK_GROUP_MASTER, SMARTLINK_GROUP_SLAVE, }SMARTLINK_ROLE; typedef struct smartlink_packet_data { UINT8 destMAC[MAC_LENGTH]; UINT8 srcMAC[MAC_LENGTH]; UINT8 ctrlType; UINT8 ctrlVersion; UINT8 SWID[MAC_LENGTH]; UINT16 ctrlVlan; UINT8 authMode; UINT8 passWord[16]; char map[FLASH_TABLE_LENGTH]; UINT8 FCS[4]; }SMARTLINK_PACKET_DATA; typedef struct rtd_smart_link_t { /* groupid == -1 表示为创建group */ int groupid; SMARTLINK_STATUS status; SMARTLINK_CFG_T cfg; }RTD_SMARTLINK_T; typedef struct smartLink_flush_table { char table[FLASH_TABLE_LENGTH]; }SMARTLINK_MAC_PORT;
最新发布
10-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值