diff --git a/main b/main index 8d0526d..48ff4bd 100755 Binary files a/main and b/main differ diff --git a/main.go b/main.go index 4ede9a0..b81fc99 100644 --- a/main.go +++ b/main.go @@ -20,7 +20,6 @@ func main() { addrStyle := lipgloss.NewStyle().Faint(true) infoStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("33")) - // Save the current namespace origNS, err := netns.Get() if err != nil { fmt.Println("Error getting current namespace:", err) @@ -28,7 +27,6 @@ func main() { } defer origNS.Close() - // Get all links in the current namespace links, err := netlink.LinkList() if err != nil { fmt.Println("Error listing links:", err) @@ -51,7 +49,6 @@ func main() { fmt.Printf(addrStyle.Render(" %d"), attrs.MTU) fmt.Printf(" %s\n", state) - // IPv4 only addrs, err := netlink.AddrList(link, unix.AF_INET) if err == nil { for _, addr := range addrs { @@ -91,7 +88,7 @@ func main() { if rl.Type() == "veth" && rl.Attrs().ParentIndex == attrs.Index { fmt.Println(" ", infoStyle.Render("Peer in namespace:"), entry.Name(), "as", rl.Attrs().Name) - // Get peer IPs inside this namespace + // Show IPs on peer peerAddrs, err := netlink.AddrList(rl, unix.AF_INET) if err == nil { for _, pa := range peerAddrs { @@ -99,6 +96,22 @@ func main() { } } + fmt.Println(" ", infoStyle.Render("Interfaces in namespace:"), entry.Name()) + for _, intf := range remoteLinks { + intfState := downStyle.Render("DOWN") + if intf.Attrs().Flags&net.FlagUp != 0 { + intfState = upStyle.Render("UP") + } + fmt.Printf(" %s %s\n", headerStyle.Render(intf.Attrs().Name), intfState) + + nsAddrs, err := netlink.AddrList(intf, unix.AF_INET) + if err == nil { + for _, addr := range nsAddrs { + fmt.Println(" ", ipStyle.Render(addr.IPNet.String())) + } + } + } + peerFound = true break }