- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vlan源代码学习
一.关于全局变量g_Vlan_TAB:
此全局变量用于存放当前的交换机上的所有vlan信息。
1.首先他的第一个字段是:EventQ_T eventQ;结构体EventQ_T 的原形是:typedef struct EventQ_S***EventQ_T;
分析:
(1) 整个程序维护一个事件链表,每个节点存放有:指向下一个节点的指针,指向事件函数的指针,事件函数的优先级;三个属性段。
2.他的第二个字段是:VlanEntry *pVlanTAB[MAX_VID_NUM],其中MAX_VLAN_NUM的值是4096,其中存储的是交换机所能容纳的最大的vlan数目;此数组的下标即vlan的vlan-id,如相应的vlan存在,指针指向vlan信息块的地址,否则为空。
分析:
他有六个属性字段,第一个是usVID:用于存放它自己的vlanID号;第二个字段是 szVlanName:用于存放vlan的名字;第三个字段是portMap:用于存放属于这个vlan的端口的端口列表;第四个字段是pAssoVlan;第五个字段是usRegAdmCtrl;第六个字段是:usTxUnTag;
3.第三个字段是pSwPortTab[MAX_PHYPORT_NUM+MAX_LAG_NUM+1],其是指向交换机端口的指针数组;其中存放的是交换机各个端口的状态及信息;
4.第四个字段是rwLock,他用于对全局变量读写的锁定;
5.第五个字段是evtLock,用于对事件的锁定;
二.vlan的创建:
命令: vlan vlan-id
功能:创建vlan并且进入vlan配置模式,在vlan模式中,用户可以配置vlan名称和为该vlan分配交换机端口;
源码命令: CLI (vlan_cli,
vlan_cli_cmd,
vlan 1-4094 (name WORD|),
Vlan Commands$VLAN命令,
Vlan ID 1-4094$Vlan标示符 1-4094,
Vlan name$VLAN描述, Name$描述)
源码分析:
1.首先调用GLI_GET_INTEGER_RANGE()宏;
2.然后由GLI_GET_INTEGER_RANGE()宏调用cmd_str2int()将vlanId号字符串转换为相应的数值,并将数值返回;
3.然后由GLI_GET_INTEGER_RANGE()宏检测返回的数值,并作出相应的判断;
4.然后再调用fetchConfigVlan()并将vlanId号作为传入参数进行检测;
5.然后再由fetchConfigVlan()调用getVlanType()取得此vlanId号对应的类型,因为创建vlan的时候此vlan还不存在,函数不会改变他的类型,所以他得到的类型是VLAN_TYPE_ALL,然后就直接调用函数createVlan(),并传入类型VLAN_TYPE_UNIVERSAL;
6.而对于函数createVlan():
6.1.此函数首先是加锁;
6.2.然后根据类型调用相应的函数,因为创建vlan的时候传入的类型为VLAN_TYPE_UNIVERSAL,故调用createUniversalVlan()创建vlan, 6.2.1.对于函数createUniversalVlan():因为刚创建vlan的时候,此vlan暂时不存在,其相应的指针都为空,故其将会跳过函数setUniversalVlan()而直接调用函数createOneVlan()来创建vlan,其类型为VLAN_TYPE_UNIVERSAL;在函数createOneVlan()中,其先分配vlan信息记录块的空间,然后将其初始化,接着调用函数drvInsertVlan()在交换机上创建vlan,最后将此段空间和全局变量g-vlanTAB联系起来,并在全局变量中填充相关的vlan信息(如端口列表,事件列表等);
6.2.2.在函数createUniversalVlan()中接下来是遍历交换机上的所有端口,跳过类型为PORT_TYPE_AGG_MEMBER和PORT_TYPE_ROUTER的端口,在其他的端口类型中,如果端口的工作模式为Trunk模式则处理方式为:如果端口的pVID等于当前的vlan-ID则就将当端口加入到当前vlan中去;如果端口的允许通过的vlan链表中有当前的vlan-ID号,那么也将端口加入到当前vlan中;其他情况就跳过;如果端口的工作模式为Access模式其处理方式为:如果端口的pVID等于当前的vlan-ID号,那么就将端口加入到当前vlan中,否则就跳过;
6.2.3.在函数cr
您可能关注的文档
- M6U1学案三(Wordpower-Task).doc
- M8206开局指导.doc
- mesh200的使用方法.doc
- MicrosoftWord数学.doc
- minitab运用课程培训教材V1.0.ppt
- ModeloEntidadRelación.ppt
- Module3Unit1_冀光凤.ppt
- MPA联考真题 2007 .doc
- MSA培训2.ppt
- mysql存储过程知识点.doc
- 抢分秘籍10 带电粒子电场中的直线运动、偏转和交变电电场中的应用(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(解析版) -2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍13 电磁感应中的动力学、能量和动量问题(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍16 振动图像与波动图像的综合应用(三大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍15 光的折射、全反射的综合应用(二大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
最近下载
- 2024年信息系统监理师考试真题及答案.docx VIP
- 第17课 辛亥革命与中华民国的建立 课件(共25张PPT)-中职高一上学期高教版(2025)中国历史全一册(含音频+视频).pptx VIP
- 基于区块链的数字身份认证系统设计.docx VIP
- A10联盟2025届高三4月质量检测考试 物理试卷(含答案解析).pdf
- 现场管理人机料法环知识培训课件(PPT-46张).ppt
- ASTM E384-17美国材料与试验协会标准.pdf VIP
- 21《杨氏之子》公开课一等奖创新教学设计.docx VIP
- 2022监理工程师《建设工程目标控制(交通)》公路工程费用与进度控制.pdf VIP
- 供热企业运检人员专业知识习题集.pdf VIP
- 《严格规范涉企行政检查》专题讲座.pptx
文档评论(0)