Skip to content
Snippets Groups Projects
Commit d549bb38 authored by Lubos Slovak's avatar Lubos Slovak
Browse files

Zone parser now parses BIND zone files.

Added function zp_parse_zonefile_bind().
Changed the sample file to provide owner name for the SOA as
  no origin is given.
parent c851b8c1
No related branches found
No related tags found
No related merge requests found
$TTL 86400
@ IN SOA ns1.bogus25.com. support.bogus25.com. (
bogus25.com. IN SOA ns1.bogus25.com. support.bogus25.com. (
20010923; Serial
10800 ; Refresh after 3hrs
3600 ; Retry after 1 hr
......
......@@ -6,6 +6,7 @@
#include <ldns/rr.h>
#include <ldns/rdata.h>
#include <ldns/dname.h>
#include <ldns/zone.h>
/*----------------------------------------------------------------------------*/
......@@ -300,22 +301,38 @@ int zp_test_parse_zone( const char *filename, zdb_database *database )
/*----------------------------------------------------------------------------*/
int zp_count_domain_names( FILE *file, uint *names )
int zp_parse_zonefile_bind( const char *filename, zdb_database *database )
{
return zp_test_count_domain_names(file, names);
}
debug_zp("Opening file...\n");
FILE *file = fopen(filename, "r");
/*----------------------------------------------------------------------------*/
if (file == NULL) {
log_error("Can't open file: %s.\n", filename);
return ERR_FILE_OPEN;
}
debug_zp("Done.\n");
//int zp_parse_zonefile( zdb_database *database, dnss_dname_wire *zone_name,
// FILE *file )
//{
// return zp_test_parse_file(database, zone_name, file);
//}
ldns_zone *zone;
int line = 0;
ldns_status s;
s = ldns_zone_new_frm_fp_l(&zone, file, NULL, 0, LDNS_RR_CLASS_IN, &line);
fclose(file);
if (s != LDNS_STATUS_OK) {
log_error("Error parsing zone file %s.\nldns returned: %s on line %d\n",
filename, ldns_get_errorstr_by_id(s), line);
return -1;
}
return zdb_add_zone(database, zone);
}
/*----------------------------------------------------------------------------*/
int zp_parse_zone( const char *filename, zdb_database *database )
{
return zp_test_parse_zone(filename, database);
//return zp_test_parse_zone(filename, database);
return zp_parse_zonefile_bind(filename, database);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment