summaryrefslogtreecommitdiffstats
path: root/pkgs/tools/virtualization
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2019-06-06 07:35:07 +0000
committerGitHub <noreply@github.com>2019-06-06 07:35:07 +0000
commit2cca7180c181383cb3cd1335d365f752638deb80 (patch)
tree0f16f183c9634f3a5ea40ea2b5e17ade670cb8b2 /pkgs/tools/virtualization
parent43ba5cbe3cd46a7a776d38fd24cd72426482c9c4 (diff)
parentc957341ef5db943becde127bc05c2a74300ae6f9 (diff)
Merge pull request #60029 from Ma27/configure-ipv4-for-imperative-container
nixos-container: allow setting custom local and host address
Diffstat (limited to 'pkgs/tools/virtualization')
-rwxr-xr-xpkgs/tools/virtualization/nixos-container/nixos-container.pl32
1 files changed, 21 insertions, 11 deletions
diff --git a/pkgs/tools/virtualization/nixos-container/nixos-container.pl b/pkgs/tools/virtualization/nixos-container/nixos-container.pl
index a210a65f431c..b5ceb522e230 100755
--- a/pkgs/tools/virtualization/nixos-container/nixos-container.pl
+++ b/pkgs/tools/virtualization/nixos-container/nixos-container.pl
@@ -23,7 +23,7 @@ $ENV{"NIXOS_CONFIG"} = "";
sub showHelp {
print <<EOF;
Usage: nixos-container list
- nixos-container create <container-name> [--nixos-path <path>] [--system-path <path>] [--config-file <path>] [--config <string>] [--ensure-unique-name] [--auto-start] [--bridge <iface>] [--port <port>]
+ nixos-container create <container-name> [--nixos-path <path>] [--system-path <path>] [--config-file <path>] [--config <string>] [--ensure-unique-name] [--auto-start] [--bridge <iface>] [--port <port>] [--host-address <string>] [--local-address <string>]
nixos-container destroy <container-name>
nixos-container start <container-name>
nixos-container stop <container-name>
@@ -48,6 +48,8 @@ my $port;
my $extraConfig;
my $signal;
my $configFile;
+my $hostAddress;
+my $localAddress;
GetOptions(
"help" => sub { showHelp() },
@@ -59,9 +61,15 @@ GetOptions(
"signal=s" => \$signal,
"nixos-path=s" => \$nixosPath,
"config=s" => \$extraConfig,
- "config-file=s" => \$configFile
+ "config-file=s" => \$configFile,
+ "host-address=s" => \$hostAddress,
+ "local-address=s" => \$localAddress,
) or exit 1;
+if (defined $hostAddress and !defined $localAddress or defined $localAddress and !defined $hostAddress) {
+ die "With --host-address set, --local-address is required as well!";
+}
+
my $action = $ARGV[0] or die "$0: no action specified\n";
if (defined $configFile and defined $extraConfig) {
@@ -149,16 +157,18 @@ if ($action eq "create") {
$usedIPs{$1} = 1 if $s =~ /^LOCAL_ADDRESS=([0-9\.]+)$/m;
}
- my ($ipPrefix, $hostAddress, $localAddress);
- for (my $nr = 1; $nr < 255; $nr++) {
- $ipPrefix = "10.233.$nr";
- $hostAddress = "$ipPrefix.1";
- $localAddress = "$ipPrefix.2";
- last unless $usedIPs{$hostAddress} || $usedIPs{$localAddress};
- $ipPrefix = undef;
- }
+ unless (defined $hostAddress) {
+ my $ipPrefix;
+ for (my $nr = 1; $nr < 255; $nr++) {
+ $ipPrefix = "10.233.$nr";
+ $hostAddress = "$ipPrefix.1";
+ $localAddress = "$ipPrefix.2";
+ last unless $usedIPs{$hostAddress} || $usedIPs{$localAddress};
+ $ipPrefix = undef;
+ }
- die "$0: out of IP addresses\n" unless defined $ipPrefix;
+ die "$0: out of IP addresses\n" unless defined $ipPrefix;
+ }
my @conf;
push @conf, "PRIVATE_NETWORK=1\n";