Commit 6537d0a1 authored by Evan Hunt's avatar Evan Hunt

Merge branch '872-dlz-ldap-dname' into 'master'

added DNAME support to DLZ LDAP schema, and fixed a DLZ compile error

Closes #872

See merge request !1502
parents d372d2f6 2e3b5db1
Pipeline #9774 passed with stages
in 57 seconds
5160. [contrib] Added DNAME support to the DLZ LDAP schema. Also
fixed a compilation bug affecting several DLZ
modules. [GL #872]
5159. [bug] dnssec-coverage was incorrectly ignoring 5159. [bug] dnssec-coverage was incorrectly ignoring
names specified on the command line without names specified on the command line without
trailing dots. [GL !1478] trailing dots. [GL !1478]
......
...@@ -101,6 +101,7 @@ build_querylist(const char *query_str, char **zone, char **record, ...@@ -101,6 +101,7 @@ build_querylist(const char *query_str, char **zone, char **record,
bool foundclient = false; bool foundclient = false;
char *temp_str = NULL; char *temp_str = NULL;
char *right_str = NULL; char *right_str = NULL;
char *token = NULL;
query_list_t *tql; query_list_t *tql;
query_segment_t *tseg = NULL; query_segment_t *tseg = NULL;
......
...@@ -3,110 +3,110 @@ ...@@ -3,110 +3,110 @@
# 1.3.6.1.4.1.18420.1.1.X is reserved for attribute types declared by the DLZ project. # 1.3.6.1.4.1.18420.1.1.X is reserved for attribute types declared by the DLZ project.
# 1.3.6.1.4.1.18420.1.2.X is reserved for object classes declared by the DLZ project. # 1.3.6.1.4.1.18420.1.2.X is reserved for object classes declared by the DLZ project.
# 1.3.6.1.4.1.18420.1.3.X is reserved for PRIVATE extensions to the DLZ attribute # 1.3.6.1.4.1.18420.1.3.X is reserved for PRIVATE extensions to the DLZ attribute
# types and object classes that may be needed by end users # types and object classes that may be needed by end users
# to add security, etc. Attributes and object classes using # to add security, etc. Attributes and object classes using
# this OID MUST NOT be published outside of an organization # this OID MUST NOT be published outside of an organization
# except to offer them for consideration to become part of the # except to offer them for consideration to become part of the
# standard attributes and object classes published by the DLZ project. # standard attributes and object classes published by the DLZ project.
attributetype ( 1.3.6.1.4.1.18420.1.1.10 attributetype ( 1.3.6.1.4.1.18420.1.1.10
NAME 'dlzZoneName' NAME 'dlzZoneName'
DESC 'DNS zone name - domain name not including host name' DESC 'DNS zone name - domain name not including host name'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.20 attributetype ( 1.3.6.1.4.1.18420.1.1.20
NAME 'dlzHostName' NAME 'dlzHostName'
DESC 'Host portion of a domain name' DESC 'Host portion of a domain name'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.30 attributetype ( 1.3.6.1.4.1.18420.1.1.30
NAME 'dlzData' NAME 'dlzData'
DESC 'Data for the resource record' DESC 'Data for the resource record'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.40 attributetype ( 1.3.6.1.4.1.18420.1.1.40
NAME 'dlzType' NAME 'dlzType'
DESC 'DNS record type - A, SOA, NS, MX, etc...' DESC 'DNS record type - A, SOA, NS, MX, etc...'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.50 attributetype ( 1.3.6.1.4.1.18420.1.1.50
NAME 'dlzSerial' NAME 'dlzSerial'
DESC 'SOA record serial number' DESC 'SOA record serial number'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.60 attributetype ( 1.3.6.1.4.1.18420.1.1.60
NAME 'dlzRefresh' NAME 'dlzRefresh'
DESC 'SOA record refresh time in seconds' DESC 'SOA record refresh time in seconds'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.70 attributetype ( 1.3.6.1.4.1.18420.1.1.70
NAME 'dlzRetry' NAME 'dlzRetry'
DESC 'SOA retry time in seconds' DESC 'SOA retry time in seconds'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.80 attributetype ( 1.3.6.1.4.1.18420.1.1.80
NAME 'dlzExpire' NAME 'dlzExpire'
DESC 'SOA expire time in seconds' DESC 'SOA expire time in seconds'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.90 attributetype ( 1.3.6.1.4.1.18420.1.1.90
NAME 'dlzMinimum' NAME 'dlzMinimum'
DESC 'SOA minimum time in seconds' DESC 'SOA minimum time in seconds'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.100 attributetype ( 1.3.6.1.4.1.18420.1.1.100
NAME 'dlzAdminEmail' NAME 'dlzAdminEmail'
DESC 'E-mail address of person responsible for this zone - @ should be replaced with . (period)' DESC 'E-mail address of person responsible for this zone - @ should be replaced with . (period)'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.110 attributetype ( 1.3.6.1.4.1.18420.1.1.110
NAME 'dlzPrimaryNS' NAME 'dlzPrimaryNS'
DESC 'Primary name server for this zone - should be host name not IP address' DESC 'Primary name server for this zone - should be host name not IP address'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.120 attributetype ( 1.3.6.1.4.1.18420.1.1.120
NAME 'dlzIPAddr' NAME 'dlzIPAddr'
DESC 'IP address - IPV4 should be in dot notation xxx.xxx.xxx.xxx IPV6 should be in colon notation xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx' DESC 'IP address - IPV4 should be in dot notation xxx.xxx.xxx.xxx IPV6 should be in colon notation xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx'
EQUALITY caseExactIA5Match EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{40} SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{40}
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.130 attributetype ( 1.3.6.1.4.1.18420.1.1.130
NAME 'dlzCName' NAME 'dlzCName'
DESC 'DNS cname' DESC 'DNS cname'
SUP name SUP name
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.140 attributetype ( 1.3.6.1.4.1.18420.1.1.140
NAME 'dlzPreference' NAME 'dlzPreference'
DESC 'DNS MX record preference. Lower numbers have higher preference' DESC 'DNS MX record preference. Lower numbers have higher preference'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.150 attributetype ( 1.3.6.1.4.1.18420.1.1.150
NAME 'dlzTTL' NAME 'dlzTTL'
DESC 'DNS time to live - how long this record can be cached by caching DNS servers' DESC 'DNS time to live - how long this record can be cached by caching DNS servers'
EQUALITY integerMatch EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.18420.1.1.160 attributetype ( 1.3.6.1.4.1.18420.1.1.160
NAME 'dlzRecordID' NAME 'dlzRecordID'
DESC 'Unique ID for each DLZ resource record' DESC 'Unique ID for each DLZ resource record'
...@@ -118,70 +118,75 @@ attributetype ( 1.3.6.1.4.1.18420.1.1.160 ...@@ -118,70 +118,75 @@ attributetype ( 1.3.6.1.4.1.18420.1.1.160
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
objectclass ( 1.3.6.1.4.1.18420.1.2.10 objectclass ( 1.3.6.1.4.1.18420.1.2.10
NAME 'dlzZone' NAME 'dlzZone'
DESC 'Zone name portion of a domain name' DESC 'Zone name portion of a domain name'
SUP top STRUCTURAL SUP top STRUCTURAL
MUST ( objectclass $ dlzZoneName ) ) MUST ( objectclass $ dlzZoneName ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.20 objectclass ( 1.3.6.1.4.1.18420.1.2.20
NAME 'dlzHost' NAME 'dlzHost'
DESC 'Host name portion of a domain name' DESC 'Host name portion of a domain name'
SUP top STRUCTURAL SUP top STRUCTURAL
MUST ( objectclass $ dlzHostName ) MAY ( description ) ) MUST ( objectclass $ dlzHostName ) MAY ( description ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.30 objectclass ( 1.3.6.1.4.1.18420.1.2.30
NAME 'dlzAbstractRecord' NAME 'dlzAbstractRecord'
DESC 'Data common to all DNS record types' DESC 'Data common to all DNS record types'
SUP top ABSTRACT SUP top ABSTRACT
MUST ( objectclass $ dlzRecordID $ dlzHostName $ dlzType $ dlzTTL ) MAY ( description ) ) MUST ( objectclass $ dlzRecordID $ dlzHostName $ dlzType $ dlzTTL ) MAY ( description ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.40 objectclass ( 1.3.6.1.4.1.18420.1.2.40
NAME 'dlzGenericRecord' NAME 'dlzGenericRecord'
DESC 'Generic DNS record - useful when a specific object class has not been defined for a DNS record' DESC 'Generic DNS record - useful when a specific object class has not been defined for a DNS record'
SUP dlzAbstractRecord STRUCTURAL SUP dlzAbstractRecord STRUCTURAL
MUST ( dlzData ) ) MUST ( dlzData ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.50 objectclass ( 1.3.6.1.4.1.18420.1.2.50
NAME 'dlzARecord' NAME 'dlzARecord'
DESC 'DNS A record' DESC 'DNS A record'
SUP dlzAbstractrecord STRUCTURAL SUP dlzAbstractrecord STRUCTURAL
MUST ( dlzIPAddr ) ) MUST ( dlzIPAddr ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.60 objectclass ( 1.3.6.1.4.1.18420.1.2.60
NAME 'dlzNSRecord' NAME 'dlzNSRecord'
DESC 'DNS NS record' DESC 'DNS NS record'
SUP dlzGenericRecord STRUCTURAL ) SUP dlzGenericRecord STRUCTURAL )
objectclass ( 1.3.6.1.4.1.18420.1.2.70 objectclass ( 1.3.6.1.4.1.18420.1.2.70
NAME 'dlzMXRecord' NAME 'dlzMXRecord'
DESC 'DNS MX record' DESC 'DNS MX record'
SUP dlzGenericRecord STRUCTURAL SUP dlzGenericRecord STRUCTURAL
MUST ( dlzPreference ) ) MUST ( dlzPreference ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.80 objectclass ( 1.3.6.1.4.1.18420.1.2.80
NAME 'dlzSOARecord' NAME 'dlzSOARecord'
DESC 'DNS SOA record' DESC 'DNS SOA record'
SUP dlzAbstractRecord STRUCTURAL SUP dlzAbstractRecord STRUCTURAL
MUST ( dlzSerial $ dlzRefresh $ dlzRetry MUST ( dlzSerial $ dlzRefresh $ dlzRetry
$ dlzExpire $ dlzMinimum $ dlzAdminEmail $ dlzPrimaryNS ) ) $ dlzExpire $ dlzMinimum $ dlzAdminEmail $ dlzPrimaryNS ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.90 objectclass ( 1.3.6.1.4.1.18420.1.2.90
NAME 'dlzTextRecord' NAME 'dlzTextRecord'
DESC 'Text data with spaces should be wrapped in double quotes' DESC 'Text data with spaces should be wrapped in double quotes'
SUP dlzGenericRecord STRUCTURAL ) SUP dlzGenericRecord STRUCTURAL )
objectclass ( 1.3.6.1.4.1.18420.1.2.100 objectclass ( 1.3.6.1.4.1.18420.1.2.100
NAME 'dlzPTRRecord' NAME 'dlzPTRRecord'
DESC 'DNS PTR record' DESC 'DNS PTR record'
SUP dlzGenericRecord STRUCTURAL ) SUP dlzGenericRecord STRUCTURAL )
objectclass ( 1.3.6.1.4.1.18420.1.2.110 objectclass ( 1.3.6.1.4.1.18420.1.2.110
NAME 'dlzCNameRecord' NAME 'dlzCNameRecord'
DESC 'DNS CName record' DESC 'DNS CName record'
SUP dlzGenericRecord STRUCTURAL ) SUP dlzGenericRecord STRUCTURAL )
objectclass ( 1.3.6.1.4.1.18420.1.2.120 objectclass ( 1.3.6.1.4.1.18420.1.2.120
NAME 'dlzXFR' NAME 'dlzXFR'
DESC 'Host allowed to perform zone transfer' DESC 'Host allowed to perform zone transfer'
SUP top STRUCTURAL SUP top STRUCTURAL
MUST ( objectclass $ dlzRecordID $ dlzIPAddr ) ) MUST ( objectclass $ dlzRecordID $ dlzIPAddr ) )
objectclass ( 1.3.6.1.4.1.18420.1.2.130
NAME 'dlzDNameRecord'
DESC 'DNS DName record'
SUP dlzGenericRecord STRUCTURAL )
...@@ -40,6 +40,14 @@ dn: dlzHostName=~,dlzZoneName=example.com,ou=dns,o=bind-dlz ...@@ -40,6 +40,14 @@ dn: dlzHostName=~,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzHost objectclass: dlzHost
dlzHostName: ~ dlzHostName: ~
dn: dlzHostName=cname,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzHost
dlzHostName: cname
dn: dlzHostName=dname,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzHost
dlzHostName: dname
dn: dlzRecordID=1,dlzHostName=@,dlzZoneName=example.com,ou=dns,o=bind-dlz dn: dlzRecordID=1,dlzHostName=@,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzGenericRecord objectclass: dlzGenericRecord
dlzRecordID: 1 dlzRecordID: 1
...@@ -166,3 +174,19 @@ dn: dlzRecordID=15,dlzZoneName=example.com,ou=dns,o=bind-dlz ...@@ -166,3 +174,19 @@ dn: dlzRecordID=15,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzXFR objectclass: dlzXFR
dlzRecordID: 15 dlzRecordID: 15
dlzIPAddr: 127.0.0.1 dlzIPAddr: 127.0.0.1
dn: dlzRecordID=16,dlzHostName=cname,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzCNameRecord
dlzRecordID: 16
dlzHostName: cname
dlzType: cname
dlzData: www
dlzTTL: 10
dn: dlzRecordID=17,dlzHostName=dname,dlzZoneName=example.com,ou=dns,o=bind-dlz
objectclass: dlzDNameRecord
dlzRecordID: 17
dlzHostName: dname
dlzType: dname
dlzData: example.net.
dlzTTL: 10
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment