aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2024-01-19 08:38:58 -0800
committerStephen Hemminger <stephen@networkplumber.org>2024-01-19 08:38:58 -0800
commit91cca2aee76bb00ad81ce94da4d7e60670512fa3 (patch)
tree9a3a0f122fbf1e2ec4cbabc9249b5276dab2a0d1
parenta10e05ad35ade0a42d08512e7d2e09a769bf1ad9 (diff)
downloadiproute2-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.c41
-rw-r--r--tc/q_etf.c43
-rw-r--r--tc/q_taprio.c43
-rw-r--r--tc/tc_util.c40
-rw-r--r--tc/tc_util.h4
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);