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 <[email protected]> Signed-off-by: Hitoshi Mitake <[email protected]> --- 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 -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
