summaryrefslogtreecommitdiff
path: root/kernel/xpp/utils/migrate_xpp
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2009-03-19 20:08:29 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2009-03-19 20:08:29 +0000
commitd8562c778088ff6ab3383df5ceead41eff4bf124 (patch)
tree43e394ae225fd7183018c2ae08d3fb1e5bcb12cb /kernel/xpp/utils/migrate_xpp
parentb6b3226735f5e3b3fb000fa92daa7a574265c817 (diff)
xpp: a massive backport from DAHDI. From Xorcom branch-rel-6839-r6908 .
Sun Mar 1 2009 Oron Peled <oron@actcom.co.il> - xpp.r6795 * Fix cases where the command_queue overflowed during initialization. - Also add a 'command_queue_length' parameter to xpp.ko * More migrations to sysfs: - Add a 'transport' attribute to our astribank devices which points to the usb device we use. E.g: /sys/bus/astribanks/devices/xbus-00/transport is symlinked to ../../../../../../devices/pci0000:00/0000:00:10.4/usb5/5-4 - Move /proc/xpp/XBUS-??/XPD-??/span to /sys/bus/xpds/devices/??:?:?/span - Migrate from /proc/xpp/sync to: /sys/bus/astribanks/drivers/xppdrv/sync - New 'offhook' attribute in: /sys/bus/xpds/devices/??:?:?/offhook * PRI: change the "timing" priority to match the convention used by other PRI cards -- I.e: lower numbers (not 0) have higher priority. * FXO: - Power denial: create two module parameters instead of hard-coded constants (power_denial_safezone, power_denial_minlen). For sites that get non-standard power-denial signals from central office on offhook. - Don't hangup on power-denial, just notify Dahdi and wait for - Fix caller-id detection for the case central office sends it before first ring without any indication before. Asterisk's desicion. Mon, Dec 8 2008 Oron Peled <oron@actcom.co.il> - xpp.r6430 * PRI: - Match our span clocking priorities (in system.conf) to Digium -- this is a reversal of the previous state. Now lower numbers (greater than 0) are better. - Synchronization fixes for PRI ports other than 0. - Fix T1 CRC for some countries (e.g: China). * FXS: fix bug in VMWI detection if using old asterisk which does not provide ZT_VMWI ioctl(). * FXO: - Improve caller_id_style module parameter. This provide a workaround for countries that send this information without any notification (reverse polarity, ring, etc.) - Don't force on-hook upon power-denial. So, loopstart devices would ignore these as expected. * Implement a flow-control to prevent user space (init_card_* scripts) from pressuring our command queue. git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4631 5390a7c7-147a-4af0-8ec9-7488f05a26cb
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);