diff options
Diffstat (limited to 'contrib/DNS-LDNS/lib/DNS/LDNS/DNSSecRRs.pm')
-rw-r--r-- | contrib/DNS-LDNS/lib/DNS/LDNS/DNSSecRRs.pm | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/contrib/DNS-LDNS/lib/DNS/LDNS/DNSSecRRs.pm b/contrib/DNS-LDNS/lib/DNS/LDNS/DNSSecRRs.pm new file mode 100644 index 0000000..78aa080 --- /dev/null +++ b/contrib/DNS-LDNS/lib/DNS/LDNS/DNSSecRRs.pm @@ -0,0 +1,82 @@ +package DNS::LDNS::DNSSecRRs; + +use 5.008008; +use strict; +use warnings; + +use DNS::LDNS; + +our $VERSION = '0.52'; + +# Note: This class does not have a constructor. Thus, it can not be created +# as an individual object. The data structure of the node is owned +# and freed by the owner of the parent rather than the parent node. This +# is to prevent deep recursion on DESTROY. + +sub to_string { + my $self = shift; + my $ret = ''; + while ($self and $self->rr) { + $ret .= $self->rr->to_string; + $self = $self->next; + } + + return $ret; +} + +sub add_rr { + my ($self, $rr) = @_; + + my $s = _add_rr($self, my $copy = $rr->clone); + DNS::LDNS::GC::own($self, $copy); + $DNS::LDNS::last_status = $s; + return $s; +} + +sub rr { + my $self = shift; + return DNS::LDNS::GC::own($self->_rr, DNS::LDNS::GC::owner($self)); +} + +sub next { + my $self = shift; + return DNS::LDNS::GC::own($self->_next, DNS::LDNS::GC::owner($self)); +} + +sub DESTROY { + DNS::LDNS::GC::free($_[0]); +} + +1; +__END__ + +=head1 NAME + +DNS::LDNS::DNSSecRRs - Linked list of rrs in a dnssec zone + +=head1 SYNOPSIS + + use DNS::LDNS ':all' + + rrs->to_string + rrs->add_rr(rr) + rr = rrs->rr + rrs2 = rrs->next + +=head1 SEE ALSO + +http://www.nlnetlabs.nl/projects/ldns + +=head1 AUTHOR + +Erik Pihl Ostlyngen, E<lt>erik.ostlyngen@uninett.noE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright (C) 2013 by UNINETT Norid AS + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself, either Perl version 5.14.2 or, +at your option, any later version of Perl 5 you may have available. + +=cut |