diff --git a/epan/dissectors/packet-oampdu.c b/epan/dissectors/packet-oampdu.c index 94199bce42..5af1651045 100644 --- a/epan/dissectors/packet-oampdu.c +++ b/epan/dissectors/packet-oampdu.c @@ -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 */