system: derive the default hostname from the MAC address

Every switch came up as "RTLPlayground", so several of them on one
network were indistinguishable until someone configured a name. Append
the last three MAC octets (e.g. RTLPlayground-1ef924) - unique in
practice, still recognisable, and any "hostname ..." line in the startup
config overrides it as before.

Suggested-by: plaes
This commit is contained in:
d00f
2026-08-04 05:43:05 +02:00
parent 13120127df
commit 94716ceb5d
+13 -1
View File
@@ -2146,7 +2146,19 @@ void main(void)
vlan_setup(); vlan_setup();
port_l2_setup(); port_l2_setup();
igmp_setup(); igmp_setup();
strcpy((__xdata uint8_t *)hostname, "RTLPlayground"); /* default until "hostname ..." replay */ /* Default name carries the tail of the MAC, so several switches on one
* network are distinguishable out of the box (suggested in review).
* Overridden by a "hostname ..." line in the startup config. */
strcpy((__xdata uint8_t *)hostname, "RTLPlayground-");
/* Spelled out rather than looped: locals here land in the 8051's
* internal-RAM overlay, which is full on a build with every feature on. */
hostname[14] = hex[uip_ethaddr.addr[3] >> 4];
hostname[15] = hex[uip_ethaddr.addr[3] & 0xf];
hostname[16] = hex[uip_ethaddr.addr[4] >> 4];
hostname[17] = hex[uip_ethaddr.addr[4] & 0xf];
hostname[18] = hex[uip_ethaddr.addr[5] >> 4];
hostname[19] = hex[uip_ethaddr.addr[5] & 0xf];
hostname[20] = '\0';
bandwidth_setup(); bandwidth_setup();
uip_init(); uip_init();
uip_arp_init(); uip_arp_init();