Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/nmlite/link/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,9 +354,9 @@ func (nm *NetlinkManager) AddDefaultRoute(link *Link, gateway net.IP, family int
}

// RemoveDefaultRoute removes the default route for the given family
func (nm *NetlinkManager) RemoveDefaultRoute(family int) error {
func (nm *NetlinkManager) RemoveDefaultRoute(iface *Link, family int) error {
l := nm.logger.With().Int("family", family).Logger()
routes, err := nm.RouteList(nil, family)
routes, err := nm.RouteList(iface, family)
if err != nil {
l.Error().Err(err).Msg("failed to get route list")
return fmt.Errorf("failed to get routes: %w", err)
Expand Down
6 changes: 3 additions & 3 deletions pkg/nmlite/static.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ func (scm *StaticConfigManager) DisableIPv4() error {
}

// Remove default route
if err := scm.removeIPv4DefaultRoute(); err != nil {
if err := scm.removeIPv4DefaultRoute(iface); err != nil {
scm.logger.Warn().Err(err).Msg("failed to remove IPv4 default route")
}

Expand Down Expand Up @@ -178,7 +178,7 @@ func (scm *StaticConfigManager) EnableIPv6LinkLocal() error {
}

// removeIPv4DefaultRoute removes IPv4 default route
func (scm *StaticConfigManager) removeIPv4DefaultRoute() error {
func (scm *StaticConfigManager) removeIPv4DefaultRoute(iface *link.Link) error {
netlinkMgr := getNetlinkManager()
return netlinkMgr.RemoveDefaultRoute(link.AfInet)
return netlinkMgr.RemoveDefaultRoute(iface, link.AfInet)
}
125 changes: 65 additions & 60 deletions ui/src/routes/devices.$id.settings.network.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,7 @@ export default function SettingsNetworkRoute() {
<SelectMenuBasic
size="SM"
options={[
{ value: "disabled", label: m.network_ipv6_mode_disabled() },
{ value: "dhcp", label: m.network_ipv4_mode_dhcp() },
{ value: "static", label: m.network_ipv4_mode_static() },
]}
Expand All @@ -518,45 +519,47 @@ export default function SettingsNetworkRoute() {

<PublicIPCard />

<div>
<AutoHeight>
{formState.isLoading ? (
<GridCard>
<div className="p-4">
<div className="space-y-4">
<div className="h-6 w-1/3 animate-pulse rounded bg-slate-200 dark:bg-slate-700" />
<div className="animate-pulse space-y-2">
<div className="h-4 w-1/4 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/4 rounded bg-slate-200 dark:bg-slate-700" />
{ipv4mode !== "disabled" && (
<div>
<AutoHeight>
{formState.isLoading ? (
<GridCard>
<div className="p-4">
<div className="space-y-4">
<div className="h-6 w-1/3 animate-pulse rounded bg-slate-200 dark:bg-slate-700" />
<div className="animate-pulse space-y-2">
<div className="h-4 w-1/4 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/4 rounded bg-slate-200 dark:bg-slate-700" />
</div>
</div>
</div>
</div>
</GridCard>
) : ipv4mode === "static" ? (
<StaticIpv4Card />
) : ipv4mode === "dhcp" && !!formState.dirtyFields.ipv4_mode ? (
<EmptyCard
IconElm={LuEthernetPort}
headline={m.network_pending_dhcp_mode_change_headline()}
description={m.network_pending_dhcp_mode_change_description()}
/>
) : ipv4mode === "dhcp" ? (
<DhcpLeaseCard
networkState={networkState}
setShowRenewLeaseConfirm={setShowRenewLeaseConfirm}
/>
) : (
<EmptyCard
IconElm={LuEthernetPort}
headline={m.network_no_information_headline()}
description={m.network_no_information_description()}
/>
)}
</AutoHeight>
</div>
</GridCard>
) : ipv4mode === "static" ? (
<StaticIpv4Card />
) : ipv4mode === "dhcp" && !!formState.dirtyFields.ipv4_mode ? (
<EmptyCard
IconElm={LuEthernetPort}
headline={m.network_pending_dhcp_mode_change_headline()}
description={m.network_pending_dhcp_mode_change_description()}
/>
) : ipv4mode === "dhcp" ? (
<DhcpLeaseCard
networkState={networkState}
setShowRenewLeaseConfirm={setShowRenewLeaseConfirm}
/>
) : (
<EmptyCard
IconElm={LuEthernetPort}
headline={m.network_no_information_headline()}
description={m.network_no_information_description()}
/>
)}
</AutoHeight>
</div>
)}

<SettingsItem
title={m.network_ipv6_mode_title()}
Expand All @@ -565,7 +568,7 @@ export default function SettingsNetworkRoute() {
<SelectMenuBasic
size="SM"
options={[
//{ value: "disabled", label: m.network_ipv6_mode_disabled() },
{ value: "disabled", label: m.network_ipv6_mode_disabled() },
{ value: "slaac", label: m.network_ipv6_mode_slaac() },
//{ value: "dhcpv6", label: m.network_ipv6_mode_dhcpv6() },
//{ value: "slaac_and_dhcpv6", label: m.network_ipv6_mode_slaac_dhcpv6() },
Expand All @@ -576,30 +579,32 @@ export default function SettingsNetworkRoute() {
/>
</SettingsItem>

<div className="space-y-4">
<AutoHeight>
{!networkState ? (
<GridCard>
<div className="p-4">
<div className="space-y-4">
<h3 className="text-base font-bold text-slate-900 dark:text-white">
{m.network_ipv6_information()}
</h3>
<div className="animate-pulse space-y-3">
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
{ipv6mode !== "disabled" && (
<div className="space-y-4">
<AutoHeight>
{!networkState ? (
<GridCard>
<div className="p-4">
<div className="space-y-4">
<h3 className="text-base font-bold text-slate-900 dark:text-white">
{m.network_ipv6_information()}
</h3>
<div className="animate-pulse space-y-3">
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/2 rounded bg-slate-200 dark:bg-slate-700" />
<div className="h-4 w-1/3 rounded bg-slate-200 dark:bg-slate-700" />
</div>
</div>
</div>
</div>
</GridCard>
) : ipv6mode === "static" ? (
<StaticIpv6Card />
) : (
<Ipv6NetworkCard networkState={networkState || undefined} />
)}
</AutoHeight>
</div>
</GridCard>
) : ipv6mode === "static" ? (
<StaticIpv6Card />
) : (
<Ipv6NetworkCard networkState={networkState || undefined} />
)}
</AutoHeight>
</div>
)}

{isLLDPAvailable && (
<div className="hidden space-y-4">
Expand Down