[sheepdog] [PATCH] dog: use new environment variables for specifying IP address and port number
Hitoshi Mitake
mitake.hitoshi at lab.ntt.co.jp
Wed Jun 11 04:25:44 CEST 2014
New environment variables are used for specifying IP address and port
number:
- SHEEPDOG_DOG_ADDR for IP address
- SHEEPDOG_DOG_PORT for port number
It is useful when sheep is launched with -b option.
If both of the variables and -a or -p option are specified, command
line option is prioritized.
Related issue:
https://bugs.launchpad.net/sheepdog-project/+bug/1322633
Cc: Valerio Pachera <sirio81 at gmail.com>
Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
---
dog/dog.c | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/dog/dog.c b/dog/dog.c
index 1eefbdc..7d1153d 100644
--- a/dog/dog.c
+++ b/dog/dog.c
@@ -449,7 +449,7 @@ int main(int argc, char **argv)
struct option *long_options;
const struct command *commands;
const char *short_options;
- char *p;
+ char *p, *env;
const struct sd_option *sd_opts;
uint8_t sdhost[16];
int sdport;
@@ -471,6 +471,26 @@ int main(int argc, char **argv)
long_options = build_long_options(sd_opts);
short_options = build_short_options(sd_opts);
+ env = getenv("SHEEPDOG_DOG_ADDR");
+ if (env) {
+ if (!str_to_addr(env, sdhost)) {
+ sd_err("Invalid ip address %s", env);
+ return EXIT_FAILURE;
+ }
+ memcpy(sd_nid.addr, sdhost, sizeof(sdhost));
+ }
+
+ env = getenv("SHEEPDOG_DOG_PORT");
+ if (env) {
+ sdport = strtol(env, &p, 10);
+ if (env == p || sdport < 1 || sdport > UINT16_MAX
+ || !is_numeric(env)) {
+ sd_err("Invalid port number '%s'", env);
+ exit(EXIT_USAGE);
+ }
+ sd_nid.port = sdport;
+ }
+
while ((ch = getopt_long(argc, argv, short_options, long_options,
&longindex)) >= 0) {
--
1.7.1
More information about the sheepdog
mailing list