Changeset 599 for trunk/DNSDB.pm


Ignore:
Timestamp:
03/21/14 16:44:13 (10 years ago)
Author:
Kris Deugau
Message:

/trunk

Prepare for changes to allow any record in either forward or reverse
zones, no matter how silly.

This commit adds a database function to catch errors with CASTing a
column as inet, so that any place we need to sort records based on the
IP value of a column succeeds by treating non-IP values as 0.0.0.0/0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DNSDB.pm

    r597 r599  
    36673667  foreach my $sf (split /,/, $args{sortby}) {
    36683668    $sf = "r.$sf";
    3669     $sf =~ s/r\.val/CAST (r.val AS inet)/
     3669    $sf =~ s/r\.val/inetlazy(r.val)/
    36703670        if $args{revrec} eq 'y' && $args{defrec} eq 'n';
    36713671    $sf =~ s/r\.type/t.alphaorder/;
     
    43414341##fixme?  may need to narrow things down more by octet-chopping and doing text comparisons before casting.
    43424342  my ($revpatt) = $dbh->selectrow_array("SELECT host FROM records ".
    4343         "WHERE (type in (12,65280,65281,65282,65283,65284)) AND rdns_id = ? AND CAST (val AS inet) >>= ? ".
    4344         "ORDER BY CAST (val AS inet) DESC LIMIT 1", undef, ($revid, $cidr) );
     4343        "WHERE (type in (12,65280,65281,65282,65283,65284)) AND rdns_id = ? AND inetlazy(val) >>= ? ".
     4344        "ORDER BY inetlazy(val) DESC LIMIT 1", undef, ($revid, $cidr) );
    43454345  return $revpatt;
    43464346} # end getRevPattern()
     
    51645164  my $recsth = $dbh->prepare("SELECT host,type,val,distance,weight,port,ttl,record_id,location,extract(epoch from stamp),expires,stampactive ".
    51655165        "FROM records WHERE rdns_id=? AND NOT type=6 ".
    5166         "ORDER BY masklen(CAST(val AS inet)) DESC, CAST(val AS inet)");
     5166        "ORDER BY masklen(inetlazy(val)) DESC, inetlazy(val)");
    51675167  my $revsth = $dbh->prepare("SELECT rdns_id,revnet,status,changed FROM revzones WHERE status=1 ".
    51685168        "ORDER BY masklen(revnet) DESC, rdns_id");
Note: See TracChangeset for help on using the changeset viewer.