add --log-nodes flag for comprehensive node logging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
59
nodes.go
59
nodes.go
@@ -15,21 +15,26 @@ type Interface struct {
|
||||
}
|
||||
|
||||
func (i *Interface) String() string {
|
||||
name := i.Name
|
||||
if name == "" {
|
||||
name = "??"
|
||||
}
|
||||
|
||||
var ips []string
|
||||
for _, ip := range i.IPs {
|
||||
ips = append(ips, ip.String())
|
||||
}
|
||||
sort.Strings(ips)
|
||||
|
||||
if len(ips) == 0 {
|
||||
return fmt.Sprintf("%s/%s", name, i.MAC)
|
||||
var parts []string
|
||||
parts = append(parts, i.MAC.String())
|
||||
if i.Name != "" {
|
||||
parts = append(parts, fmt.Sprintf("(%s)", i.Name))
|
||||
}
|
||||
return fmt.Sprintf("%s/%s %v", name, i.MAC, ips)
|
||||
if len(ips) > 0 {
|
||||
parts = append(parts, fmt.Sprintf("%v", ips))
|
||||
}
|
||||
|
||||
result := parts[0]
|
||||
for _, p := range parts[1:] {
|
||||
result += " " + p
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
@@ -131,11 +136,16 @@ func (n *Nodes) Update(mac net.HardwareAddr, ips []net.IP, ifaceName, nodeName,
|
||||
node.Name = nodeName
|
||||
}
|
||||
|
||||
if len(added) > 0 && n.t.LogEvents {
|
||||
if isNew {
|
||||
log.Printf("[add] %s %v (via %s)", node, added, source)
|
||||
} else {
|
||||
log.Printf("[update] %s +%v (via %s)", node, added, source)
|
||||
if len(added) > 0 {
|
||||
if n.t.LogEvents {
|
||||
if isNew {
|
||||
log.Printf("[add] %s %v (via %s)", node, added, source)
|
||||
} else {
|
||||
log.Printf("[update] %s +%v (via %s)", node, added, source)
|
||||
}
|
||||
}
|
||||
if n.t.LogNodes {
|
||||
n.logNode(node)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -172,6 +182,10 @@ func (n *Nodes) Merge(macs []net.HardwareAddr, source string) {
|
||||
}
|
||||
n.mergeNodes(targetID, ids[i])
|
||||
}
|
||||
|
||||
if n.t.LogNodes {
|
||||
n.logNode(n.nodes[targetID])
|
||||
}
|
||||
}
|
||||
|
||||
func (n *Nodes) mergeNodes(keepID, mergeID int) {
|
||||
@@ -223,6 +237,25 @@ func (n *Nodes) GetByMAC(mac net.HardwareAddr) *Node {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n *Nodes) logNode(node *Node) {
|
||||
name := node.Name
|
||||
if name == "" {
|
||||
name = "??"
|
||||
}
|
||||
log.Printf("[node] %s", name)
|
||||
|
||||
var macKeys []string
|
||||
for macKey := range node.Interfaces {
|
||||
macKeys = append(macKeys, macKey)
|
||||
}
|
||||
sort.Strings(macKeys)
|
||||
|
||||
for _, macKey := range macKeys {
|
||||
iface := node.Interfaces[macKey]
|
||||
log.Printf("[node] %s", iface)
|
||||
}
|
||||
}
|
||||
|
||||
func (n *Nodes) All() []*Node {
|
||||
n.mu.RLock()
|
||||
defer n.mu.RUnlock()
|
||||
|
||||
Reference in New Issue
Block a user