summaryrefslogtreecommitdiffstats
path: root/common/IFCFG.pm
diff options
context:
space:
mode:
Diffstat (limited to 'common/IFCFG.pm')
-rw-r--r--common/IFCFG.pm88
1 files changed, 88 insertions, 0 deletions
diff --git a/common/IFCFG.pm b/common/IFCFG.pm
new file mode 100644
index 00000000..e86128d1
--- /dev/null
+++ b/common/IFCFG.pm
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+# Interfaces Conf Parser
+
+# Copyright (C) 2002 MandrakeSoft Arnaud Desmons <adesmons@mandrakesoft.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+package IFCFG;
+use strict;
+use lib qw(/usr/lib/libDrakX);
+use Data::Dumper;
+use MDK::Common;
+use network::network;
+
+#my $file = "/etc/sysconfig/network-scripts/drakconnect_conf";
+#!-f $file and die "no such $file";
+sub new {
+ my $self = {};
+
+ $ENV{PATH} = "";
+ my $ifconfig = `LC_ALL=C /sbin/ifconfig -a`;
+ my $device = 'NONE';
+ my @interfaces;
+ foreach (split('\n', $ifconfig)) {
+ my ($temp) = /(^eth[0-9]*:?[0-9]*).*/;
+ $device = $temp if defined $temp;
+ my ($ip, $bcast, $netmask) = /\s*inet addr:([0-9\.]*)\s*Bcast:([0-9\.]*)\s*Mask:([0-9\.]*).*/;
+ if (defined $ip && defined $bcast && defined $netmask) {
+ $self->{itf}{$device} = {IPADDR => $ip, BROADCAST => $bcast, NETMASK => $netmask};
+ my %conf = getVarsFromSh("/etc/sysconfig/network-scripts/ifcfg-$device");
+ $self->{itf}{$device}{$_} = $conf{$_} foreach ('BOOTPROTO');
+ }
+ }
+ %{$self->{network}} = getVarsFromSh("/etc/sysconfig/network");
+ my $r = read_resolv_conf();
+ foreach my $k (keys %$r) {
+ $self->{network}{$k} ||= $r->{$k}
+ }
+ $self->{network}{HOSTNAME} ||= `/bin/hostname` and chomp $self->{network}{HOSTNAME};
+ ($self->{network}{DOMAINNAME}) = $self->{network}{HOSTNAME} =~ /\.(.*)/;
+ $self->{network}{DOMAINNAME} ||= `/bin/dnsdomainname` and chomp $self->{network}{DOMAINNAME};
+ bless $self;
+}
+
+sub is_dhcp {
+ my $self = shift;
+ my ($itf) = @_;
+
+ $itf ||= default_itf();
+ $self->{itf}{$itf}{BOOTPROTO} eq 'dhcp';
+}
+
+#- TODO : return the main interface
+sub default_itf {
+ "eth0";
+}
+
+sub itf_get {
+ my $self = shift;
+ my ($key, $itf) = @_;
+
+ $itf ||= default_itf;
+ exists $self->{itf}{$itf}{$key} or die "no $key field in $itf hash";
+ $self->{itf}{$itf}{$key}
+}
+
+sub network_get {
+ my $self = shift;
+ my ($key) = @_;
+
+ exists $self->{network}{$key} or die "no $key field in network hash";
+ $self->{network}{$key};
+}
+
+10;