@@ -892,6 +892,224 @@ function ConvertFrom-LLDPPacket {
892892 $Hash.Add (' VLAN' , [BitConverter ]::ToUInt16($Packet [($Offset + 5 ).. ($Offset + 4 )], 0 ))
893893 }
894894
895+ if ($OUI -eq ' 00-80-C2' -and $Subtype -eq 9 ) {
896+ $ETSMask = [uint16 ]0x000F
897+ $Pri0To3 = [BitConverter ]::ToUInt16($Packet [($Offset + 6 ).. ($Offset + 5 )], 0 )
898+ $Pri4To7 = [BitConverter ]::ToUInt16($Packet [($Offset + 8 ).. ($Offset + 7 )], 0 )
899+
900+ $ETS = [PSCustomObject ]@ {
901+ Willing = ($Packet [($Offset + 4 )] -band (1 -shl 7 )) -ne 0
902+ PriorityAssignmentTable = @ (
903+ [PSCustomObject ]@ {
904+ Priority = 0
905+ TrafficClass = ($Pri0To3 -shr 12 ) -band $ETSMask
906+ }
907+ [PSCustomObject ]@ {
908+ Priority = 1
909+ TrafficClass = ($Pri0To3 -shr 8 ) -band $ETSMask
910+ }
911+ [PSCustomObject ]@ {
912+ Priority = 2
913+ TrafficClass = ($Pri0To3 -shr 4 ) -band $ETSMask
914+ }
915+ [PSCustomObject ]@ {
916+ Priority = 3
917+ TrafficClass = $Pri0To3 -band $ETSMask
918+ }
919+ [PSCustomObject ]@ {
920+ Priority = 4
921+ TrafficClass = ($Pri4To7 -shr 12 ) -band $ETSMask
922+ }
923+ [PSCustomObject ]@ {
924+ Priority = 5
925+ TrafficClass = ($Pri4To7 -shr 8 ) -band $ETSMask
926+ }
927+ [PSCustomObject ]@ {
928+ Priority = 6
929+ TrafficClass = ($Pri4To7 -shr 4 ) -band $ETSMask
930+ }
931+ [PSCustomObject ]@ {
932+ Priority = 7
933+ TrafficClass = $Pri4To7 -band $ETSMask
934+ }
935+ )
936+ BandwidthAssignmentTable = @ (
937+ [PSCustomObject ]@ {
938+ Priority = 0
939+ Bandwidth = $Packet [($Offset + 9 )]
940+ }
941+ [PSCustomObject ]@ {
942+ Priority = 1
943+ Bandwidth = $Packet [($Offset + 10 )]
944+ }
945+ [PSCustomObject ]@ {
946+ Priority = 2
947+ Bandwidth = $Packet [($Offset + 11 )]
948+ }
949+ [PSCustomObject ]@ {
950+ Priority = 3
951+ Bandwidth = $Packet [($Offset + 12 )]
952+ }
953+ [PSCustomObject ]@ {
954+ Priority = 4
955+ Bandwidth = $Packet [($Offset + 13 )]
956+ }
957+ [PSCustomObject ]@ {
958+ Priority = 5
959+ Bandwidth = $Packet [($Offset + 14 )]
960+ }
961+ [PSCustomObject ]@ {
962+ Priority = 6
963+ Bandwidth = $Packet [($Offset + 15 )]
964+ }
965+ [PSCustomObject ]@ {
966+ Priority = 7
967+ Bandwidth = $Packet [($Offset + 16 )]
968+ }
969+ )
970+ }
971+
972+ if (-not ($Hash.ContainsKey (' DCBX' ))) {
973+ $Hash.Add (' DCBX' , [PSCustomObject ]@ {IEEE = [PSCustomObject ]@ {}})
974+ }
975+
976+ $Hash.DCBX.IEEE | Add-Member - NotePropertyName ETS - NotePropertyValue $ETS
977+ }
978+
979+ if ($OUI -eq ' 00-80-C2' -and $Subtype -eq 11 ) {
980+ $PFC = [PSCustomObject ]@ {
981+ Willing = ($Packet [($Offset + 4 )] -band (1 -shl 7 )) -ne 0
982+ FlowControl = 0 .. 7 | ForEach-Object {
983+ [PSCustomObject ]@ {
984+ Priority = $_
985+ Enabled = ($Packet [($Offset + 5 )] -band (1 -shl $_ )) -ne 0
986+ }
987+ }
988+ }
989+
990+ if (-not ($Hash.ContainsKey (' DCBX' ))) {
991+ $Hash.Add (' DCBX' , [PSCustomObject ]@ {IEEE = [PSCustomObject ]@ {}})
992+ }
993+
994+ $Hash.DCBX.IEEE | Add-Member - NotePropertyName PFC - NotePropertyValue $PFC
995+ }
996+
997+ if ($OUI -eq ' 00-1B-21' -and $Subtype -eq 2 ) {
998+ if (-not ($Hash.ContainsKey (' DCBX' ))) {
999+ $Hash.Add (' DCBX' , [PSCustomObject ]@ {CEE = [PSCustomObject ]@ {}})
1000+ }
1001+
1002+ $DCBXTLVBuffer = $Packet [($Offset + 4 ).. ($Offset + $Length - 1 )]
1003+ $DCBXTLVOffset = 0
1004+
1005+ while ($DCBXTLVOffset -lt $DCBXTLVBuffer.Length ) {
1006+ $DCBXTLVType = $DCBXTLVBuffer [($DCBXTLVOffset )] -shr 1
1007+ $DCBXTLVLength = [BitConverter ]::ToUInt16($DCBXTLVBuffer [($DCBXTLVOffset + 1 ).. $DCBXTLVOffset ], 0 ) -band $Mask
1008+ $DCBXTLVOffset += 2
1009+
1010+ Write-Verbose " DCBXTLVType : $DCBXTLVType "
1011+ Write-Verbose " DCBXTLVLength : $DCBXTLVLength "
1012+
1013+ if ($DCBXTLVType -eq 2 ) {
1014+ $ETSMask = [uint16 ]0x000F
1015+ $Pri0To3 = [BitConverter ]::ToUInt16($DCBXTLVBuffer [($DCBXTLVOffset + 5 ).. ($DCBXTLVOffset + 4 )], 0 )
1016+ $Pri4To7 = [BitConverter ]::ToUInt16($DCBXTLVBuffer [($DCBXTLVOffset + 7 ).. ($DCBXTLVOffset + 6 )], 0 )
1017+
1018+ $ETS = [PSCustomObject ]@ {
1019+ Enabled = ($DCBXTLVBuffer [($DCBXTLVOffset + 2 )] -band (1 -shl 7 )) -ne 0
1020+ Willing = ($DCBXTLVBuffer [($DCBXTLVOffset + 2 )] -band (1 -shl 6 )) -ne 0
1021+ PriorityAssignmentTable = @ (
1022+ [PSCustomObject ]@ {
1023+ Priority = 0
1024+ TrafficClass = ($Pri0To3 -shr 12 ) -band $ETSMask
1025+ }
1026+ [PSCustomObject ]@ {
1027+ Priority = 1
1028+ TrafficClass = ($Pri0To3 -shr 8 ) -band $ETSMask
1029+ }
1030+ [PSCustomObject ]@ {
1031+ Priority = 2
1032+ TrafficClass = ($Pri0To3 -shr 4 ) -band $ETSMask
1033+ }
1034+ [PSCustomObject ]@ {
1035+ Priority = 3
1036+ TrafficClass = $Pri0To3 -band $ETSMask
1037+ }
1038+ [PSCustomObject ]@ {
1039+ Priority = 4
1040+ TrafficClass = ($Pri4To7 -shr 12 ) -band $ETSMask
1041+ }
1042+ [PSCustomObject ]@ {
1043+ Priority = 5
1044+ TrafficClass = ($Pri4To7 -shr 8 ) -band $ETSMask
1045+ }
1046+ [PSCustomObject ]@ {
1047+ Priority = 6
1048+ TrafficClass = ($Pri4To7 -shr 4 ) -band $ETSMask
1049+ }
1050+ [PSCustomObject ]@ {
1051+ Priority = 7
1052+ TrafficClass = $Pri4To7 -band $ETSMask
1053+ }
1054+ )
1055+ BandwidthAssignmentTable = @ (
1056+ [PSCustomObject ]@ {
1057+ Priority = 0
1058+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 8 )]
1059+ }
1060+ [PSCustomObject ]@ {
1061+ Priority = 1
1062+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 9 )]
1063+ }
1064+ [PSCustomObject ]@ {
1065+ Priority = 2
1066+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 10 )]
1067+ }
1068+ [PSCustomObject ]@ {
1069+ Priority = 3
1070+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 11 )]
1071+ }
1072+ [PSCustomObject ]@ {
1073+ Priority = 4
1074+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 12 )]
1075+ }
1076+ [PSCustomObject ]@ {
1077+ Priority = 5
1078+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 13 )]
1079+ }
1080+ [PSCustomObject ]@ {
1081+ Priority = 6
1082+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 14 )]
1083+ }
1084+ [PSCustomObject ]@ {
1085+ Priority = 7
1086+ Bandwidth = $DCBXTLVBuffer [($DCBXTLVOffset + 15 )]
1087+ }
1088+ )
1089+ }
1090+
1091+ $Hash.DCBX.CEE | Add-Member - NotePropertyName ETS - NotePropertyValue $ETS
1092+ }
1093+
1094+ if ($DCBXTLVType -eq 3 ) {
1095+ $PFC = [PSCustomObject ]@ {
1096+ Enabled = ($DCBXTLVBuffer [($DCBXTLVOffset + 2 )] -band (1 -shl 7 )) -ne 0
1097+ Willing = ($DCBXTLVBuffer [($DCBXTLVOffset + 2 )] -band (1 -shl 6 )) -ne 0
1098+ FlowControl = 0 .. 7 | ForEach-Object {
1099+ [PSCustomObject ]@ {
1100+ Priority = $_
1101+ Enabled = ($DCBXTLVBuffer [($DCBXTLVOffset + 4 )] -band (1 -shl $_ )) -ne 0
1102+ }
1103+ }
1104+ }
1105+
1106+ $Hash.DCBX.CEE | Add-Member - NotePropertyName PFC - NotePropertyValue $PFC
1107+ }
1108+
1109+ $DCBXTLVOffset += $DCBXTLVLength
1110+ }
1111+ }
1112+
8951113 $Bytes = $Packet [($Offset + 4 ).. ($Offset + $Length - 1 )]
8961114 $Hex = [System.BitConverter ]::ToString($Bytes )
8971115 $Ascii = [System.Text.Encoding ]::ASCII.GetString($Bytes )
0 commit comments