diff options
author | Stephen Hemminger <stephen@networkplumber.org> | 2024-01-19 08:38:58 -0800 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2024-01-19 08:38:58 -0800 |
commit | 91cca2aee76bb00ad81ce94da4d7e60670512fa3 (patch) | |
tree | 9a3a0f122fbf1e2ec4cbabc9249b5276dab2a0d1 | |
parent | a10e05ad35ade0a42d08512e7d2e09a769bf1ad9 (diff) | |
download | iproute2-91cca2aee76bb00ad81ce94da4d7e60670512fa3.tar.gz |
tc: unify clockid handling
There are three places in tc which all have same code for
handling clockid (copy/paste). Move it into tc_util.c.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | tc/m_gate.c | 41 | ||||
-rw-r--r-- | tc/q_etf.c | 43 | ||||
-rw-r--r-- | tc/q_taprio.c | 43 | ||||
-rw-r--r-- | tc/tc_util.c | 40 | ||||
-rw-r--r-- | tc/tc_util.h | 4 |
5 files changed, 44 insertions, 127 deletions
diff --git a/tc/m_gate.c b/tc/m_gate.c index c091ae19c..37afa426a 100644 --- a/tc/m_gate.c +++ b/tc/m_gate.c @@ -20,18 +20,6 @@ struct gate_entry { int32_t maxoctets; }; -#define CLOCKID_INVALID (-1) -static const struct clockid_table { - const char *name; - clockid_t clockid; -} clockt_map[] = { - { "REALTIME", CLOCK_REALTIME }, - { "TAI", CLOCK_TAI }, - { "BOOTTIME", CLOCK_BOOTTIME }, - { "MONOTONIC", CLOCK_MONOTONIC }, - { NULL } -}; - static void explain(void) { fprintf(stderr, @@ -78,35 +66,6 @@ struct action_util gate_action_util = { .print_aopt = print_gate, }; -static int get_clockid(__s32 *val, const char *arg) -{ - const struct clockid_table *c; - - if (strcasestr(arg, "CLOCK_") != NULL) - arg += sizeof("CLOCK_") - 1; - - for (c = clockt_map; c->name; c++) { - if (strcasecmp(c->name, arg) == 0) { - *val = c->clockid; - return 0; - } - } - - return -1; -} - -static const char *get_clock_name(clockid_t clockid) -{ - const struct clockid_table *c; - - for (c = clockt_map; c->name; c++) { - if (clockid == c->clockid) - return c->name; - } - - return "invalid"; -} - static int get_gate_state(__u8 *val, const char *arg) { if (!strcasecmp("OPEN", arg)) { diff --git a/tc/q_etf.c b/tc/q_etf.c index 572e2bc89..d16188daa 100644 --- a/tc/q_etf.c +++ b/tc/q_etf.c @@ -19,18 +19,6 @@ #include "utils.h" #include "tc_util.h" -#define CLOCKID_INVALID (-1) -static const struct static_clockid { - const char *name; - clockid_t clockid; -} clockids_sysv[] = { - { "REALTIME", CLOCK_REALTIME }, - { "TAI", CLOCK_TAI }, - { "BOOTTIME", CLOCK_BOOTTIME }, - { "MONOTONIC", CLOCK_MONOTONIC }, - { NULL } -}; - static void explain(void) { fprintf(stderr, @@ -51,37 +39,6 @@ static void explain_clockid(const char *val) val); } -static int get_clockid(__s32 *val, const char *arg) -{ - const struct static_clockid *c; - - /* Drop the CLOCK_ prefix if that is being used. */ - if (strcasestr(arg, "CLOCK_") != NULL) - arg += sizeof("CLOCK_") - 1; - - for (c = clockids_sysv; c->name; c++) { - if (strcasecmp(c->name, arg) == 0) { - *val = c->clockid; - - return 0; - } - } - - return -1; -} - -static const char* get_clock_name(clockid_t clockid) -{ - const struct static_clockid *c; - - for (c = clockids_sysv; c->name; c++) { - if (clockid == c->clockid) - return c->name; - } - - return "invalid"; -} - static int etf_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev) { diff --git a/tc/q_taprio.c b/tc/q_taprio.c index ef8fc7a05..c47fe2443 100644 --- a/tc/q_taprio.c +++ b/tc/q_taprio.c @@ -29,18 +29,6 @@ struct sched_entry { uint8_t cmd; }; -#define CLOCKID_INVALID (-1) -static const struct static_clockid { - const char *name; - clockid_t clockid; -} clockids_sysv[] = { - { "REALTIME", CLOCK_REALTIME }, - { "TAI", CLOCK_TAI }, - { "BOOTTIME", CLOCK_BOOTTIME }, - { "MONOTONIC", CLOCK_MONOTONIC }, - { NULL } -}; - static void explain(void) { fprintf(stderr, @@ -60,37 +48,6 @@ static void explain_clockid(const char *val) fprintf(stderr, "It must be a valid SYS-V id (i.e. CLOCK_TAI)\n"); } -static int get_clockid(__s32 *val, const char *arg) -{ - const struct static_clockid *c; - - /* Drop the CLOCK_ prefix if that is being used. */ - if (strcasestr(arg, "CLOCK_") != NULL) - arg += sizeof("CLOCK_") - 1; - - for (c = clockids_sysv; c->name; c++) { - if (strcasecmp(c->name, arg) == 0) { - *val = c->clockid; - - return 0; - } - } - - return -1; -} - -static const char* get_clock_name(clockid_t clockid) -{ - const struct static_clockid *c; - - for (c = clockids_sysv; c->name; c++) { - if (clockid == c->clockid) - return c->name; - } - - return "invalid"; -} - static const char *entry_cmd_to_str(__u8 cmd) { switch (cmd) { diff --git a/tc/tc_util.c b/tc/tc_util.c index 8c0e19e45..a799a6299 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -596,6 +596,46 @@ char *sprint_linklayer(unsigned int linklayer, char *buf) return buf; } +static const struct clockid_table { + const char *name; + clockid_t clockid; +} clockt_map[] = { + { "REALTIME", CLOCK_REALTIME }, + { "TAI", CLOCK_TAI }, + { "BOOTTIME", CLOCK_BOOTTIME }, + { "MONOTONIC", CLOCK_MONOTONIC }, + { NULL } +}; + +int get_clockid(__s32 *val, const char *arg) +{ + const struct clockid_table *c; + + if (strcasestr(arg, "CLOCK_") != NULL) + arg += sizeof("CLOCK_") - 1; + + for (c = clockt_map; c->name; c++) { + if (strcasecmp(c->name, arg) == 0) { + *val = c->clockid; + return 0; + } + } + + return -1; +} + +const char *get_clock_name(clockid_t clockid) +{ + const struct clockid_table *c; + + for (c = clockt_map; c->name; c++) { + if (clockid == c->clockid) + return c->name; + } + + return "invalid"; +} + void print_tm(FILE *f, const struct tcf_t *tm) { int hz = get_user_hz(); diff --git a/tc/tc_util.h b/tc/tc_util.h index c535dccbc..aaf10e433 100644 --- a/tc/tc_util.h +++ b/tc/tc_util.h @@ -121,6 +121,10 @@ int prio_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt); int cls_names_init(char *path); void cls_names_uninit(void); +#define CLOCKID_INVALID (-1) +int get_clockid(__s32 *val, const char *arg); +const char *get_clock_name(clockid_t clockid); + int action_a2n(char *arg, int *result, bool allow_num); bool tc_qdisc_block_exists(__u32 block_index); |