summaryrefslogtreecommitdiff
path: root/kernel/xpp/utils/migrate_xpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/xpp/utils/migrate_xpp')
-rwxr-xr-xkernel/xpp/utils/migrate_xpp102
1 files changed, 102 insertions, 0 deletions
diff --git a/kernel/xpp/utils/migrate_xpp b/kernel/xpp/utils/migrate_xpp
new file mode 100755
index 0000000..98d45e7
--- /dev/null
+++ b/kernel/xpp/utils/migrate_xpp
@@ -0,0 +1,102 @@
+#! /usr/bin/perl -w
+use strict;
+use POSIX;
+#
+# Migrate the information from XPP_PRI_SETUP variable in
+# /etc/sysconig/zaptel or /etc/default/zaptel into the
+# modern configuration:
+# - pri_protocol defined in /etc/xpp.conf
+# - pri_termtype defined in /etc/genconf_parameters
+#
+
+my $conf_rh="/etc/sysconfig/zaptel";
+my $conf_debian="/etc/default/zaptel";
+my $conf;
+my $marker = '##';
+my @origlines;
+my @lines;
+
+if (-f "$conf_rh") {
+ $conf="$conf_rh";
+} elsif (-f "$conf_debian") {
+ $conf="$conf_debian";
+} else {
+ warn "$0: No '$conf_rh' and no '$conf_debian'. Skipping";
+ exit 0;
+}
+
+print STDERR "$0: Reading old config from '$conf'\n";
+open(F, ". $conf; echo \$XPP_PRI_SETUP |") || die "$0: Failed: $!";
+my $line = <F>;
+close F;
+
+sub write_file($@) {
+ my $fname = shift;
+ my @lines = @_;
+
+ open(G, ">$fname.new") || die "$0: Failed opening $fname.new: $!\n";
+ print G @lines;
+ close G;
+ rename($fname, "$fname.backup") ||
+ die "$0: rename($fname, $fname.backup): $!";
+ rename("$fname.new", $fname) ||
+ die "$0: rename($fname.new, $fname): $!";
+}
+
+my @wordlist = split(/\s+/, $line);
+my @spans;
+my $global_pri_protocol;
+foreach my $w (@wordlist) {
+ my ($span, $val) = split(/=/, $w);
+ my ($termtype, $pri_protocol) = split(/,/, $val);
+ if(! defined $global_pri_protocol) {
+ $global_pri_protocol = $pri_protocol;
+ } elsif($global_pri_protocol ne $pri_protocol) {
+ die "different pri_protocol (E1/T1/J1) in different spans\n";
+ }
+ push(@spans, "$span\t$termtype");
+}
+
+my $xppconf = '/etc/xpp.conf';
+print STDERR "$0: Updating PRI protocol in $xppconf\n";
+open(F, "$xppconf") || die "$0: Failed opening $xppconf: $!\n";
+@origlines = <F>;
+close F;
+undef @lines;
+foreach (@origlines) {
+ next if /^#$marker:/;
+ if(s/^pri_protocol.*/pri_protocol\t$global_pri_protocol/) {
+ $_ =
+ "#$marker: Automatically copied from '$conf'\n" .
+ sprintf("#$marker: On %s", ctime(time)) .
+ $_;
+ }
+ push(@lines, $_);
+}
+write_file($xppconf, @lines);
+
+my $genconf = '/etc/genconf_parameters';
+undef @origlines;
+undef @lines;
+print STDERR "$0: Updating PRI termtypes in '$genconf'\n";
+open(F, "$genconf") || die "$0: Failed opening $genconf: $!\n";
+my $in_termtype_block = 0;
+while(<F>) {
+ next if /^#$marker:/;
+ next if $in_termtype_block && /^\s+/;
+ if(/^pri_termtype/) {
+ $in_termtype_block = 1;
+ next;
+ }
+ push(@lines, $_);
+}
+close F;
+my $pri_termtype =
+ "#$marker: Automatically copied from '$conf'\n" .
+ sprintf("#$marker: On %s", ctime(time)) .
+ "pri_termtype\n";
+foreach my $span (@spans) {
+ $pri_termtype .= "\t$span\n";
+}
+push(@lines, $pri_termtype);
+write_file($genconf, @lines);