summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
Diffstat (limited to 'discover')
-rw-r--r--discover/boot.c5
-rw-r--r--discover/device-handler.h1
-rw-r--r--discover/pxe-parser.c14
3 files changed, 19 insertions, 1 deletions
diff --git a/discover/boot.c b/discover/boot.c
index fab4b61..ba4e720 100644
--- a/discover/boot.c
+++ b/discover/boot.c
@@ -579,6 +579,11 @@ struct boot_task *boot(void *ctx, struct discover_boot_option *opt,
dtb = opt->dtb->url;
}
+ if (opt && opt->proxy) {
+ setenv("http_proxy", opt->proxy, 1);
+ setenv("https_proxy", opt->proxy, 1);
+ }
+
boot_task = talloc_zero(ctx, struct boot_task);
boot_task->dry_run = dry_run;
boot_task->status_fn = status_fn;
diff --git a/discover/device-handler.h b/discover/device-handler.h
index a95cc9d..771cd06 100644
--- a/discover/device-handler.h
+++ b/discover/device-handler.h
@@ -45,6 +45,7 @@ struct discover_boot_option {
struct discover_device *device;
struct boot_option *option;
struct list_item list;
+ const char *proxy;
struct resource *boot_image;
struct resource *initrd;
diff --git a/discover/pxe-parser.c b/discover/pxe-parser.c
index aef43b8..7183ecf 100644
--- a/discover/pxe-parser.c
+++ b/discover/pxe-parser.c
@@ -31,13 +31,17 @@ struct pxe_parser_info {
char **pxe_conf_files;
struct pb_url *pxe_base_url;
int current;
+ char *proxy;
};
static void pxe_finish(struct conf_context *conf)
{
struct pxe_parser_info *info = conf->parser_info;
- if (info->opt)
+ if (info->opt) {
+ if (info->proxy)
+ info->opt->proxy = talloc_strdup(info->opt, info->proxy);
discover_context_add_boot_option(conf->dc, info->opt);
+ }
}
/* We need a slightly modified version of pb_url_join, to allow for the
@@ -148,6 +152,14 @@ static void pxe_process_pair(struct conf_context *ctx,
return;
}
+ if (streq(name, "PROXY")) {
+ if (parser_info->proxy)
+ talloc_free(parser_info->proxy);
+
+ parser_info->proxy = talloc_strdup(parser_info, value);
+ return;
+ }
+
if (streq(name, "LABEL") || streq(name, "PLUGIN")) {
if (opt)
pxe_finish(ctx);
OpenPOWER on IntegriCloud