sub _open_db { my $self = shift;
warn "_open_db $self $self->{NAME}\n";
# sorted index
$DB_BTREE->{'flags'} = 0;
$DB_BTREE->{'compare'} = sub {
my ($key1, $key2) = @_;
$key1 <=> $key2;
};
if (tie(my %ip_db,
'DB_File',
$self->{IP_FILE},
O_RDWR|O_CREAT,
0644,
$DB_BTREE)) {
# Enable duplicate keys as well
$DB_BTREE->{'flags'} = R_DUP;
if (my $stamp_tie =
tie(my %stamp_db,
'DB_File',
$self->{STAMP_FILE},
O_RDWR|O_CREAT,
0644,
$DB_BTREE)) {
$self->{IP_DB} = \%ip_db;
$self->{STAMP_DB} = \%stamp_db;
$self->{STAMP_TIE} = $stamp_tie;
warn "_open_db OK IP_DB: $self->{IP_DB}" .
" STAMP_DB: $self->{STAMP_DB} STAMP_TIE: $self->{STAMP_TIE}\n";
return $self;
}
else {
$Err_Msg = "Can't open stamp db $self->{STAMP_FILE}: $!";
}
warn "_open_db failed $Err_Msg\n";
untie %ip_db;
warn "_open_db untie complete\n";
}
else { $Err_Msg = "Can't open IP db $self->{IP_FILE}: $!" }
warn "_open_db failed $Err_Msg\n";
return 0;
}
sub close_db { my $self = shift;
warn "close_db $self\n";
delete $self->{STAMP_TIE};
warn "delete STAMP_TIE complete\n";
untie %{$self->{STAMP_DB}};
warn "untie STAMP_DB complete\n";
delete $self->{STAMP_DB};
warn "delete STAMP_DB complete\n";
untie %{$self->{IP_DB}};
warn "untie IP_DB complete\n";
delete $self->{IP_DB};
warn "delete IP_DB complete\n";
return 1;
}
####
_open_db Db_file=HASH(0x838ad20) blacklist
_open_db OK IP_DB: HASH(0x83f4960) STAMP_DB: HASH(0x83f429c) STAMP_TIE: DB_File=SCALAR(0x83670f4)
_open_db Db_file=HASH(0x83670e8) notify
_open_db OK IP_DB: HASH(0x8367040) STAMP_DB: HASH(0x83658b8) STAMP_TIE: DB_File=SCALAR(0x841651c)
_open_db Db_file=HASH(0x83b4e84) notify_events
_open_db OK IP_DB: HASH(0x838adbc) STAMP_DB: HASH(0x83b4e90) STAMP_TIE: DB_File=SCALAR(0x841663c)
_open_db Db_file=HASH(0x842e370) tracking
_open_db OK IP_DB: HASH(0x84165dc) STAMP_DB: HASH(0x84165d0) STAMP_TIE: DB_File=SCALAR(0x842f914)
_open_db Db_file=HASH(0x80f53f0) tracking
_open_db OK IP_DB: HASH(0x842f8b4) STAMP_DB: HASH(0x842e43c) STAMP_TIE: DB_File=SCALAR(0x80f5540)
####
close_db Db_file=HASH(0x842e370)
delete STAMP_TIE complete
untie STAMP_DB complete
delete STAMP_DB complete
untie IP_DB complete
delete IP_DB complete
close_db Db_file=HASH(0x80f53f0)
delete STAMP_TIE complete