Clear MAC table on each SNMP poll and reduce ping threshold
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -94,7 +94,11 @@
|
|||||||
"Bash(go test:*)",
|
"Bash(go test:*)",
|
||||||
"Bash(git stash:*)",
|
"Bash(git stash:*)",
|
||||||
"Bash(git revert:*)",
|
"Bash(git revert:*)",
|
||||||
"Bash(done)"
|
"Bash(done)",
|
||||||
|
"Bash(while read id)",
|
||||||
|
"Bash(do cat /home/flamingcow/tendrils/status)",
|
||||||
|
"Bash(for id in node_01kgay2wynew8tjh1bpr9sd11e node_01kgay2wynew2t7qmfvtkrq2nb node_01kgay2wykevgbkxfvavxgpq30 node_01kgay2wynew5b80p45h8mdtpj node_01kgay2wynevtsrw26tprvqysw node_01kgay2wynevy9gp10a6rr4y2d)",
|
||||||
|
"Bash(do)"
|
||||||
],
|
],
|
||||||
"ask": [
|
"ask": [
|
||||||
"Bash(rm *)"
|
"Bash(rm *)"
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,4 +5,4 @@ log
|
|||||||
*~
|
*~
|
||||||
cert.pem
|
cert.pem
|
||||||
key.pem
|
key.pem
|
||||||
status
|
status*
|
||||||
|
|||||||
@@ -217,3 +217,6 @@ locations:
|
|||||||
nodes:
|
nodes:
|
||||||
- names: ["sunset"]
|
- names: ["sunset"]
|
||||||
- names: ["RX-CONTROL-1"]
|
- names: ["RX-CONTROL-1"]
|
||||||
|
|
||||||
|
shared_names:
|
||||||
|
- "ULXD4Q G50 REV5"
|
||||||
|
|||||||
7
nodes.go
7
nodes.go
@@ -503,6 +503,13 @@ func (n *Nodes) UpdateMACTable(node *Node, peerMAC net.HardwareAddr, ifaceName s
|
|||||||
node.MACTable[peerMAC.String()] = ifaceName
|
node.MACTable[peerMAC.String()] = ifaceName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *Nodes) ClearMACTable(node *Node) {
|
||||||
|
n.mu.Lock()
|
||||||
|
defer n.mu.Unlock()
|
||||||
|
|
||||||
|
node.MACTable = map[string]string{}
|
||||||
|
}
|
||||||
|
|
||||||
func (n *Nodes) SetDanteClockMaster(ip net.IP) {
|
func (n *Nodes) SetDanteClockMaster(ip net.IP) {
|
||||||
n.Update(nil, nil, []net.IP{ip}, "", "", "ptp")
|
n.Update(nil, nil, []net.IP{ip}, "", "", "ptp")
|
||||||
|
|
||||||
|
|||||||
2
ping.go
2
ping.go
@@ -24,7 +24,7 @@ type PingManager struct {
|
|||||||
failures map[string]int
|
failures map[string]int
|
||||||
}
|
}
|
||||||
|
|
||||||
const pingFailureThreshold = 5
|
const pingFailureThreshold = 3
|
||||||
|
|
||||||
func NewPingManager() *PingManager {
|
func NewPingManager() *PingManager {
|
||||||
pm := &PingManager{
|
pm := &PingManager{
|
||||||
|
|||||||
2
snmp.go
2
snmp.go
@@ -544,6 +544,8 @@ func (t *Tendrils) queryBridgeMIB(snmp *gosnmp.GoSNMP, node *Node, ifNames map[i
|
|||||||
|
|
||||||
bridgePortToIfIndex := t.getBridgePortMapping(snmp)
|
bridgePortToIfIndex := t.getBridgePortMapping(snmp)
|
||||||
|
|
||||||
|
t.nodes.ClearMACTable(node)
|
||||||
|
|
||||||
for _, entry := range macPorts {
|
for _, entry := range macPorts {
|
||||||
mac := entry.mac
|
mac := entry.mac
|
||||||
|
|
||||||
|
|||||||
2
types.go
2
types.go
@@ -453,7 +453,7 @@ type Node struct {
|
|||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Names NameSet `json:"names"`
|
Names NameSet `json:"names"`
|
||||||
Interfaces InterfaceMap `json:"interfaces"`
|
Interfaces InterfaceMap `json:"interfaces"`
|
||||||
MACTable map[string]string `json:"-"`
|
MACTable map[string]string `json:"mac_table,omitempty"`
|
||||||
PoEBudget *PoEBudget `json:"poe_budget,omitempty"`
|
PoEBudget *PoEBudget `json:"poe_budget,omitempty"`
|
||||||
DanteTxChannels int `json:"dante_tx_channels,omitempty"`
|
DanteTxChannels int `json:"dante_tx_channels,omitempty"`
|
||||||
DanteClockMasterSeen time.Time `json:"-"`
|
DanteClockMasterSeen time.Time `json:"-"`
|
||||||
|
|||||||
Reference in New Issue
Block a user