@@ -160,7 +160,8 @@ class MKTXPConfigKeys:
160160 # UnRegistered entries placeholder
161161 NO_ENTRIES_REGISTERED = 'NoEntriesRegistered'
162162
163- MKTXP_USE_COMMENTS_OVER_NAMES = 'use_comments_over_names'
163+ MKTXP_USE_COMMENTS_OVER_NAMES = 'use_comments_over_names' # Legacy option, deprecated
164+ FE_INTERFACE_NAME_FORMAT = 'interface_name_format'
164165
165166 # Base router id labels
166167 ROUTERBOARD_NAME = 'routerboard_name'
@@ -184,6 +185,7 @@ class MKTXPConfigKeys:
184185 DEFAULT_FE_ADDRESS_LIST_KEY = 'None'
185186 DEFAULT_FE_IPV6_ADDRESS_LIST_KEY = 'None'
186187 DEFAULT_FE_CUSTOM_LABELS_KEY = 'None'
188+ DEFAULT_FE_INTERFACE_NAME_FORMAT = 'name'
187189
188190 DEFAULT_MKTXP_PORT = 49090
189191 DEFAULT_MKTXP_SOCKET_TIMEOUT = 2
@@ -204,14 +206,14 @@ class MKTXPConfigKeys:
204206
205207 # Feature keys enabled by default
206208 BOOLEAN_KEYS_YES = {PLAINTEXT_LOGIN_KEY , FE_DHCP_KEY , FE_HEALTH_KEY , FE_PACKAGE_KEY , FE_DHCP_LEASE_KEY , FE_IP_CONNECTIONS_KEY , FE_INTERFACE_KEY ,
207- FE_ROUTE_KEY , FE_DHCP_POOL_KEY , FE_FIREWALL_KEY , FE_NEIGHBOR_KEY , FE_MONITOR_KEY , SSL_CHECK_HOSTNAME , MKTXP_USE_COMMENTS_OVER_NAMES ,
209+ FE_ROUTE_KEY , FE_DHCP_POOL_KEY , FE_FIREWALL_KEY , FE_NEIGHBOR_KEY , FE_MONITOR_KEY , SSL_CHECK_HOSTNAME ,
208210 FE_WIRELESS_KEY , FE_WIRELESS_CLIENTS_KEY , FE_CAPSMAN_KEY , FE_CAPSMAN_CLIENTS_KEY , FE_POE_KEY ,
209211 FE_NETWATCH_KEY , FE_PUBLIC_IP_KEY , FE_USER_KEY , FE_QUEUE_KEY }
210212
211213 SYSTEM_BOOLEAN_KEYS_YES = {MKTXP_PERSISTENT_ROUTER_CONNECTION_POOL , MKTXP_PERSISTENT_DHCP_CACHE }
212214 SYSTEM_BOOLEAN_KEYS_NO = {MKTXP_BANDWIDTH_KEY , MKTXP_VERBOSE_MODE , MKTXP_FETCH_IN_PARALLEL , MKTXP_COMPACT_CONFIG , MKTXP_PROMETHEUS_HEADERS_DEDUPLICATION }
213215
214- STR_KEYS = (HOST_KEY , USER_KEY , PASSWD_KEY , CREDENTIALS_FILE_KEY , SSL_CA_FILE , FE_REMOTE_DHCP_ENTRY , FE_REMOTE_CAPSMAN_ENTRY , FE_ADDRESS_LIST_KEY , FE_IPV6_ADDRESS_LIST_KEY , FE_CUSTOM_LABELS_KEY )
216+ STR_KEYS = (HOST_KEY , USER_KEY , PASSWD_KEY , CREDENTIALS_FILE_KEY , SSL_CA_FILE , FE_REMOTE_DHCP_ENTRY , FE_REMOTE_CAPSMAN_ENTRY , FE_ADDRESS_LIST_KEY , FE_IPV6_ADDRESS_LIST_KEY , FE_CUSTOM_LABELS_KEY , FE_INTERFACE_NAME_FORMAT )
215217 MKTXP_STR_KEYS = (MKTXP_BANDWIDTH_TEST_DNS_SERVER ,)
216218 INT_KEYS = ()
217219 MKTXP_INT_KEYS = (PORT_KEY , MKTXP_SOCKET_TIMEOUT , MKTXP_INITIAL_DELAY , MKTXP_MAX_DELAY ,
@@ -232,7 +234,7 @@ class ConfigEntry:
232234 MKTXPConfigKeys .FE_DHCP_KEY , MKTXPConfigKeys .FE_HEALTH_KEY , MKTXPConfigKeys .FE_PACKAGE_KEY , MKTXPConfigKeys .FE_DHCP_LEASE_KEY , MKTXPConfigKeys .FE_INTERFACE_KEY ,
233235 MKTXPConfigKeys .FE_MONITOR_KEY , MKTXPConfigKeys .FE_W60G_KEY , MKTXPConfigKeys .FE_WIRELESS_KEY , MKTXPConfigKeys .FE_WIRELESS_CLIENTS_KEY ,
234236 MKTXPConfigKeys .FE_IP_CONNECTIONS_KEY , MKTXPConfigKeys .FE_CONNECTION_STATS_KEY , MKTXPConfigKeys .FE_CAPSMAN_KEY , MKTXPConfigKeys .FE_CAPSMAN_CLIENTS_KEY , MKTXPConfigKeys .FE_POE_KEY ,
235- MKTXPConfigKeys .FE_NETWATCH_KEY , MKTXPConfigKeys .MKTXP_USE_COMMENTS_OVER_NAMES , MKTXPConfigKeys .FE_PUBLIC_IP_KEY ,
237+ MKTXPConfigKeys .FE_NETWATCH_KEY , MKTXPConfigKeys .FE_INTERFACE_NAME_FORMAT , MKTXPConfigKeys .FE_PUBLIC_IP_KEY ,
236238 MKTXPConfigKeys .FE_ROUTE_KEY , MKTXPConfigKeys .FE_DHCP_POOL_KEY , MKTXPConfigKeys .FE_FIREWALL_KEY , MKTXPConfigKeys .FE_ADDRESS_LIST_KEY , MKTXPConfigKeys .FE_NEIGHBOR_KEY , MKTXPConfigKeys .FE_DNS_KEY ,
237239 MKTXPConfigKeys .FE_IPV6_ROUTE_KEY , MKTXPConfigKeys .FE_IPV6_DHCP_POOL_KEY , MKTXPConfigKeys .FE_IPV6_FIREWALL_KEY , MKTXPConfigKeys .FE_IPV6_ADDRESS_LIST_KEY , MKTXPConfigKeys .FE_IPV6_NEIGHBOR_KEY ,
238240 MKTXPConfigKeys .FE_USER_KEY , MKTXPConfigKeys .FE_QUEUE_KEY , MKTXPConfigKeys .FE_REMOTE_DHCP_ENTRY , MKTXPConfigKeys .FE_REMOTE_CAPSMAN_ENTRY , MKTXPConfigKeys .FE_CHECK_FOR_UPDATES , MKTXPConfigKeys .FE_BFD_KEY , MKTXPConfigKeys .FE_BGP_KEY ,
@@ -531,11 +533,43 @@ def _config_entry_reader(self, entry_name):
531533 def _default_config_entry_reader (self ):
532534 default_config_entry_reader = {}
533535 new_keys , new_keys_values = [], {}
536+
537+ # Track if the section was created in this run
538+ created_latest_section = False
534539
535540 if not self .config .get (MKTXPConfigKeys .DEFAULT_ENTRY_KEY ):
536541 self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ] = {}
537542 if not self .config .get (MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ):
538543 self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ] = {}
544+ created_latest_section = True
545+
546+ # Migrate legacy use_comments_over_names to interface_name_format FIRST
547+ # This ensures the migrated value is available for the normal config processing below
548+ migrated_entries = []
549+ for entry_name in list (self .config .keys ()):
550+ if entry_name == MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY :
551+ continue
552+ if self .config [entry_name ].get (MKTXPConfigKeys .MKTXP_USE_COMMENTS_OVER_NAMES ) is not None :
553+ # Migrate the legacy option
554+ legacy_value = self .config [entry_name ].as_bool (MKTXPConfigKeys .MKTXP_USE_COMMENTS_OVER_NAMES )
555+ new_value = 'comment' if legacy_value else 'name'
556+ self .config [entry_name ][MKTXPConfigKeys .FE_INTERFACE_NAME_FORMAT ] = new_value
557+ # Remove the legacy key
558+ self .config [entry_name ].pop (MKTXPConfigKeys .MKTXP_USE_COMMENTS_OVER_NAMES , None )
559+ migrated_entries .append (entry_name )
560+
561+ if migrated_entries :
562+ # Remove empty new_default_parameters section if it exists
563+ if self .config .get (MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ) and \
564+ len (self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ]) == 0 :
565+ del self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ]
566+
567+ try :
568+ self .config .write ()
569+ print (f'Migrated use_comments_over_names to interface_name_format for entries: { ", " .join (migrated_entries )} ' )
570+ except Exception as exc :
571+ print (f'Error migrating use_comments_over_names to interface_name_format: { exc } ' )
572+ print ('Please update mktxp.conf manually' )
539573
540574 for key in MKTXPConfigKeys .BOOLEAN_KEYS_NO .union (MKTXPConfigKeys .BOOLEAN_KEYS_YES ):
541575 if self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (key ) is not None :
@@ -590,6 +624,12 @@ def _default_config_entry_reader(self):
590624 except Exception as exc :
591625 print (f'Error updating default router entry with new feature keys { new_keys } : { exc } ' )
592626 print ('Please update mktxp.conf to its latest version manually' )
627+ else :
628+ # Only clean up if the section was created and is now empty after migration
629+ if created_latest_section and \
630+ self .config .get (MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ) is not None and \
631+ len (self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ]) == 0 :
632+ del self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ]
593633
594634 return default_config_entry_reader
595635
@@ -607,6 +647,7 @@ def _default_value_for_key(self, key, value=None):
607647 MKTXPConfigKeys .FE_REMOTE_CAPSMAN_ENTRY : lambda _ : MKTXPConfigKeys .DEFAULT_FE_REMOTE_CAPSMAN_ENTRY ,
608648 MKTXPConfigKeys .FE_ADDRESS_LIST_KEY : lambda _ : MKTXPConfigKeys .DEFAULT_FE_ADDRESS_LIST_KEY ,
609649 MKTXPConfigKeys .FE_IPV6_ADDRESS_LIST_KEY : lambda _ : MKTXPConfigKeys .DEFAULT_FE_IPV6_ADDRESS_LIST_KEY ,
650+ MKTXPConfigKeys .FE_INTERFACE_NAME_FORMAT : lambda _ : MKTXPConfigKeys .DEFAULT_FE_INTERFACE_NAME_FORMAT ,
610651 MKTXPConfigKeys .MKTXP_SOCKET_TIMEOUT : lambda _ : MKTXPConfigKeys .DEFAULT_MKTXP_SOCKET_TIMEOUT ,
611652 MKTXPConfigKeys .MKTXP_INITIAL_DELAY : lambda _ : MKTXPConfigKeys .DEFAULT_MKTXP_INITIAL_DELAY ,
612653 MKTXPConfigKeys .MKTXP_MAX_DELAY : lambda _ : MKTXPConfigKeys .DEFAULT_MKTXP_MAX_DELAY ,
0 commit comments