save('proc_net_dev', <<'/proc/net/dev');
eth0:
eth1:
/proc/net/dev

my $ip = '192.168.0.2/24';
my $gw = '192.168.0.1';
my $ip6 = 'fc05::2/112';
my $gw6 = 'fc05::1';

# Load
r(load('brbase'));

# Create eth1
$config->{ifaces}->{eth1} = {
    type => 'eth',
    method => 'static',
    address => $ip,
    gateway => $gw,
    families => ['inet'],
    autostart => 1
};

# Check
expect load('loopback') . <<"CHECK";
source-directory interfaces.d

iface eth0 inet manual

auto eth1
iface eth1 inet static
	address $ip
	gateway $gw

auto vmbr0
iface vmbr0 inet static
	address 10.0.0.2/24
	gateway 10.0.0.1
	bridge-ports eth0
	bridge-stp off
	bridge-fd 0

CHECK

# Reload then modify
save('ipv4', w());
r(load('ipv4'));
expect load('ipv4');

$config->{ifaces}->{eth1}->{$_->[0]} = $_->[1] foreach (
    [ method6 => 'static' ],
    [ address6 => $ip6 ],
    [ netmask6 => $nm6 ],
    [ gateway6 => $gw6 ],
    [ families => ['inet', 'inet6'] ]
);

# Check
my $final = load('loopback') . <<"CHECK";
source-directory interfaces.d

iface eth0 inet manual

auto eth1
iface eth1 inet static
	address $ip
	gateway $gw

iface eth1 inet6 static
	address $ip6
	gateway $gw6

auto vmbr0
iface vmbr0 inet static
	address 10.0.0.2/24
	gateway 10.0.0.1
	bridge-ports eth0
	bridge-stp off
	bridge-fd 0

CHECK
expect $final;

save('both', w());
r(load('both'));
expect load('both');

# Reload ipv4 and replace instead of modifying
r(load('ipv4'));

$config->{ifaces}->{eth1} = {
    type => 'eth',
    method => 'static',
    address => $ip,
    netmask => $nm,
    gateway => $gw,
    method6 => 'static',
    address6 => $ip6,
    netmask6 => $nm6,
    gateway6 => $gw6,
    families => ['inet', 'inet6'],
    autostart => 1
};
expect $final;
r(w());
expect $final;

1;
