//root/rtk-9310/kernel/uClinux/user/switch/sdk/diag/src/diag_vlan.c + RTK_MS_SDK_API_UserGuide(63).pdf 调试RTL api接口。
port based vlan configure: //Note:配置access/trunk/hybrid端口vlan属性。
vlan create vlan-table vid
vlan set accept-frame-type outer port all
vlan set accept-frame-type inner port all
vlan set pvid-mode outer port 7 untag-and-priority-tag
vlan set pvid-mode inner port 7 untag-and-priority-tag
vlan set vlan-table vid 1 member 22,28
vlan set vlan-table vid 1 untag-port 0-21,27
vlan set pvid outer port 7 1
vlan set pvid inner port 7 1 //Note: 对于交换芯片来说,inner vlan指紧挨着mac地址的vlan,mac -> layer-4, 报文层数由里到外。
vlan get vlan-table vid 2
Vlan 2
Member Ports : 0-28
Untag Ports : 0-6,8,10-28
Tag Ports : 7,9
Fid : 0
Stg : 0
UBCAST hkey : UC_LOOKUP_ON_VID
MCAST hkey : UC_LOOKUP_ON_VID
Profile index : 0
恒茂验证:
Switch(config)# interface vlan 10
register_vlan_device: ALREADY had VLAN registered //Note:核心信息。
Switch(config-if-vlan10)#
测试步骤:
交换机(10) <------------------> 网络 <-----------------> ubuntu虚拟机
交换机:
0、交换机10端口pvid设置非1,允许vlan1通过。
1、内核注册vlan if 端口。 //可以通过根文件系统中vconfig 或者 ioctl来注册(struct vlan_ioctl_args ifr; socket(AF_INET, SOCK_STREAM, 0) ioctl(int_fd, SIOCSIFVLAN, &ifr))
2、与cpu端口对接的交换机端口加入到对应vlan 1,允许通过; //interface vlan 1 ; register_vlan_device: ALREADY had VLAN registered
3、vlan if端口配置ip地址。//可以通过根文件系统中ifconfig 或者ioctl来配置。 //ifconfig eth0.1 3.3.3.4 netmask 255.0.0.0
ubuntu虚拟机:
1、安装vconfig工具;
2、利用vconfig + ifconfig来注册vlan if接口 + 配置ip地址。