Add support for missing DPoE OAM leaf-branch attributes

This commit is contained in:
Peter Dobransky 2022-08-03 21:32:28 +00:00 committed by Jaap Keuter
parent 1c1d23e323
commit fe12d2428c
1 changed files with 161 additions and 108 deletions

View File

@ -610,116 +610,125 @@ static const value_string vendor_specific_opcode_vals[] = {
#define DPOE_LB_PORT_INGRESS_RULE 0xD70501
#define DPOE_LB_QUEUE_CONFIG 0xD7010D
/* IEEE 1904.1 SIEPON Leaf-Branch codes used by DPoE */
#define DPOE_LB_1904_1_MAC_ENABLE_STATUS 0x07001A
#define DPOE_LB_1904_1_MEDIA_AVAILABLE 0x070047
#define DPOE_LB_1904_1_DUPLEX_STATUS 0x07005A
/* As messages get implmented and verified, replace with defined codes from above. */
static const value_string dpoe_variable_descriptor_vals[] = {
{ DPOE_LB_ONU_OBJ, "DPoE ONU Object" },
{ DPOE_LB_NETWORK_PORT_OBJ, "Network Port Object" },
{ DPOE_LB_LINK_OBJ, "Link Object" },
{ DPOE_LB_USER_PORT_OBJ, "User Port Object" },
{ DPOE_LB_QUEUE_OBJ, "Queue Object" },
{ 0xD70001, "Sequence Number" },
{ DPOE_LB_ONU_ID, "DPoE ONU ID" },
{ 0xD70003, "Firmware Info" },
{ 0xD70004, "EPON Chip Info" },
{ 0xD70005, "Date of Manufacture" },
{ 0xD70006, "Manufacturer Info" },
{ DPOE_LB_MAX_LL, "Max Logical Links" },
{ DPOE_LB_MAX_NET_PORTS, "Number of Network Ports" },
{ DPOE_LB_NUM_S1_INT, "Number of S1 interfaces" },
{ 0xD7000A, "DPoE ONU Packet Buffer" },
{ DPOE_LB_REP_THRESH, "Report Thresholds" },
{ 0xD7000C, "LLID Forwarding State" },
{ DPOE_LB_OAM_FR, "OAM Frame Rate" },
{ 0xD7000E, "ONU Manufacturer Organization Name" },
{ 0xD7000F, "Firmware Mfg Time Varying Controls" },
{ DPOE_LB_S1_INT_PORT_TYPE, "S1 interface port type" },
{ DPOE_LB_VENDOR_NAME, "Vendor name" },
{ DPOE_LB_MODEL_NUMBER, "Model number" },
{ DPOE_LB_HW_VERSION, "Hardware version" },
{ DPOE_LB_SW_BUNDLE, "Software bundle" },
{ 0xD90001, "Reset DPoE ONU" },
{ 0xD70101, "Dynamic Learning Table Size" },
{ 0xD70102, "Dynamic Address Age Limit" },
{ 0xD70103, "Dynamic MAC Table" },
{ 0xD70104, "Static MAC Table" },
{ DPOE_LB_S1_INT_PORT_AUTONEG, "S1 Interface Port Auto-negotiation" },
{ 0xD70106, "Source Address Admission Control" },
{ 0xD70107, "MAC Learning Min Guarantee" },
{ 0xD70108, "MAC Learning Max Allowed" },
{ 0xD70109, "MAC Learning Aggregate Limit" },
{ 0xD7010A, "Len Error Discard" },
{ 0xD7010B, "Flood Unknown" },
{ 0xD7010C, "Local Switching" },
{ DPOE_LB_QUEUE_CONFIG, "Queue Configuration" },
{ 0xD7010E, "Firmware Filename" },
{ 0xD70110, "Multicast LLID" },
{ 0xD70111, "UNI MAC Learned" },
{ 0xD70112, "ONU Max Frame Size Capability" },
{ 0xD70113, "UNI Max Frame Size Limit" },
{ 0xD90101, "Clear Dynamic MAC Table" },
{ 0xD90102, "Add Dynamic MAC Address" },
{ 0xD90103, "Delete Dynamic MAC Address" },
{ 0xD90104, "Clear Static MAC Table" },
{ 0xD90105, "Add Static MAC Table" },
{ 0xD90106, "Delete Static MAC Address" },
{ 0xD70201, "Rx Unicast Frames" },
{ 0xD70202, "Tx Unicast Frames" },
{ 0xD70203, "Rx Frame Too Short" },
{ 0xD70204, "Rx Frame 64" },
{ 0xD70205, "Rx Frame 65_127" },
{ 0xD70206, "Rx Frame 128_255" },
{ 0xD70207, "Rx Frame 256_511" },
{ 0xD70208, "Rx Frame 512_1023" },
{ 0xD70209, "Rx Frame 1024_1518" },
{ 0xD7020A, "Rx Frame 1519 Plus" },
{ 0xD7020B, "Tx Frame 64" },
{ 0xD7020C, "Tx Frame 65_127" },
{ 0xD7020D, "Tx Frame 128_255" },
{ 0xD7020E, "Tx Frame 256_511" },
{ 0xD7020F, "Tx Frame 512_1023" },
{ 0xD70210, "Tx Frame 1024_1518" },
{ 0xD70211, "Tx Frame 1519 Plus" },
{ 0xD70212, "Tx Delay Threshold" },
{ 0xD70213, "Tx Delay" },
{ 0xD70214, "Tx Frames Dropped" },
{ 0xD70215, "Tx Bytes Dropped" },
{ 0xD70216, "Tx Bytes Delayed" },
{ 0xD70217, "Tx Bytes Unused" },
{ 0xD70218, "Rx Delay Threshold" },
{ 0xD70219, "Rx Delay" },
{ 0xD7021A, "Rx Frames Dropped" },
{ 0xD7021B, "Rx Bytes Dropped" },
{ 0xD7021C, "Rx Bytes Delayed" },
{ 0xD7021D, "Optical Mon Temperature" },
{ 0xD7021E, "Optical Mon Vcc" },
{ 0xD7021F, "Optical Mon Tx Bias Current" },
{ 0xD70220, "Optical Mon Tx Power" },
{ 0xD70221, "Optical Mon Rx Power" },
{ 0xD90201, "Clear Status" },
{ 0xD70301, "Port Stat Threshold" },
{ 0xD70302, "Link Stat Threshold" },
{ 0xD70401, "Encryption Key Expiry Time" },
{ 0xD70402, "Encryption Mode" },
{ DPOE_LB_PORT_INGRESS_RULE, "Port Ingress Rule" },
{ 0xD70502, "Custom Field" },
{ 0xD70503, "C-VLAN TPID" },
{ 0xD70504, "S-VLAN TPID" },
{ 0xD90501, "Clear Port Ingress Rules" },
{ 0xD90502, "Add Port Ingress Rule" },
{ 0xD90503, "Delete Port Ingress Rule" },
{ 0xD70601, "Broadcast Rate Limit" },
{ 0xD70602, "Egress Shaping" },
{ 0xD70603, "Ingress Policing" },
{ 0xD70604, "Queue Rate Control" },
{ 0xD70605, "FEC Mode" },
{ 0xD90601, "Enable User Traffic" },
{ 0xD90602, "Disable User Traffic" },
{ 0xD90603, "Loopback Enable" },
{ 0xD90604, "Loopback Disable" },
{ 0xD90605, "Laser Tx Power Off" },
{ 0x090005, "PHY Admin Control" },
{ 0x09000B, "Auto Neg Renegotiate" },
{ 0x09000C, "Auto Neg Admin Ctrl" },
{ DPOE_LB_ONU_OBJ, "DPoE ONU Object" },
{ DPOE_LB_NETWORK_PORT_OBJ, "Network Port Object" },
{ DPOE_LB_LINK_OBJ, "Link Object" },
{ DPOE_LB_USER_PORT_OBJ, "User Port Object" },
{ DPOE_LB_QUEUE_OBJ, "Queue Object" },
{ 0xD70001, "Sequence Number" },
{ DPOE_LB_ONU_ID, "DPoE ONU ID" },
{ 0xD70003, "Firmware Info" },
{ 0xD70004, "EPON Chip Info" },
{ 0xD70005, "Date of Manufacture" },
{ 0xD70006, "Manufacturer Info" },
{ DPOE_LB_MAX_LL, "Max Logical Links" },
{ DPOE_LB_MAX_NET_PORTS, "Number of Network Ports" },
{ DPOE_LB_NUM_S1_INT, "Number of S1 interfaces" },
{ 0xD7000A, "DPoE ONU Packet Buffer" },
{ DPOE_LB_REP_THRESH, "Report Thresholds" },
{ 0xD7000C, "LLID Forwarding State" },
{ DPOE_LB_OAM_FR, "OAM Frame Rate" },
{ 0xD7000E, "ONU Manufacturer Organization Name" },
{ 0xD7000F, "Firmware Mfg Time Varying Controls" },
{ DPOE_LB_S1_INT_PORT_TYPE, "S1 interface port type" },
{ DPOE_LB_VENDOR_NAME, "Vendor name" },
{ DPOE_LB_MODEL_NUMBER, "Model number" },
{ DPOE_LB_HW_VERSION, "Hardware version" },
{ DPOE_LB_SW_BUNDLE, "Software bundle" },
{ 0xD90001, "Reset DPoE ONU" },
{ 0xD70101, "Dynamic Learning Table Size" },
{ 0xD70102, "Dynamic Address Age Limit" },
{ 0xD70103, "Dynamic MAC Table" },
{ 0xD70104, "Static MAC Table" },
{ DPOE_LB_S1_INT_PORT_AUTONEG, "S1 Interface Port Auto-negotiation" },
{ 0xD70106, "Source Address Admission Control" },
{ 0xD70107, "MAC Learning Min Guarantee" },
{ 0xD70108, "MAC Learning Max Allowed" },
{ 0xD70109, "MAC Learning Aggregate Limit" },
{ 0xD7010A, "Len Error Discard" },
{ 0xD7010B, "Flood Unknown" },
{ 0xD7010C, "Local Switching" },
{ DPOE_LB_QUEUE_CONFIG, "Queue Configuration" },
{ 0xD7010E, "Firmware Filename" },
{ 0xD70110, "Multicast LLID" },
{ 0xD70111, "UNI MAC Learned" },
{ 0xD70112, "ONU Max Frame Size Capability" },
{ 0xD70113, "UNI Max Frame Size Limit" },
{ 0xD90101, "Clear Dynamic MAC Table" },
{ 0xD90102, "Add Dynamic MAC Address" },
{ 0xD90103, "Delete Dynamic MAC Address" },
{ 0xD90104, "Clear Static MAC Table" },
{ 0xD90105, "Add Static MAC Table" },
{ 0xD90106, "Delete Static MAC Address" },
{ 0xD70201, "Rx Unicast Frames" },
{ 0xD70202, "Tx Unicast Frames" },
{ 0xD70203, "Rx Frame Too Short" },
{ 0xD70204, "Rx Frame 64" },
{ 0xD70205, "Rx Frame 65_127" },
{ 0xD70206, "Rx Frame 128_255" },
{ 0xD70207, "Rx Frame 256_511" },
{ 0xD70208, "Rx Frame 512_1023" },
{ 0xD70209, "Rx Frame 1024_1518" },
{ 0xD7020A, "Rx Frame 1519 Plus" },
{ 0xD7020B, "Tx Frame 64" },
{ 0xD7020C, "Tx Frame 65_127" },
{ 0xD7020D, "Tx Frame 128_255" },
{ 0xD7020E, "Tx Frame 256_511" },
{ 0xD7020F, "Tx Frame 512_1023" },
{ 0xD70210, "Tx Frame 1024_1518" },
{ 0xD70211, "Tx Frame 1519 Plus" },
{ 0xD70212, "Tx Delay Threshold" },
{ 0xD70213, "Tx Delay" },
{ 0xD70214, "Tx Frames Dropped" },
{ 0xD70215, "Tx Bytes Dropped" },
{ 0xD70216, "Tx Bytes Delayed" },
{ 0xD70217, "Tx Bytes Unused" },
{ 0xD70218, "Rx Delay Threshold" },
{ 0xD70219, "Rx Delay" },
{ 0xD7021A, "Rx Frames Dropped" },
{ 0xD7021B, "Rx Bytes Dropped" },
{ 0xD7021C, "Rx Bytes Delayed" },
{ 0xD7021D, "Optical Mon Temperature" },
{ 0xD7021E, "Optical Mon Vcc" },
{ 0xD7021F, "Optical Mon Tx Bias Current" },
{ 0xD70220, "Optical Mon Tx Power" },
{ 0xD70221, "Optical Mon Rx Power" },
{ 0xD90201, "Clear Status" },
{ 0xD70301, "Port Stat Threshold" },
{ 0xD70302, "Link Stat Threshold" },
{ 0xD90301, "Retrieve Current Alarm Summary" },
{ 0xD70401, "Encryption Key Expiry Time" },
{ 0xD70402, "Encryption Mode" },
{ DPOE_LB_PORT_INGRESS_RULE, "Port Ingress Rule" },
{ 0xD70502, "Custom Field" },
{ 0xD70503, "C-VLAN TPID" },
{ 0xD70504, "S-VLAN TPID" },
{ 0xD90501, "Clear Port Ingress Rules" },
{ 0xD90502, "Add Port Ingress Rule" },
{ 0xD90503, "Delete Port Ingress Rule" },
{ 0xD70601, "Broadcast Rate Limit" },
{ 0xD70602, "Egress Shaping" },
{ 0xD70603, "Ingress Policing" },
{ 0xD70604, "Queue Rate Control" },
{ 0xD70605, "FEC Mode" },
{ 0xD90601, "Enable User Traffic" },
{ 0xD90602, "Disable User Traffic" },
{ 0xD90603, "Loopback Enable" },
{ 0xD90604, "Loopback Disable" },
{ 0xD90605, "Laser Tx Power Off" },
{ 0x090005, "PHY Admin Control" },
{ 0x09000B, "Auto Neg Renegotiate" },
{ 0x09000C, "Auto Neg Admin Ctrl" },
{ DPOE_LB_1904_1_MAC_ENABLE_STATUS, "MAC Enable Status" },
{ DPOE_LB_1904_1_MEDIA_AVAILABLE, "Media Available" },
{ DPOE_LB_1904_1_DUPLEX_STATUS, "Duplex Status" },
{ 0, NULL }
};
@ -737,6 +746,25 @@ static const value_string dpoe_variable_response_code_vals[] = {
{ 0, NULL }
};
static const value_string dpoe_1904_1_mac_enable_status_vals[] = {
{ 0x00, "disabled" },
{ 0x01, "enabled" },
{ 0, NULL }
};
static const value_string dpoe_1904_1_media_available_vals[] = {
{ 0x03, "available" },
{ 0x04, "not_available" },
{ 0, NULL }
};
static const value_string dpoe_1904_1_duplex_status_vals[] = {
{ 0x01, "half_duplex" },
{ 0x02, "full_duplex" },
{ 0x03, "unknown" },
{ 0, NULL }
};
static const value_string user_port_object_subtype_vals[] = {
{ 0x00, "Terminator" },
{ 0x01, "Header" },
@ -942,6 +970,10 @@ static int hf_oam_dpoe_qc_ports_d = -1;
static int hf_oam_dpoe_qc_nq = -1;
static int hf_oam_dpoe_qc_queue_size = -1;
static int hf_oam_dpoe_1904_1_mac_enable_status = -1;
static int hf_oam_dpoe_1904_1_media_available = -1;
static int hf_oam_dpoe_1904_1_duplex_status = -1;
static int hf_oampdu_lpbk = -1;
static int hf_oampdu_lpbk_enable = -1;
static int hf_oampdu_lpbk_disable = -1;
@ -1965,6 +1997,12 @@ dissect_oampdu_vendor_specific(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
/* offset variable already incremented, so variable_length should include only 1 to read next_byte */
variable_length = 1;
/* fall-through for unmatched: */
} else if (leaf_branch == DPOE_LB_1904_1_MAC_ENABLE_STATUS) {
proto_tree_add_item(dpoe_opcode_response_tree, hf_oam_dpoe_1904_1_mac_enable_status, tvb, offset, 1, ENC_BIG_ENDIAN);
} else if (leaf_branch == DPOE_LB_1904_1_MEDIA_AVAILABLE) {
proto_tree_add_item(dpoe_opcode_response_tree, hf_oam_dpoe_1904_1_media_available, tvb, offset, 1, ENC_BIG_ENDIAN);
} else if (leaf_branch == DPOE_LB_1904_1_DUPLEX_STATUS) {
proto_tree_add_item(dpoe_opcode_response_tree, hf_oam_dpoe_1904_1_duplex_status, tvb, offset, 1, ENC_BIG_ENDIAN);
} else {
proto_tree_add_item(dpoe_opcode_response_tree, hf_oampdu_variable_value, tvb, offset, variable_length, ENC_NA);
}
@ -2549,6 +2587,21 @@ proto_register_oampdu(void)
{"Queue size (in 4KB units)", "oampdu.queue_configuration.size",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL } },
{ &hf_oam_dpoe_1904_1_mac_enable_status,
{ "MAC Enable Status", "oampdu.1904_1.mac_enable_status",
FT_UINT8, BASE_DEC, VALS(dpoe_1904_1_mac_enable_status_vals), 0x0,
NULL, HFILL } },
{ &hf_oam_dpoe_1904_1_media_available,
{ "Media Available", "oampdu.1904_1.media_available",
FT_UINT8, BASE_DEC, VALS(dpoe_1904_1_media_available_vals), 0x0,
NULL, HFILL } },
{ &hf_oam_dpoe_1904_1_duplex_status,
{ "Duplex Status", "oampdu.1904_1.duplex_status",
FT_UINT8, BASE_DEC, VALS(dpoe_1904_1_duplex_status_vals), 0x0,
NULL, HFILL } },
};
/* Setup protocol subtree array */