#!/usr/bin/perl -w # vim: ft=perl: use strict; use Test::More 'no_plan'; use esmith::util; use esmith::ConfigDB; my $db = esmith::ConfigDB->open_ro; my $internal = $db->get('InternalInterface'); my $external = $db->get('ExternalInterface'); # Test the internal interface. ok( $internal, "InternalInterface exists" ); ok( $internal->prop('type') eq 'interface', "InternalInterface is an interface" ); ok( $internal->prop('Configuration') eq 'static', "InternalInterface Configuration is static" ); ok( $internal->prop('Driver') eq $db->get_value("EthernetDriver1"), "InternalInterface Driver is correct" ); ok( $internal->prop('IPAddress') eq $db->get_value("LocalIP"), "InternalInterface IPAddress is correct" ); ok( $internal->prop('Netmask') eq $db->get_value("LocalNetmask"), "InternalInterface Netmask is correct" ); # There might be an external interface. SKIP: { skip "serveronly mode, no external interface expected", 9 if $db->get_value('SystemMode') eq 'serveronly'; ok( $external, "ExternalInterface exists" ); ok( $external->prop('type') eq 'interface', "ExternalInterface is an interface" ); ok( $external->prop('IPAddress') eq $db->get_value('ExternalIP'), "ExternalInterface IPAddress is correct" ); ok( $external->prop('Netmask') eq $db->get_value('ExternalNetmask'), "ExternalInterface Netmask is correct" ); ok( $external->prop('Gateway') eq $db->get_value('GatewayIP'), "ExternalInterface Gateway is correct" ); ok( ($external->prop('Network'), $external->prop('Broadcast')) eq esmith::util::computeNetworkAndBroadcast($external->prop('IPAddress'), $external->prop('Netmask')), "ExternalInterface Network is correct" ); if ($db->get_value('AccessType') eq 'dialup') { ok( $external->prop('Configuration') eq 'dialup', "ExternalInterface Configuration is dialup" ); my $isdn = $db->get_prop('isdn', 'status') || "disabled"; my $sync_isdn = $db->get_prop('isdn', 'UseSyncPPP') || "no"; my $name = ($isdn eq "enabled" and $sync_isdn eq "yes") ? "ippp0" : "ppp0"; ok( $external->prop('Name') eq $name, "ExternalInterface Name is $name" ); } elsif ($db->get_prop('pppoe', 'status') eq 'enabled') { ok( $external->prop('Configuration') eq 'pppoe', "ExternalInterface Configuration is pppoe" ); ok( $external->prop('Name') eq 'ppp0', "ExternalInterface name is ppp0" ); } else { ok( $external->prop('Driver') eq $db->get_value("EthernetDriver2"), "ExternalInterface Driver is correct" ); } if ($db->get_value("ExternalDHCP") eq "on") { if ($db->get_value("DHCPClient") eq "dhi") { ok( $external->prop('Configuration') eq "DHCPHostname", "ExternalInterface Configuration is DHCPHostname" ); } else { ok( $external->prop('Configuration') eq "DHCPEthernetAddress", "ExternalInterface Configuration is DHCPEthernetAddress" ); } } else { unless (($db->get_value('AccessType') eq 'dialup') || ($db->get_prop('pppoe', 'status') eq 'enabled')) { ok( $external->prop('Configuration') eq 'static', "ExternalInterface Configuration is static" ); } } } # The interfaces migrate fragment also creates a dhcpcd record. my $dhcpcd = $db->get("dhcpcd"); ok( defined $dhcpcd, "dhcpcd record exists" ); ok( $dhcpcd->prop('type') eq 'service', "dhcpcd is a service" ); if ($db->get_value("ExternalDHCP") eq "on") { ok( $dhcpcd->prop('status') eq 'enabled', "dhcpcd is enabled" ); } else { ok( $dhcpcd->prop('status') eq 'disabled', "dhcpcd is disabled" ); }