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

Reply via email to