home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-perl-addon-1.4.9-installer.exe / ISDN.pm < prev    next >
Encoding:
Perl POD Document  |  2004-01-04  |  2.3 KB  |  129 lines

  1. package Net::DNS::RR::ISDN;
  2. #
  3. # $Id: ISDN.pm,v 2.101 2004/01/04 04:31:10 ctriv Exp $
  4. #
  5. use strict;
  6. use vars qw(@ISA $VERSION);
  7.  
  8. use Net::DNS::Packet;
  9.  
  10. @ISA     = qw(Net::DNS::RR);
  11. $VERSION = (qw$Revision: 2.101 $)[1];
  12.  
  13. sub new {
  14.     my ($class, $self, $data, $offset) = @_;
  15.  
  16.     if ($self->{"rdlength"} > 0) {
  17.         my ($address, $sa, $len);
  18.  
  19.         ($len) = unpack("\@$offset C", $$data);
  20.         ++$offset;
  21.         $address = substr($$data, $offset, $len);
  22.         $offset += $len;
  23.  
  24.         if ($len + 1 < $self->{"rdlength"}) {
  25.             ($len) = unpack("\@$offset C", $$data);
  26.             ++$offset;
  27.             $sa = substr($$data, $offset, $len);
  28.             $offset += $len;
  29.         }
  30.         else {
  31.             $sa = "";
  32.         }
  33.  
  34.         $self->{"address"} = $address;
  35.         $self->{"sa"}  = $sa;
  36.     }
  37.  
  38.     return bless $self, $class;
  39. }
  40.  
  41. sub new_from_string {
  42.     my ($class, $self, $string) = @_;
  43.  
  44.     if ($string && $string =~ /^['"](.*?)['"](.*)/s) {
  45.         $self->{"address"} = $1;
  46.         my $rest = $2;
  47.  
  48.         if ($rest =~ /^\s+['"](.*?)['"]$/) {
  49.             $self->{"sa"} = $1;
  50.         }
  51.         else {
  52.             $self->{"sa"} = "";
  53.         }
  54.     }
  55.  
  56.     return bless $self, $class;
  57. }
  58.  
  59. sub rdatastr {
  60.     my $self = shift;
  61.  
  62.     return $self->{"address"}
  63.            ? qq("$self->{address}" "$self->{sa}")
  64.            : '';
  65. }
  66.  
  67. sub rr_rdata {
  68.     my $self = shift;
  69.     my $rdata = "";
  70.  
  71.     if (exists $self->{"address"}) {
  72.         $rdata .= pack("C", length $self->{"address"});
  73.         $rdata .= $self->{"address"};
  74.  
  75.         if ($self->{"sa"}) {
  76.             $rdata .= pack("C", length $self->{"sa"});
  77.             $rdata .= $self->{"sa"};
  78.         }
  79.     }
  80.  
  81.     return $rdata;
  82. }
  83.  
  84. 1;
  85. __END__
  86.  
  87. =head1 NAME
  88.  
  89. Net::DNS::RR::ISDN - DNS ISDN resource record
  90.  
  91. =head1 SYNOPSIS
  92.  
  93. C<use Net::DNS::RR>;
  94.  
  95. =head1 DESCRIPTION
  96.  
  97. Class for DNS ISDN resource records.
  98.  
  99. =head1 METHODS
  100.  
  101. =head2 address
  102.  
  103.     print "address = ", $rr->address, "\n";
  104.  
  105. Returns the RR's address field.
  106.  
  107. =head2 sa
  108.  
  109.     print "subaddress = ", $rr->sa, "\n";
  110.  
  111. Returns the RR's subaddress field.
  112.  
  113. =head1 COPYRIGHT
  114.  
  115. Copyright (c) 1997-2002 Michael Fuhr. 
  116.  
  117. Portions Copyright (c) 2002-2003 Chris Reinhardt.
  118.  
  119. All rights reserved.  This program is free software; you may redistribute
  120. it and/or modify it under the same terms as Perl itself.
  121.  
  122. =head1 SEE ALSO
  123.  
  124. L<perl(1)>, L<Net::DNS>, L<Net::DNS::Resolver>, L<Net::DNS::Packet>,
  125. L<Net::DNS::Header>, L<Net::DNS::Question>, L<Net::DNS::RR>,
  126. RFC 1183 Section 3.2
  127.  
  128. =cut
  129.