package topology import ( "fmt" "regexp" "strconv" "strings" ) var ( kbitRate uint64 = 1e+3 // bits per kbit mbitRate uint64 = 1e+6 // bits per mbit kbit = regexp.MustCompile(`^[1-9][0-9]*([kK]bit$)`) mbit = regexp.MustCompile(`^[1-9][0-9]*([mM]bit$)`) defaultRateLimit = 100 * mbitRate ) // converts bits to mbits func convertBitsToMbits(bits uint64) string { mbits := bits / mbitRate return fmt.Sprintf("%dmbit", int(mbits)) /* #nosec G115 */ } // convert the rate limiting mbit/kbit to bytes func convertRateLimitToBits(rateLimit string) uint64 { var conversionRate uint64 var rateString string switch { case kbit.Match([]byte(rateLimit)): rateString = strings.TrimSuffix(rateLimit, "kbit") conversionRate = kbitRate case mbit.Match([]byte(rateLimit)): rateString = strings.TrimSuffix(rateLimit, "mbit") conversionRate = mbitRate default: return defaultRateLimit } rate, err := strconv.ParseUint(rateString, 10, 64) if err != nil { return defaultRateLimit } return rate * conversionRate }