→ {interface_.bridge_physical_interface}
{interface_.bridge_physical_interface.startsWith("bond") &&
networkData.physical_interfaces && (
@@ -529,9 +529,54 @@ export function NetworkMetrics() {
{selectedInterface.type === "bridge" && selectedInterface.bridge_physical_interface && (
Physical Interface
-
+
{selectedInterface.bridge_physical_interface}
+ {selectedInterface.bridge_physical_interface.startsWith("bond") &&
+ networkData?.physical_interfaces && (
+ <>
+ {(() => {
+ const bondInterface = networkData.physical_interfaces.find(
+ (iface) => iface.name === selectedInterface.bridge_physical_interface,
+ )
+ if (bondInterface?.bond_slaves && bondInterface.bond_slaves.length > 0) {
+ return (
+
+
Bond Members
+
+ {bondInterface.bond_slaves.map((slave, idx) => (
+
+ {slave}
+
+ ))}
+
+
+ )
+ }
+ return null
+ })()}
+ >
+ )}
+ {selectedInterface.bridge_bond_slaves && selectedInterface.bridge_bond_slaves.length > 0 && (
+
+
Bond Members
+
+ {selectedInterface.bridge_bond_slaves.map((slave, idx) => (
+
+ {slave}
+
+ ))}
+
+
+ )}
)}
{selectedInterface.type === "vm_lxc" && selectedInterface.vm_name && (
@@ -691,64 +736,36 @@ export function NetworkMetrics() {
)}
{/* Bridge Information */}
- {selectedInterface.type === "bridge" && (
+ {selectedInterface.type === "bridge" && selectedInterface.bridge_members && (
Bridge Configuration
-
- {selectedInterface.bridge_physical_interface && (
-
-
Physical Interface
-
- {selectedInterface.bridge_physical_interface}
-
-
- )}
- {selectedInterface.bridge_bond_slaves && selectedInterface.bridge_bond_slaves.length > 0 && (
-
-
Bond Slave Interfaces
-
- {selectedInterface.bridge_bond_slaves.map((slave, idx) => (
+
+
Virtual Member Interfaces
+
+ {selectedInterface.bridge_members.length > 0 ? (
+ selectedInterface.bridge_members
+ .filter(
+ (member) =>
+ !member.startsWith("enp") &&
+ !member.startsWith("eth") &&
+ !member.startsWith("eno") &&
+ !member.startsWith("ens") &&
+ !member.startsWith("wlan") &&
+ !member.startsWith("wlp"),
+ )
+ .map((member, idx) => (
- {slave}
+ {member}
- ))}
-
-
- )}
- {selectedInterface.bridge_members && (
-
-
Virtual Member Interfaces
-
- {selectedInterface.bridge_members.length > 0 ? (
- selectedInterface.bridge_members
- .filter(
- (member) =>
- !member.startsWith("enp") &&
- !member.startsWith("eth") &&
- !member.startsWith("eno") &&
- !member.startsWith("ens") &&
- !member.startsWith("wlan") &&
- !member.startsWith("wlp"),
- )
- .map((member, idx) => (
-
- {member}
-
- ))
- ) : (
-
No virtual members
- )}
-
-
- )}
+ ))
+ ) : (
+
No virtual members
+ )}
+
)}
diff --git a/AppImage/components/virtual-machines.tsx b/AppImage/components/virtual-machines.tsx
index 1027705..75abecd 100644
--- a/AppImage/components/virtual-machines.tsx
+++ b/AppImage/components/virtual-machines.tsx
@@ -94,24 +94,6 @@ const formatBytes = (bytes: number | undefined): string => {
return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`
}
-const extractIPFromNetConfig = (netConfig: string | undefined): string => {
- if (!netConfig) return "N/A"
-
- // Parse the network config string: name=eth0,bridge=vmbr0,gw=192.168.0.1,hwaddr=...,ip=192.168.0.4/24,type=veth
- const ipMatch = netConfig.match(/ip=([^,]+)/)
- if (ipMatch && ipMatch[1]) {
- const ip = ipMatch[1]
- // Check if it's DHCP
- if (ip.toLowerCase() === "dhcp") {
- return "DHCP"
- }
- // Return the IP without the subnet mask for cleaner display
- return ip.split("/")[0]
- }
-
- return "N/A"
-}
-
export function VirtualMachines() {
const {
data: vmData,
@@ -414,7 +396,7 @@ export function VirtualMachines() {
-
+
CPU Usage
{cpuPercent}%
@@ -642,31 +624,16 @@ export function VirtualMachines() {
{Object.keys(vmDetails.config)
.filter((key) => key.match(/^net\d+$/))
- .map((netKey) => {
- const netConfig = vmDetails.config[netKey]
- const ipAddress = selectedVM?.type === "lxc" ? extractIPFromNetConfig(netConfig) : null
-
- return (
-
-
- Network Interface {netKey.replace("net", "")}
-
- {ipAddress && (
-
- IP Address:
-
- {ipAddress}
-
-
- )}
-
- {netConfig}
-
+ .map((netKey) => (
+
+
+ Network Interface {netKey.replace("net", "")}
- )
- })}
+
+ {vmDetails.config[netKey]}
+
+
+ ))}
{vmDetails.config.nameserver && (