用代码来理解 access、trunk、和hybrid
方向 | 进:从交换机端口到交换机内部 | 出:从交换机内部到交换机端口 |
Access | If (data.pvid==null){ Data.pvid = access.pvid; Send(data); } else { If (data.pvid == access.pvid) { Send(data); } else { Discard; } } | if (data.pvid==null) { throw new error(“你的交换机坏掉了”); } else { If (data.pvid == access.pvid) { Data.pvid = null; Send(data); } else { Discard; } } |
Trunk | If (data.pvid==null){ Data.pvid = trunk.pvid; Send(data); } else { If (trunk.vid.contains(data.pvid)) { Send(data); } else { Discard; } } | if (data.pvid==null) { throw new error(“你的交换机坏掉了”); } else { If (trunk.vid.contains(data.pvid)) { If (trunk.pvid == data.pvid) { Data.pvid = null; Send(data); } else { Send(data); } } else { Discard; } } |
Hybrid | If (data.pvid==null){ Data.pvid = Hybrid.pvid; Send(data); } else { If (Hybrid.vid.contains(data.pvid)) { Send(data); } else { Discard; } } | if (data.pvid==null) { throw new error(“你的交换机坏掉了”); } else { If (hybrid.vid.contains(data.pvid)) { If (hybrid.vid.where(o=>o.IsTag==true).contains(data.pvid)) { Send(data); } else { Data.pvid = null; Send(data); } } else { Discard; } } |