remove unused snmp queries
remove queryARPTable (returns no data) and switch directly to q-bridge-mib (bridge-mib returns no data). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
115
snmp.go
115
snmp.go
@@ -114,26 +114,10 @@ func (t *Tendrils) querySNMPDevice(ip net.IP) {
|
|||||||
defer snmp.Conn.Close()
|
defer snmp.Conn.Close()
|
||||||
|
|
||||||
t.queryBridgeMIB(snmp, ip)
|
t.queryBridgeMIB(snmp, ip)
|
||||||
t.queryARPTable(snmp, ip)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tendrils) queryBridgeMIB(snmp *gosnmp.GoSNMP, deviceIP net.IP) {
|
func (t *Tendrils) queryBridgeMIB(snmp *gosnmp.GoSNMP, deviceIP net.IP) {
|
||||||
macOID := "1.3.6.1.2.1.17.4.3.1.1"
|
portOID := "1.3.6.1.2.1.17.7.1.2.2.1.2"
|
||||||
portOID := "1.3.6.1.2.1.17.4.3.1.2"
|
|
||||||
|
|
||||||
macResults, err := snmp.BulkWalkAll(macOID)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(macResults) == 0 {
|
|
||||||
macOID = "1.3.6.1.2.1.17.7.1.2.2.1.1"
|
|
||||||
portOID = "1.3.6.1.2.1.17.7.1.2.2.1.2"
|
|
||||||
macResults, err = snmp.BulkWalkAll(macOID)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
portResults, err := snmp.BulkWalkAll(portOID)
|
portResults, err := snmp.BulkWalkAll(portOID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -236,103 +220,6 @@ func (t *Tendrils) queryBridgeMIB(snmp *gosnmp.GoSNMP, deviceIP net.IP) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tendrils) queryARPTable(snmp *gosnmp.GoSNMP, deviceIP net.IP) {
|
|
||||||
macOID := "1.3.6.1.2.1.4.22.1.2"
|
|
||||||
ipOID := "1.3.6.1.2.1.4.22.1.3"
|
|
||||||
ifIndexOID := "1.3.6.1.2.1.4.22.1.1"
|
|
||||||
|
|
||||||
macResults, err := snmp.BulkWalkAll(macOID)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ipResults, err := snmp.BulkWalkAll(ipOID)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ifIndexResults, err := snmp.BulkWalkAll(ifIndexOID)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ipMap := make(map[string]net.IP)
|
|
||||||
for _, result := range ipResults {
|
|
||||||
if result.Type == gosnmp.IPAddress {
|
|
||||||
oidSuffix := result.Name[len(ipOID)+1:]
|
|
||||||
ipBytes := result.Value.([]byte)
|
|
||||||
ipMap[oidSuffix] = net.IP(ipBytes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ifIndexMap := make(map[string]int)
|
|
||||||
for _, result := range ifIndexResults {
|
|
||||||
if result.Type == gosnmp.Integer {
|
|
||||||
oidSuffix := result.Name[len(ifIndexOID)+1:]
|
|
||||||
ifIndexMap[oidSuffix] = result.Value.(int)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ifNames := t.getInterfaceNames(snmp)
|
|
||||||
|
|
||||||
for _, result := range macResults {
|
|
||||||
if result.Type == gosnmp.OctetString {
|
|
||||||
macBytes := result.Value.([]byte)
|
|
||||||
if len(macBytes) != 6 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
mac := net.HardwareAddr(macBytes)
|
|
||||||
if isBroadcastOrZero(mac) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
oidSuffix := result.Name[len(macOID)+1:]
|
|
||||||
ip, hasIP := ipMap[oidSuffix]
|
|
||||||
ifIndex, hasIfIndex := ifIndexMap[oidSuffix]
|
|
||||||
|
|
||||||
var ips []net.IP
|
|
||||||
if hasIP {
|
|
||||||
ips = []net.IP{ip}
|
|
||||||
}
|
|
||||||
|
|
||||||
ifName := ""
|
|
||||||
if hasIfIndex {
|
|
||||||
ifName = ifNames[ifIndex]
|
|
||||||
}
|
|
||||||
if ifName == "" {
|
|
||||||
ifName = "??"
|
|
||||||
}
|
|
||||||
|
|
||||||
t.nodes.mu.RLock()
|
|
||||||
deviceNodeID := -1
|
|
||||||
if id, exists := t.nodes.ipIndex[deviceIP.String()]; exists {
|
|
||||||
deviceNodeID = id
|
|
||||||
}
|
|
||||||
macNodeID := -1
|
|
||||||
if id, exists := t.nodes.macIndex[mac.String()]; exists {
|
|
||||||
macNodeID = id
|
|
||||||
}
|
|
||||||
|
|
||||||
if deviceNodeID != -1 && macNodeID != -1 {
|
|
||||||
deviceNode := t.nodes.nodes[deviceNodeID]
|
|
||||||
if deviceNode.ParentID == macNodeID {
|
|
||||||
t.nodes.mu.RUnlock()
|
|
||||||
t.nodes.mu.Lock()
|
|
||||||
if deviceNode.LocalPort == "" {
|
|
||||||
deviceNode.LocalPort = ifName
|
|
||||||
}
|
|
||||||
t.nodes.mu.Unlock()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
t.nodes.mu.RUnlock()
|
|
||||||
|
|
||||||
t.nodes.UpdateWithParent(deviceIP, ips, []net.HardwareAddr{mac}, ifName, "", "snmp")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Tendrils) getBridgePortMapping(snmp *gosnmp.GoSNMP) map[int]int {
|
func (t *Tendrils) getBridgePortMapping(snmp *gosnmp.GoSNMP) map[int]int {
|
||||||
oid := "1.3.6.1.2.1.17.1.4.1.2"
|
oid := "1.3.6.1.2.1.17.1.4.1.2"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user