]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - tc/tc_util.c
lib: Move get_rate(), get_rate64() from tc here
[mirror_iproute2.git] / tc / tc_util.c
index ff979c617b9ba82493a509009ddee55aaf5161b3..3a133ad84ff91e1de038a8f3f8d8bb649b65f5c9 100644 (file)
@@ -164,32 +164,6 @@ char *sprint_tc_classid(__u32 h, char *buf)
        return buf;
 }
 
-/* See http://physics.nist.gov/cuu/Units/binary.html */
-static const struct rate_suffix {
-       const char *name;
-       double scale;
-} suffixes[] = {
-       { "bit",        1. },
-       { "Kibit",      1024. },
-       { "kbit",       1000. },
-       { "mibit",      1024.*1024. },
-       { "mbit",       1000000. },
-       { "gibit",      1024.*1024.*1024. },
-       { "gbit",       1000000000. },
-       { "tibit",      1024.*1024.*1024.*1024. },
-       { "tbit",       1000000000000. },
-       { "Bps",        8. },
-       { "KiBps",      8.*1024. },
-       { "KBps",       8000. },
-       { "MiBps",      8.*1024*1024. },
-       { "MBps",       8000000. },
-       { "GiBps",      8.*1024.*1024.*1024. },
-       { "GBps",       8000000000. },
-       { "TiBps",      8.*1024.*1024.*1024.*1024. },
-       { "TBps",       8000000000000. },
-       { NULL }
-};
-
 /* Parse a percent e.g: '30%'
  * return: 0 = ok, -1 = error, 1 = out of range
  */
@@ -273,59 +247,6 @@ int get_percent_rate64(__u64 *rate, const char *str, const char *dev)
        return get_rate64(rate, r_str);
 }
 
-int get_rate(unsigned int *rate, const char *str)
-{
-       char *p;
-       double bps = strtod(str, &p);
-       const struct rate_suffix *s;
-
-       if (p == str)
-               return -1;
-
-       for (s = suffixes; s->name; ++s) {
-               if (strcasecmp(s->name, p) == 0) {
-                       bps *= s->scale;
-                       p += strlen(p);
-                       break;
-               }
-       }
-
-       if (*p)
-               return -1; /* unknown suffix */
-
-       bps /= 8; /* -> bytes per second */
-       *rate = bps;
-       /* detect if an overflow happened */
-       if (*rate != floor(bps))
-               return -1;
-       return 0;
-}
-
-int get_rate64(__u64 *rate, const char *str)
-{
-       char *p;
-       double bps = strtod(str, &p);
-       const struct rate_suffix *s;
-
-       if (p == str)
-               return -1;
-
-       for (s = suffixes; s->name; ++s) {
-               if (strcasecmp(s->name, p) == 0) {
-                       bps *= s->scale;
-                       p += strlen(p);
-                       break;
-               }
-       }
-
-       if (*p)
-               return -1; /* unknown suffix */
-
-       bps /= 8; /* -> bytes per second */
-       *rate = bps;
-       return 0;
-}
-
 void tc_print_rate(enum output_type t, const char *key, const char *fmt,
                   unsigned long long rate)
 {