1 diff -ruN migrationtools-47.orig/migrate_services.pl migrationtools-47/migrate_services.pl
2 --- migrationtools-47.orig/migrate_services.pl 2006-01-25 05:18:16.000000000 +0100
3 +++ migrationtools-47/migrate_services.pl 2007-04-02 04:52:00.000000000 +0200
5 my $Rh_services = shift;
6 my $Rh_portmap = shift;
10 foreach $port (sort {$a <=> $b} (keys %{$Rh_services})) {
11 foreach $servicename (keys %{$Rh_services->{$port}}) {
12 my @protocols = (keys %{$Rh_services->{$port}{$servicename}});
14 $suffix = "+ipServicePort=" . &escape_metacharacters($port);
17 - # Normalize aliases across protocols. Yet
18 - # another uncomfortable compromise.
19 - foreach (keys %{$Rh_services->{$port}{$servicename}{$proto}{'aliases'}}) {
20 - $tmpaliases{$_} = 1;
21 + # Normalize aliases across protocols, and
22 + # strip those differing only in case.
23 + # Other uncomfortable compromises.
24 + foreach $alias (keys %{$Rh_services->{$port}{$servicename}{$proto}{'aliases'}}) {
25 + next if (grep (/^$alias$/i, keys %tmpaliases));
26 + $tmpaliases{$alias} = 1;
30 + # Distinguish different but identically named services
31 + # Example: echo on tcp/udp port 7 and on ddp port 4
32 + # TODO: Add suffix to oddest protocols (not just highest ports)
33 + my $protocols = join('+', sort (@protocols));
34 + $protomap{$servicename}{$protocols} = 1;
35 + if (scalar(keys %{$protomap{$servicename}}) > 1) {
36 + $suffix .= join('+ipServiceProtocol=', map { &escape_metacharacters($_) } ('', @protocols));
39 my @aliases = keys(%tmpaliases);
41 # Finally we build LDIF records for services.