From aa27f88c8444ad6a87ebb563d6ffacb4fe95d87c Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 20 Jun 2007 15:27:22 -0700 Subject: [PATCH] Add TC_LIB_DIR environment variable. Don't hardcode /usr/lib/tc as a path Signed-off-by: Stephen Hemminger --- tc/q_netem.c | 2 +- tc/tc.c | 4 ++-- tc/tc_util.c | 11 +++++++++++ tc/tc_util.h | 2 ++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tc/q_netem.c b/tc/q_netem.c index 67a2ff321..f08b9c19a 100644 --- a/tc/q_netem.c +++ b/tc/q_netem.c @@ -60,7 +60,7 @@ static int get_distribution(const char *type, __s16 *data) char *line = NULL; char name[128]; - snprintf(name, sizeof(name), "/usr/lib/tc/%s.dist", type); + snprintf(name, sizeof(name), "%s/%s.dist", get_tc_lib(), type); if ((f = fopen(name, "r")) == NULL) { fprintf(stderr, "No distribution data for %s (%s: %s)\n", type, name, strerror(errno)); diff --git a/tc/tc.c b/tc/tc.c index 6672e189f..f23ba04eb 100644 --- a/tc/tc.c +++ b/tc/tc.c @@ -99,7 +99,7 @@ struct qdisc_util *get_qdisc_kind(const char *str) if (strcmp(q->id, str) == 0) return q; - snprintf(buf, sizeof(buf), "/usr/lib/tc/q_%s.so", str); + snprintf(buf, sizeof(buf), "%s/q_%s.so", get_tc_lib(), str); dlh = dlopen(buf, RTLD_LAZY); if (!dlh) { /* look in current binary, only open once */ @@ -145,7 +145,7 @@ struct filter_util *get_filter_kind(const char *str) if (strcmp(q->id, str) == 0) return q; - snprintf(buf, sizeof(buf), "/usr/lib/tc/f_%s.so", str); + snprintf(buf, sizeof(buf), "%s/f_%s.so", get_tc_lib(), str); dlh = dlopen(buf, RTLD_LAZY); if (dlh == NULL) { dlh = BODY; diff --git a/tc/tc_util.c b/tc/tc_util.c index a7e42572d..cdbae4217 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -24,6 +24,17 @@ #include "utils.h" #include "tc_util.h" +const char *get_tc_lib(void) +{ + const char *lib_dir; + + lib_dir = getenv("TC_LIB_DIR"); + if (!lib_dir) + lib_dir = "/usr/lib/tc"; + + return lib_dir; +} + int get_qdisc_handle(__u32 *h, const char *str) { __u32 maj; diff --git a/tc/tc_util.h b/tc/tc_util.h index eade72d21..120d6ceba 100644 --- a/tc/tc_util.h +++ b/tc/tc_util.h @@ -38,6 +38,8 @@ struct action_util int (*print_xstats)(struct action_util *au, FILE *f, struct rtattr *xstats); }; +extern const char *get_tc_lib(void); + extern struct qdisc_util *get_qdisc_kind(const char *str); extern struct filter_util *get_filter_kind(const char *str); -- 2.47.2