[VOL-5181] introduce pon distance in DMI

Change-Id: I229f39a81d75627237736174e92e2cfc19de12f4
diff --git a/cpp/dmi/hw.pb.cc b/cpp/dmi/hw.pb.cc
index ddf179b..1982b55 100644
--- a/cpp/dmi/hw.pb.cc
+++ b/cpp/dmi/hw.pb.cc
@@ -17,6 +17,7 @@
 #include <google/protobuf/port_def.inc>
 
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonDistance_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonIdConfig_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PsuComponentAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto;
@@ -25,8 +26,8 @@
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentSensorData_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentState_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Component_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto;
 namespace dmi {
@@ -54,6 +55,10 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentAttributes> _instance;
 } _PortComponentAttributes_default_instance_;
+class PonDistanceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PonDistance> _instance;
+} _PonDistance_default_instance_;
 class PortComponentChangeAttributesDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentChangeAttributes> _instance;
@@ -181,9 +186,24 @@
   ::dmi::PortComponentAttributes::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {
-      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,
+      &scc_info_PonDistance_dmi_2fhw_2eproto.base,}};
+
+static void InitDefaultsPonDistance_dmi_2fhw_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_PonDistance_default_instance_;
+    new (ptr) ::dmi::PonDistance();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::PonDistance::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_PonDistance_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPonDistance_dmi_2fhw_2eproto}, {}};
 
 static void InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -196,9 +216,10 @@
   ::dmi::PortComponentChangeAttributes::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
-      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,
+      &scc_info_PonDistance_dmi_2fhw_2eproto.base,}};
 
 static void InitDefaultsTransceiverComponentChangeAttributes_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -334,6 +355,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentState_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentSensorData_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentAttributes_dmi_2fhw_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PonDistance_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
@@ -345,7 +367,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ModifiableComponent_dmi_2fhw_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[15];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[16];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_2eproto[15];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_2eproto = nullptr;
 
@@ -405,12 +427,21 @@
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, mapping_label_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, pon_id_config_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, speed_autonegotiation_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, distance_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, max_distance_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, max_differential_distance_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, pon_id_config_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, distance_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::TransceiverComponentChangeAttributes, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -512,15 +543,16 @@
   { 18, -1, sizeof(::dmi::ComponentState)},
   { 29, -1, sizeof(::dmi::ComponentSensorData)},
   { 43, -1, sizeof(::dmi::PortComponentAttributes)},
-  { 55, -1, sizeof(::dmi::PortComponentChangeAttributes)},
-  { 61, -1, sizeof(::dmi::TransceiverComponentChangeAttributes)},
-  { 67, -1, sizeof(::dmi::PonIdConfig)},
-  { 74, -1, sizeof(::dmi::ContainerComponentAttributes)},
-  { 80, -1, sizeof(::dmi::PsuComponentAttributes)},
-  { 86, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
-  { 100, -1, sizeof(::dmi::Component)},
-  { 130, -1, sizeof(::dmi::Hardware)},
-  { 138, -1, sizeof(::dmi::ModifiableComponent)},
+  { 56, -1, sizeof(::dmi::PonDistance)},
+  { 63, -1, sizeof(::dmi::PortComponentChangeAttributes)},
+  { 70, -1, sizeof(::dmi::TransceiverComponentChangeAttributes)},
+  { 76, -1, sizeof(::dmi::PonIdConfig)},
+  { 83, -1, sizeof(::dmi::ContainerComponentAttributes)},
+  { 89, -1, sizeof(::dmi::PsuComponentAttributes)},
+  { 95, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
+  { 109, -1, sizeof(::dmi::Component)},
+  { 139, -1, sizeof(::dmi::Hardware)},
+  { 147, -1, sizeof(::dmi::ModifiableComponent)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -530,6 +562,7 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentState_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentSensorData_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentAttributes_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonDistance_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentChangeAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_TransceiverComponentChangeAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonIdConfig_default_instance_),
@@ -544,7 +577,7 @@
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_2eproto = {
   {}, AddDescriptors_dmi_2fhw_2eproto, "dmi/hw.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_2eproto, 15, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
+  file_level_metadata_dmi_2fhw_2eproto, 16, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_2eproto[] =
@@ -566,7 +599,7 @@
   "atus\022\025\n\runits_display\030\006 \001(\t\022-\n\ttimestamp"
   "\030\007 \001(\0132\032.google.protobuf.Timestamp\022\031\n\021va"
   "lue_update_rate\030\010 \001(\r\022\021\n\tdata_type\030\t \001(\t"
-  "\"\341\005\n\027PortComponentAttributes\022B\n\016connecto"
+  "\"\205\006\n\027PortComponentAttributes\022B\n\016connecto"
   "r_type\030\001 \001(\0162*.dmi.PortComponentAttribut"
   "es.ConnectorType\0221\n\005speed\030\002 \001(\0162\".dmi.Po"
   "rtComponentAttributes.Speed\0227\n\010protocol\030"
@@ -574,145 +607,148 @@
   "ocol\022\026\n\016physical_label\030\004 \001(\t\022\025\n\rmapping_"
   "label\030\005 \001(\t\022\'\n\rpon_id_config\030\006 \001(\0132\020.dmi"
   ".PonIdConfig\022\035\n\025speed_autonegotiation\030\007 "
-  "\001(\010\"p\n\rConnectorType\022\034\n\030CONNECTOR_TYPE_U"
-  "NDEFINED\020\000\022\010\n\004RJ45\020\001\022\014\n\010FIBER_LC\020\002\022\017\n\013FI"
-  "BER_SC_PC\020\003\022\r\n\tFIBER_MPO\020\004\022\t\n\005RS232\020\005\"\256\001"
-  "\n\005Speed\022\023\n\017SPEED_UNDEFINED\020\000\022\013\n\007DYNAMIC\020"
-  "\001\022\r\n\tGIGABIT_1\020\002\022\016\n\nGIGABIT_10\020\003\022\016\n\nGIGA"
-  "BIT_25\020\004\022\016\n\nGIGABIT_40\020\005\022\017\n\013GIGABIT_100\020"
-  "\006\022\017\n\013GIGABIT_400\020\007\022\020\n\014MEGABIT_2500\020\010\022\020\n\014"
-  "MEGABIT_1250\020\t\"|\n\010Protocol\022\026\n\022PROTOCOL_U"
-  "NDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XG"
-  "PON\020\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006"
-  "\022\010\n\004EPON\020\007\022\010\n\004BITS\020\010\"H\n\035PortComponentCha"
-  "ngeAttributes\022\'\n\rpon_id_config\030\001 \001(\0132\020.d"
-  "mi.PonIdConfig\"P\n$TransceiverComponentCh"
-  "angeAttributes\022(\n\ntrans_type\030\001 \001(\0162\024.dmi"
-  ".TransceiverType\"B\n\013PonIdConfig\022\016\n\006pon_i"
-  "d\030\001 \001(\014\022#\n\033pon_id_transmit_periodicity\030\002"
-  " \001(\r\"6\n\034ContainerComponentAttributes\022\026\n\016"
-  "physical_label\030\001 \001(\t\"\263\001\n\026PsuComponentAtt"
-  "ributes\022G\n\021supported_voltage\030\001 \001(\0162,.dmi"
-  ".PsuComponentAttributes.SupportedVoltage"
-  "\"P\n\020SupportedVoltage\022\037\n\033SUPPORTED_VOLTAG"
-  "E_UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115"
-  "\020\003\"\253\004\n\037TransceiverComponentsAttributes\022D"
-  "\n\013form_factor\030\001 \001(\0162/.dmi.TransceiverCom"
-  "ponentsAttributes.FormFactor\022(\n\ntrans_ty"
-  "pe\030\002 \001(\0162\024.dmi.TransceiverType\022\024\n\014max_di"
-  "stance\030\003 \001(\r\022+\n\022max_distance_scale\030\004 \001(\016"
-  "2\017.dmi.ValueScale\022\025\n\rrx_wavelength\030\005 \003(\r"
-  "\022\025\n\rtx_wavelength\030\006 \003(\r\022)\n\020wavelength_sc"
-  "ale\030\007 \001(\0162\017.dmi.ValueScale\022\020\n\010tx_power\030\010"
-  " \003(\005\022\'\n\016tx_power_scale\030\t \001(\0162\017.dmi.Value"
-  "Scale\"\300\001\n\nFormFactor\022\027\n\023FORM_FACTOR_UNKN"
-  "OWN\020\000\022\010\n\004QSFP\020\001\022\r\n\tQSFP_PLUS\020\002\022\n\n\006QSFP28"
-  "\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CF"
-  "P4\020\007\022\010\n\004CFP2\020\010\022\010\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHE"
-  "R\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP2_ACO\020\r\022\014\n\010CFP2_DCO\020\016"
-  "\"\350\005\n\tComponent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 "
-  "\001(\0162\022.dmi.ComponentType\022\023\n\013description\030\003"
-  " \001(\t\022\016\n\006parent\030\004 \001(\t\022\026\n\016parent_rel_pos\030\005"
-  " \001(\005\022 \n\010children\030\006 \003(\0132\016.dmi.Component\022\024"
-  "\n\014hardware_rev\030\007 \001(\t\022\024\n\014firmware_rev\030\010 \001"
-  "(\t\022\024\n\014software_rev\030\t \001(\t\022\022\n\nserial_num\030\n"
-  " \001(\t\022\020\n\010mfg_name\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001"
-  "(\t\022\r\n\005alias\030\r \001(\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006i"
-  "s_fru\030\017 \001(\010\022,\n\010mfg_date\030\020 \001(\0132\032.google.p"
-  "rotobuf.Timestamp\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri"
-  "\022\027\n\004uuid\030\022 \001(\0132\t.dmi.Uuid\022\"\n\005state\030\023 \001(\013"
-  "2\023.dmi.ComponentState\022-\n\013sensor_data\030\024 \003"
-  "(\0132\030.dmi.ComponentSensorData\0221\n\tport_att"
-  "r\0302 \001(\0132\034.dmi.PortComponentAttributesH\000\022"
-  ";\n\016container_attr\0303 \001(\0132!.dmi.ContainerC"
-  "omponentAttributesH\000\022/\n\010psu_attr\0304 \001(\0132\033"
-  ".dmi.PsuComponentAttributesH\000\022@\n\020transce"
-  "iver_attr\0305 \001(\0132$.dmi.TransceiverCompone"
-  "ntsAttributesH\000B\n\n\010specific\"\212\001\n\010Hardware"
-  "\022/\n\013last_change\030\001 \001(\0132\032.google.protobuf."
-  "Timestamp\022\034\n\004root\030\002 \001(\0132\016.dmi.Component\022"
-  "/\n\013last_booted\030\003 \001(\0132\032.google.protobuf.T"
-  "imestamp\"\351\002\n\023ModifiableComponent\022\014\n\004name"
-  "\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.ComponentTyp"
-  "e\022\036\n\006parent\030\003 \001(\0132\016.dmi.Component\022\026\n\016par"
-  "ent_rel_pos\030\004 \001(\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asse"
-  "t_id\030\006 \001(\t\022\025\n\003uri\030\007 \001(\0132\010.dmi.Uri\022-\n\013adm"
-  "in_state\030\010 \001(\0162\030.dmi.ComponentAdminState"
-  "\0227\n\tport_attr\0302 \001(\0132\".dmi.PortComponentC"
-  "hangeAttributesH\000\022=\n\010trx_attr\0303 \001(\0132).dm"
-  "i.TransceiverComponentChangeAttributesH\000"
-  "B\n\n\010specific*\264\003\n\rComponentType\022\034\n\030COMPON"
-  "ENT_TYPE_UNDEFINED\020\000\022\032\n\026COMPONENT_TYPE_U"
-  "NKNOWN\020\001\022\032\n\026COMPONENT_TYPE_CHASSIS\020\002\022\034\n\030"
-  "COMPONENT_TYPE_BACKPLANE\020\003\022\034\n\030COMPONENT_"
-  "TYPE_CONTAINER\020\004\022\037\n\033COMPONENT_TYPE_POWER"
-  "_SUPPLY\020\005\022\026\n\022COMPONENT_TYPE_FAN\020\006\022\031\n\025COM"
-  "PONENT_TYPE_SENSOR\020\007\022\031\n\025COMPONENT_TYPE_M"
-  "ODULE\020\010\022\027\n\023COMPONENT_TYPE_PORT\020\t\022\026\n\022COMP"
-  "ONENT_TYPE_CPU\020\n\022\032\n\026COMPONENT_TYPE_BATTE"
-  "RY\020\013\022\032\n\026COMPONENT_TYPE_STORAGE\020\014\022\031\n\025COMP"
-  "ONENT_TYPE_MEMORY\020\r\022\036\n\032COMPONENT_TYPE_TR"
-  "ANSCEIVER\020\016*\263\001\n\023ComponentAdminState\022\036\n\032C"
-  "OMP_ADMIN_STATE_UNDEFINED\020\000\022\034\n\030COMP_ADMI"
-  "N_STATE_UNKNOWN\020\001\022\033\n\027COMP_ADMIN_STATE_LO"
-  "CKED\020\002\022\"\n\036COMP_ADMIN_STATE_SHUTTING_DOWN"
-  "\020\003\022\035\n\031COMP_ADMIN_STATE_UNLOCKED\020\004*\250\001\n\022Co"
-  "mponentOperState\022\035\n\031COMP_OPER_STATE_UNDE"
-  "FINED\020\000\022\033\n\027COMP_OPER_STATE_UNKNOWN\020\001\022\034\n\030"
-  "COMP_OPER_STATE_DISABLED\020\002\022\033\n\027COMP_OPER_"
-  "STATE_ENABLED\020\003\022\033\n\027COMP_OPER_STATE_TESTI"
-  "NG\020\004*\246\001\n\023ComponentUsageState\022\036\n\032COMP_USA"
-  "GE_STATE_UNDEFINED\020\000\022\034\n\030COMP_USAGE_STATE"
-  "_UNKNOWN\020\001\022\031\n\025COMP_USAGE_STATE_IDLE\020\002\022\033\n"
-  "\027COMP_USAGE_STATE_ACTIVE\020\003\022\031\n\025COMP_USAGE"
-  "_STATE_BUSY\020\004*\217\002\n\023ComponentAlarmState\022\036\n"
-  "\032COMP_ALARM_STATE_UNDEFINED\020\000\022\034\n\030COMP_AL"
-  "ARM_STATE_UNKNOWN\020\001\022!\n\035COMP_ALARM_STATE_"
-  "UNDER_REPAIR\020\002\022\035\n\031COMP_ALARM_STATE_CRITI"
-  "CAL\020\003\022\032\n\026COMP_ALARM_STATE_MAJOR\020\004\022\032\n\026COM"
-  "P_ALARM_STATE_MINOR\020\005\022\034\n\030COMP_ALARM_STAT"
-  "E_WARNING\020\006\022\"\n\036COMP_ALARM_STATE_INDETERM"
-  "INATE\020\007*\274\001\n\025ComponentStandbyState\022 \n\034COM"
-  "P_STANDBY_STATE_UNDEFINED\020\000\022\036\n\032COMP_STAN"
-  "DBY_STATE_UNKNOWN\020\001\022\032\n\026COMP_STANDBY_STAT"
-  "E_HOT\020\002\022\033\n\027COMP_STANDBY_STATE_COLD\020\003\022(\n$"
-  "COMP_STANDBY_STATE_PROVIDING_SERVICE\020\004*\235"
-  "\003\n\rDataValueType\022\030\n\024VALUE_TYPE_UNDEFINED"
-  "\020\000\022\024\n\020VALUE_TYPE_OTHER\020\001\022\026\n\022VALUE_TYPE_U"
-  "NKNOWN\020\002\022\027\n\023VALUE_TYPE_VOLTS_AC\020\003\022\027\n\023VAL"
-  "UE_TYPE_VOLTS_DC\020\004\022\026\n\022VALUE_TYPE_AMPERES"
-  "\020\005\022\024\n\020VALUE_TYPE_WATTS\020\006\022\024\n\020VALUE_TYPE_H"
-  "ERTZ\020\007\022\026\n\022VALUE_TYPE_CELSIUS\020\010\022\031\n\025VALUE_"
-  "TYPE_PERCENT_RH\020\t\022\022\n\016VALUE_TYPE_RPM\020\n\022\022\n"
-  "\016VALUE_TYPE_CMM\020\013\022\032\n\026VALUE_TYPE_TRUTH_VA"
-  "LUE\020\014\022\026\n\022VALUE_TYPE_PERCENT\020\r\022\025\n\021VALUE_T"
-  "YPE_METERS\020\016\022\024\n\020VALUE_TYPE_BYTES\020\017\022\022\n\016VA"
-  "LUE_TYPE_DBM\020\020*\244\003\n\nValueScale\022\031\n\025VALUE_S"
-  "CALE_UNDEFINED\020\000\022\025\n\021VALUE_SCALE_YOCTO\020\001\022"
-  "\025\n\021VALUE_SCALE_ZEPTO\020\002\022\024\n\020VALUE_SCALE_AT"
-  "TO\020\003\022\025\n\021VALUE_SCALE_FEMTO\020\004\022\024\n\020VALUE_SCA"
-  "LE_PICO\020\005\022\024\n\020VALUE_SCALE_NANO\020\006\022\025\n\021VALUE"
-  "_SCALE_MICRO\020\007\022\025\n\021VALUE_SCALE_MILLI\020\010\022\025\n"
-  "\021VALUE_SCALE_UNITS\020\t\022\024\n\020VALUE_SCALE_KILO"
-  "\020\n\022\024\n\020VALUE_SCALE_MEGA\020\013\022\024\n\020VALUE_SCALE_"
-  "GIGA\020\014\022\024\n\020VALUE_SCALE_TERA\020\r\022\024\n\020VALUE_SC"
-  "ALE_PETA\020\016\022\023\n\017VALUE_SCALE_EXA\020\017\022\025\n\021VALUE"
-  "_SCALE_ZETTA\020\020\022\025\n\021VALUE_SCALE_YOTTA\020\021*\202\001"
-  "\n\014SensorStatus\022\033\n\027SENSOR_STATUS_UNDEFINE"
-  "D\020\000\022\024\n\020SENSOR_STATUS_OK\020\001\022\035\n\031SENSOR_STAT"
-  "US_UNAVAILABLE\020\002\022 \n\034SENSOR_STATUS_NONOPE"
-  "RATIONAL\020\003*\244\001\n\017TransceiverType\022\022\n\016TYPE_U"
-  "NDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XG"
-  "PON\020\003\022\n\n\006XGSPON\020\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020\006"
-  "\022\010\n\004EPON\020\007\022\025\n\021COMBO_GPON_XGSPON\020\010\022\026\n\021TYP"
-  "E_NOT_DETECTED\020\377\001B;Z9github.com/opencord"
-  "/device-management-interface/v3/go/dmib\006"
-  "proto3"
+  "\001(\010\022\"\n\010distance\030\010 \001(\0132\020.dmi.PonDistance\""
+  "p\n\rConnectorType\022\034\n\030CONNECTOR_TYPE_UNDEF"
+  "INED\020\000\022\010\n\004RJ45\020\001\022\014\n\010FIBER_LC\020\002\022\017\n\013FIBER_"
+  "SC_PC\020\003\022\r\n\tFIBER_MPO\020\004\022\t\n\005RS232\020\005\"\256\001\n\005Sp"
+  "eed\022\023\n\017SPEED_UNDEFINED\020\000\022\013\n\007DYNAMIC\020\001\022\r\n"
+  "\tGIGABIT_1\020\002\022\016\n\nGIGABIT_10\020\003\022\016\n\nGIGABIT_"
+  "25\020\004\022\016\n\nGIGABIT_40\020\005\022\017\n\013GIGABIT_100\020\006\022\017\n"
+  "\013GIGABIT_400\020\007\022\020\n\014MEGABIT_2500\020\010\022\020\n\014MEGA"
+  "BIT_1250\020\t\"|\n\010Protocol\022\026\n\022PROTOCOL_UNDEF"
+  "INED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020"
+  "\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006\022\010\n\004"
+  "EPON\020\007\022\010\n\004BITS\020\010\"F\n\013PonDistance\022\024\n\014max_d"
+  "istance\030\001 \001(\r\022!\n\031max_differential_distan"
+  "ce\030\002 \001(\r\"l\n\035PortComponentChangeAttribute"
+  "s\022\'\n\rpon_id_config\030\001 \001(\0132\020.dmi.PonIdConf"
+  "ig\022\"\n\010distance\030\002 \001(\0132\020.dmi.PonDistance\"P"
+  "\n$TransceiverComponentChangeAttributes\022("
+  "\n\ntrans_type\030\001 \001(\0162\024.dmi.TransceiverType"
+  "\"B\n\013PonIdConfig\022\016\n\006pon_id\030\001 \001(\014\022#\n\033pon_i"
+  "d_transmit_periodicity\030\002 \001(\r\"6\n\034Containe"
+  "rComponentAttributes\022\026\n\016physical_label\030\001"
+  " \001(\t\"\263\001\n\026PsuComponentAttributes\022G\n\021suppo"
+  "rted_voltage\030\001 \001(\0162,.dmi.PsuComponentAtt"
+  "ributes.SupportedVoltage\"P\n\020SupportedVol"
+  "tage\022\037\n\033SUPPORTED_VOLTAGE_UNDEFINED\020\000\022\007\n"
+  "\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115\020\003\"\253\004\n\037Transceiv"
+  "erComponentsAttributes\022D\n\013form_factor\030\001 "
+  "\001(\0162/.dmi.TransceiverComponentsAttribute"
+  "s.FormFactor\022(\n\ntrans_type\030\002 \001(\0162\024.dmi.T"
+  "ransceiverType\022\024\n\014max_distance\030\003 \001(\r\022+\n\022"
+  "max_distance_scale\030\004 \001(\0162\017.dmi.ValueScal"
+  "e\022\025\n\rrx_wavelength\030\005 \003(\r\022\025\n\rtx_wavelengt"
+  "h\030\006 \003(\r\022)\n\020wavelength_scale\030\007 \001(\0162\017.dmi."
+  "ValueScale\022\020\n\010tx_power\030\010 \003(\005\022\'\n\016tx_power"
+  "_scale\030\t \001(\0162\017.dmi.ValueScale\"\300\001\n\nFormFa"
+  "ctor\022\027\n\023FORM_FACTOR_UNKNOWN\020\000\022\010\n\004QSFP\020\001\022"
+  "\r\n\tQSFP_PLUS\020\002\022\n\n\006QSFP28\020\003\022\007\n\003SFP\020\004\022\014\n\010S"
+  "FP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CFP4\020\007\022\010\n\004CFP2\020\010\022\010"
+  "\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHER\020\013\022\007\n\003CFP\020\014\022\014\n\010"
+  "CFP2_ACO\020\r\022\014\n\010CFP2_DCO\020\016\"\350\005\n\tComponent\022\014"
+  "\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.Compon"
+  "entType\022\023\n\013description\030\003 \001(\t\022\016\n\006parent\030\004"
+  " \001(\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022 \n\010children"
+  "\030\006 \003(\0132\016.dmi.Component\022\024\n\014hardware_rev\030\007"
+  " \001(\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n\014software_r"
+  "ev\030\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022\020\n\010mfg_name"
+  "\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n\005alias\030\r \001("
+  "\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru\030\017 \001(\010\022,\n\010m"
+  "fg_date\030\020 \001(\0132\032.google.protobuf.Timestam"
+  "p\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004uuid\030\022 \001(\0132\t"
+  ".dmi.Uuid\022\"\n\005state\030\023 \001(\0132\023.dmi.Component"
+  "State\022-\n\013sensor_data\030\024 \003(\0132\030.dmi.Compone"
+  "ntSensorData\0221\n\tport_attr\0302 \001(\0132\034.dmi.Po"
+  "rtComponentAttributesH\000\022;\n\016container_att"
+  "r\0303 \001(\0132!.dmi.ContainerComponentAttribut"
+  "esH\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi.PsuComponen"
+  "tAttributesH\000\022@\n\020transceiver_attr\0305 \001(\0132"
+  "$.dmi.TransceiverComponentsAttributesH\000B"
+  "\n\n\010specific\"\212\001\n\010Hardware\022/\n\013last_change\030"
+  "\001 \001(\0132\032.google.protobuf.Timestamp\022\034\n\004roo"
+  "t\030\002 \001(\0132\016.dmi.Component\022/\n\013last_booted\030\003"
+  " \001(\0132\032.google.protobuf.Timestamp\"\351\002\n\023Mod"
+  "ifiableComponent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030"
+  "\002 \001(\0162\022.dmi.ComponentType\022\036\n\006parent\030\003 \001("
+  "\0132\016.dmi.Component\022\026\n\016parent_rel_pos\030\004 \001("
+  "\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030\006 \001(\t\022\025\n\003ur"
+  "i\030\007 \001(\0132\010.dmi.Uri\022-\n\013admin_state\030\010 \001(\0162\030"
+  ".dmi.ComponentAdminState\0227\n\tport_attr\0302 "
+  "\001(\0132\".dmi.PortComponentChangeAttributesH"
+  "\000\022=\n\010trx_attr\0303 \001(\0132).dmi.TransceiverCom"
+  "ponentChangeAttributesH\000B\n\n\010specific*\264\003\n"
+  "\rComponentType\022\034\n\030COMPONENT_TYPE_UNDEFIN"
+  "ED\020\000\022\032\n\026COMPONENT_TYPE_UNKNOWN\020\001\022\032\n\026COMP"
+  "ONENT_TYPE_CHASSIS\020\002\022\034\n\030COMPONENT_TYPE_B"
+  "ACKPLANE\020\003\022\034\n\030COMPONENT_TYPE_CONTAINER\020\004"
+  "\022\037\n\033COMPONENT_TYPE_POWER_SUPPLY\020\005\022\026\n\022COM"
+  "PONENT_TYPE_FAN\020\006\022\031\n\025COMPONENT_TYPE_SENS"
+  "OR\020\007\022\031\n\025COMPONENT_TYPE_MODULE\020\010\022\027\n\023COMPO"
+  "NENT_TYPE_PORT\020\t\022\026\n\022COMPONENT_TYPE_CPU\020\n"
+  "\022\032\n\026COMPONENT_TYPE_BATTERY\020\013\022\032\n\026COMPONEN"
+  "T_TYPE_STORAGE\020\014\022\031\n\025COMPONENT_TYPE_MEMOR"
+  "Y\020\r\022\036\n\032COMPONENT_TYPE_TRANSCEIVER\020\016*\263\001\n\023"
+  "ComponentAdminState\022\036\n\032COMP_ADMIN_STATE_"
+  "UNDEFINED\020\000\022\034\n\030COMP_ADMIN_STATE_UNKNOWN\020"
+  "\001\022\033\n\027COMP_ADMIN_STATE_LOCKED\020\002\022\"\n\036COMP_A"
+  "DMIN_STATE_SHUTTING_DOWN\020\003\022\035\n\031COMP_ADMIN"
+  "_STATE_UNLOCKED\020\004*\250\001\n\022ComponentOperState"
+  "\022\035\n\031COMP_OPER_STATE_UNDEFINED\020\000\022\033\n\027COMP_"
+  "OPER_STATE_UNKNOWN\020\001\022\034\n\030COMP_OPER_STATE_"
+  "DISABLED\020\002\022\033\n\027COMP_OPER_STATE_ENABLED\020\003\022"
+  "\033\n\027COMP_OPER_STATE_TESTING\020\004*\246\001\n\023Compone"
+  "ntUsageState\022\036\n\032COMP_USAGE_STATE_UNDEFIN"
+  "ED\020\000\022\034\n\030COMP_USAGE_STATE_UNKNOWN\020\001\022\031\n\025CO"
+  "MP_USAGE_STATE_IDLE\020\002\022\033\n\027COMP_USAGE_STAT"
+  "E_ACTIVE\020\003\022\031\n\025COMP_USAGE_STATE_BUSY\020\004*\217\002"
+  "\n\023ComponentAlarmState\022\036\n\032COMP_ALARM_STAT"
+  "E_UNDEFINED\020\000\022\034\n\030COMP_ALARM_STATE_UNKNOW"
+  "N\020\001\022!\n\035COMP_ALARM_STATE_UNDER_REPAIR\020\002\022\035"
+  "\n\031COMP_ALARM_STATE_CRITICAL\020\003\022\032\n\026COMP_AL"
+  "ARM_STATE_MAJOR\020\004\022\032\n\026COMP_ALARM_STATE_MI"
+  "NOR\020\005\022\034\n\030COMP_ALARM_STATE_WARNING\020\006\022\"\n\036C"
+  "OMP_ALARM_STATE_INDETERMINATE\020\007*\274\001\n\025Comp"
+  "onentStandbyState\022 \n\034COMP_STANDBY_STATE_"
+  "UNDEFINED\020\000\022\036\n\032COMP_STANDBY_STATE_UNKNOW"
+  "N\020\001\022\032\n\026COMP_STANDBY_STATE_HOT\020\002\022\033\n\027COMP_"
+  "STANDBY_STATE_COLD\020\003\022(\n$COMP_STANDBY_STA"
+  "TE_PROVIDING_SERVICE\020\004*\235\003\n\rDataValueType"
+  "\022\030\n\024VALUE_TYPE_UNDEFINED\020\000\022\024\n\020VALUE_TYPE"
+  "_OTHER\020\001\022\026\n\022VALUE_TYPE_UNKNOWN\020\002\022\027\n\023VALU"
+  "E_TYPE_VOLTS_AC\020\003\022\027\n\023VALUE_TYPE_VOLTS_DC"
+  "\020\004\022\026\n\022VALUE_TYPE_AMPERES\020\005\022\024\n\020VALUE_TYPE"
+  "_WATTS\020\006\022\024\n\020VALUE_TYPE_HERTZ\020\007\022\026\n\022VALUE_"
+  "TYPE_CELSIUS\020\010\022\031\n\025VALUE_TYPE_PERCENT_RH\020"
+  "\t\022\022\n\016VALUE_TYPE_RPM\020\n\022\022\n\016VALUE_TYPE_CMM\020"
+  "\013\022\032\n\026VALUE_TYPE_TRUTH_VALUE\020\014\022\026\n\022VALUE_T"
+  "YPE_PERCENT\020\r\022\025\n\021VALUE_TYPE_METERS\020\016\022\024\n\020"
+  "VALUE_TYPE_BYTES\020\017\022\022\n\016VALUE_TYPE_DBM\020\020*\244"
+  "\003\n\nValueScale\022\031\n\025VALUE_SCALE_UNDEFINED\020\000"
+  "\022\025\n\021VALUE_SCALE_YOCTO\020\001\022\025\n\021VALUE_SCALE_Z"
+  "EPTO\020\002\022\024\n\020VALUE_SCALE_ATTO\020\003\022\025\n\021VALUE_SC"
+  "ALE_FEMTO\020\004\022\024\n\020VALUE_SCALE_PICO\020\005\022\024\n\020VAL"
+  "UE_SCALE_NANO\020\006\022\025\n\021VALUE_SCALE_MICRO\020\007\022\025"
+  "\n\021VALUE_SCALE_MILLI\020\010\022\025\n\021VALUE_SCALE_UNI"
+  "TS\020\t\022\024\n\020VALUE_SCALE_KILO\020\n\022\024\n\020VALUE_SCAL"
+  "E_MEGA\020\013\022\024\n\020VALUE_SCALE_GIGA\020\014\022\024\n\020VALUE_"
+  "SCALE_TERA\020\r\022\024\n\020VALUE_SCALE_PETA\020\016\022\023\n\017VA"
+  "LUE_SCALE_EXA\020\017\022\025\n\021VALUE_SCALE_ZETTA\020\020\022\025"
+  "\n\021VALUE_SCALE_YOTTA\020\021*\202\001\n\014SensorStatus\022\033"
+  "\n\027SENSOR_STATUS_UNDEFINED\020\000\022\024\n\020SENSOR_ST"
+  "ATUS_OK\020\001\022\035\n\031SENSOR_STATUS_UNAVAILABLE\020\002"
+  "\022 \n\034SENSOR_STATUS_NONOPERATIONAL\020\003*\244\001\n\017T"
+  "ransceiverType\022\022\n\016TYPE_UNDEFINED\020\000\022\014\n\010ET"
+  "HERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON\020"
+  "\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020\006\022\010\n\004EPON\020\007\022\025\n\021CO"
+  "MBO_GPON_XGSPON\020\010\022\026\n\021TYPE_NOT_DETECTED\020\377"
+  "\001B;Z9github.com/opencord/device-manageme"
+  "nt-interface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_2eproto = {
   false, InitDefaults_dmi_2fhw_2eproto, 
   descriptor_table_protodef_dmi_2fhw_2eproto,
-  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6366,
+  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6510,
 };
 
 void AddDescriptors_dmi_2fhw_2eproto() {
@@ -3236,16 +3272,23 @@
 void PortComponentAttributes::InitAsDefaultInstance() {
   ::dmi::_PortComponentAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
       ::dmi::PonIdConfig::internal_default_instance());
+  ::dmi::_PortComponentAttributes_default_instance_._instance.get_mutable()->distance_ = const_cast< ::dmi::PonDistance*>(
+      ::dmi::PonDistance::internal_default_instance());
 }
 class PortComponentAttributes::HasBitSetters {
  public:
   static const ::dmi::PonIdConfig& pon_id_config(const PortComponentAttributes* msg);
+  static const ::dmi::PonDistance& distance(const PortComponentAttributes* msg);
 };
 
 const ::dmi::PonIdConfig&
 PortComponentAttributes::HasBitSetters::pon_id_config(const PortComponentAttributes* msg) {
   return *msg->pon_id_config_;
 }
+const ::dmi::PonDistance&
+PortComponentAttributes::HasBitSetters::distance(const PortComponentAttributes* msg) {
+  return *msg->distance_;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int PortComponentAttributes::kConnectorTypeFieldNumber;
 const int PortComponentAttributes::kSpeedFieldNumber;
@@ -3254,6 +3297,7 @@
 const int PortComponentAttributes::kMappingLabelFieldNumber;
 const int PortComponentAttributes::kPonIdConfigFieldNumber;
 const int PortComponentAttributes::kSpeedAutonegotiationFieldNumber;
+const int PortComponentAttributes::kDistanceFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 PortComponentAttributes::PortComponentAttributes()
@@ -3278,6 +3322,11 @@
   } else {
     pon_id_config_ = nullptr;
   }
+  if (from.has_distance()) {
+    distance_ = new ::dmi::PonDistance(*from.distance_);
+  } else {
+    distance_ = nullptr;
+  }
   ::memcpy(&connector_type_, &from.connector_type_,
     static_cast<size_t>(reinterpret_cast<char*>(&speed_autonegotiation_) -
     reinterpret_cast<char*>(&connector_type_)) + sizeof(speed_autonegotiation_));
@@ -3303,6 +3352,7 @@
   physical_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   mapping_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete pon_id_config_;
+  if (this != internal_default_instance()) delete distance_;
 }
 
 void PortComponentAttributes::SetCachedSize(int size) const {
@@ -3326,6 +3376,10 @@
     delete pon_id_config_;
   }
   pon_id_config_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
   ::memset(&connector_type_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&speed_autonegotiation_) -
       reinterpret_cast<char*>(&connector_type_)) + sizeof(speed_autonegotiation_));
@@ -3421,6 +3475,19 @@
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
+      // .dmi.PonDistance distance = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonDistance::_InternalParse;
+        object = msg->mutable_distance();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3551,6 +3618,17 @@
         break;
       }
 
+      // .dmi.PonDistance distance = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_distance()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3627,6 +3705,12 @@
     ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->speed_autonegotiation(), output);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::distance(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -3692,6 +3776,13 @@
     target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->speed_autonegotiation(), target);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::distance(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -3734,6 +3825,13 @@
         *pon_id_config_);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *distance_);
+  }
+
   // .dmi.PortComponentAttributes.ConnectorType connector_type = 1;
   if (this->connector_type() != 0) {
     total_size += 1 +
@@ -3795,6 +3893,9 @@
   if (from.has_pon_id_config()) {
     mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
   }
+  if (from.has_distance()) {
+    mutable_distance()->::dmi::PonDistance::MergeFrom(from.distance());
+  }
   if (from.connector_type() != 0) {
     set_connector_type(from.connector_type());
   }
@@ -3839,6 +3940,7 @@
   mapping_label_.Swap(&other->mapping_label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
     GetArenaNoVirtual());
   swap(pon_id_config_, other->pon_id_config_);
+  swap(distance_, other->distance_);
   swap(connector_type_, other->connector_type_);
   swap(speed_, other->speed_);
   swap(protocol_, other->protocol_);
@@ -3853,21 +3955,337 @@
 
 // ===================================================================
 
+void PonDistance::InitAsDefaultInstance() {
+}
+class PonDistance::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PonDistance::kMaxDistanceFieldNumber;
+const int PonDistance::kMaxDifferentialDistanceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PonDistance::PonDistance()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.PonDistance)
+}
+PonDistance::PonDistance(const PonDistance& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&max_distance_, &from.max_distance_,
+    static_cast<size_t>(reinterpret_cast<char*>(&max_differential_distance_) -
+    reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+  // @@protoc_insertion_point(copy_constructor:dmi.PonDistance)
+}
+
+void PonDistance::SharedCtor() {
+  ::memset(&max_distance_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&max_differential_distance_) -
+      reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+}
+
+PonDistance::~PonDistance() {
+  // @@protoc_insertion_point(destructor:dmi.PonDistance)
+  SharedDtor();
+}
+
+void PonDistance::SharedDtor() {
+}
+
+void PonDistance::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PonDistance& PonDistance::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PonDistance_dmi_2fhw_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PonDistance::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&max_distance_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&max_differential_distance_) -
+      reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PonDistance::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PonDistance*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // uint32 max_distance = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        msg->set_max_distance(::google::protobuf::internal::ReadVarint(&ptr));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // uint32 max_differential_distance = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        msg->set_max_differential_distance(::google::protobuf::internal::ReadVarint(&ptr));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PonDistance::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.PonDistance)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // uint32 max_distance = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &max_distance_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 max_differential_distance = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &max_differential_distance_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.PonDistance)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.PonDistance)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PonDistance::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->max_distance(), output);
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->max_differential_distance(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.PonDistance)
+}
+
+::google::protobuf::uint8* PonDistance::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->max_distance(), target);
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->max_differential_distance(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.PonDistance)
+  return target;
+}
+
+size_t PonDistance::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.PonDistance)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->max_distance());
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->max_differential_distance());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PonDistance::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.PonDistance)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PonDistance* source =
+      ::google::protobuf::DynamicCastToGenerated<PonDistance>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.PonDistance)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.PonDistance)
+    MergeFrom(*source);
+  }
+}
+
+void PonDistance::MergeFrom(const PonDistance& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.PonDistance)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.max_distance() != 0) {
+    set_max_distance(from.max_distance());
+  }
+  if (from.max_differential_distance() != 0) {
+    set_max_differential_distance(from.max_differential_distance());
+  }
+}
+
+void PonDistance::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.PonDistance)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PonDistance::CopyFrom(const PonDistance& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.PonDistance)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PonDistance::IsInitialized() const {
+  return true;
+}
+
+void PonDistance::Swap(PonDistance* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PonDistance::InternalSwap(PonDistance* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(max_distance_, other->max_distance_);
+  swap(max_differential_distance_, other->max_differential_distance_);
+}
+
+::google::protobuf::Metadata PonDistance::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_2eproto);
+  return ::file_level_metadata_dmi_2fhw_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void PortComponentChangeAttributes::InitAsDefaultInstance() {
   ::dmi::_PortComponentChangeAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
       ::dmi::PonIdConfig::internal_default_instance());
+  ::dmi::_PortComponentChangeAttributes_default_instance_._instance.get_mutable()->distance_ = const_cast< ::dmi::PonDistance*>(
+      ::dmi::PonDistance::internal_default_instance());
 }
 class PortComponentChangeAttributes::HasBitSetters {
  public:
   static const ::dmi::PonIdConfig& pon_id_config(const PortComponentChangeAttributes* msg);
+  static const ::dmi::PonDistance& distance(const PortComponentChangeAttributes* msg);
 };
 
 const ::dmi::PonIdConfig&
 PortComponentChangeAttributes::HasBitSetters::pon_id_config(const PortComponentChangeAttributes* msg) {
   return *msg->pon_id_config_;
 }
+const ::dmi::PonDistance&
+PortComponentChangeAttributes::HasBitSetters::distance(const PortComponentChangeAttributes* msg) {
+  return *msg->distance_;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int PortComponentChangeAttributes::kPonIdConfigFieldNumber;
+const int PortComponentChangeAttributes::kDistanceFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 PortComponentChangeAttributes::PortComponentChangeAttributes()
@@ -3884,13 +4302,20 @@
   } else {
     pon_id_config_ = nullptr;
   }
+  if (from.has_distance()) {
+    distance_ = new ::dmi::PonDistance(*from.distance_);
+  } else {
+    distance_ = nullptr;
+  }
   // @@protoc_insertion_point(copy_constructor:dmi.PortComponentChangeAttributes)
 }
 
 void PortComponentChangeAttributes::SharedCtor() {
   ::google::protobuf::internal::InitSCC(
       &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
-  pon_id_config_ = nullptr;
+  ::memset(&pon_id_config_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&distance_) -
+      reinterpret_cast<char*>(&pon_id_config_)) + sizeof(distance_));
 }
 
 PortComponentChangeAttributes::~PortComponentChangeAttributes() {
@@ -3900,6 +4325,7 @@
 
 void PortComponentChangeAttributes::SharedDtor() {
   if (this != internal_default_instance()) delete pon_id_config_;
+  if (this != internal_default_instance()) delete distance_;
 }
 
 void PortComponentChangeAttributes::SetCachedSize(int size) const {
@@ -3921,6 +4347,10 @@
     delete pon_id_config_;
   }
   pon_id_config_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
   _internal_metadata_.Clear();
 }
 
@@ -3950,6 +4380,19 @@
             {parser_till_end, object}, ptr - size, ptr));
         break;
       }
+      // .dmi.PonDistance distance = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonDistance::_InternalParse;
+        object = msg->mutable_distance();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3991,6 +4434,17 @@
         break;
       }
 
+      // .dmi.PonDistance distance = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_distance()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -4024,6 +4478,12 @@
       1, HasBitSetters::pon_id_config(this), output);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::distance(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -4044,6 +4504,13 @@
         1, HasBitSetters::pon_id_config(this), target);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::distance(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -4072,6 +4539,13 @@
         *pon_id_config_);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *distance_);
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   SetCachedSize(cached_size);
   return total_size;
@@ -4102,6 +4576,9 @@
   if (from.has_pon_id_config()) {
     mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
   }
+  if (from.has_distance()) {
+    mutable_distance()->::dmi::PonDistance::MergeFrom(from.distance());
+  }
 }
 
 void PortComponentChangeAttributes::CopyFrom(const ::google::protobuf::Message& from) {
@@ -4130,6 +4607,7 @@
   using std::swap;
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(pon_id_config_, other->pon_id_config_);
+  swap(distance_, other->distance_);
 }
 
 ::google::protobuf::Metadata PortComponentChangeAttributes::GetMetadata() const {
@@ -9284,6 +9762,9 @@
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentAttributes >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::PonDistance* Arena::CreateMaybeMessage< ::dmi::PonDistance >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::PonDistance >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentChangeAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentChangeAttributes >(arena);
 }