in pkg/ibaddrparser/ib_addr.go [19:49]
func GetIBAddr(rawContent []byte, macAddr string) (*net.IPNet, error) {
log.Print("GetIBAddr", macAddr)
list := hyperkv.Parse(rawContent)
var ipoibData string
for _, item := range list {
if strings.EqualFold(item.Key, IPoIBDataKey) {
ipoibData = item.Value
}
}
if ipoibData == "" {
return nil, fmt.Errorf("IPoIB_Data not found in config file")
}
configMap, err := ParseIBAddrConfig([]byte(ipoibData))
if err != nil {
return nil, err
}
if configMap == nil {
return nil, fmt.Errorf("invalid config map")
}
contractedMacAddr := ConvertHardwareAddr(macAddr)
if ipAddr, ok := configMap[strings.ToLower(contractedMacAddr)]; ok {
return ipAddr, nil
} else {
content, err := json.Marshal(configMap)
if err != nil {
return nil, err
}
return nil, fmt.Errorf("failed to get ip address %s,contracted %s, got %s", strings.ToLower(macAddr), ConvertHardwareAddr(macAddr), (content))
}
}