git.samba.org
/
ddiss
/
samba.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
s4:rpc-dnsserver: If a zone is reverse zone, set the fReverse flag
[ddiss/samba.git]
/
source4
/
rpc_server
/
dnsserver
/
dnsutils.c
diff --git
a/source4/rpc_server/dnsserver/dnsutils.c
b/source4/rpc_server/dnsserver/dnsutils.c
index 1f5edae2da3401d6c8ee738e262acf584e66576f..3ae47a8c5fb125a3458e1465150ee6015d659e2f 100644
(file)
--- a/
source4/rpc_server/dnsserver/dnsutils.c
+++ b/
source4/rpc_server/dnsserver/dnsutils.c
@@
-159,6
+159,9
@@
struct dnsserver_zoneinfo *dnsserver_init_zoneinfo(struct dnsserver_zone *zone,
{
struct dnsserver_zoneinfo *zoneinfo;
uint32_t dp_flags;
{
struct dnsserver_zoneinfo *zoneinfo;
uint32_t dp_flags;
+ uint32_t fReverse;
+ const char *revzone = "in-addr.arpa";
+ int len1, len2;
zoneinfo = talloc_zero(zone, struct dnsserver_zoneinfo);
if (zoneinfo == NULL) {
zoneinfo = talloc_zero(zone, struct dnsserver_zoneinfo);
if (zoneinfo == NULL) {
@@
-172,10
+175,18
@@
struct dnsserver_zoneinfo *dnsserver_init_zoneinfo(struct dnsserver_zone *zone,
dp_flags |= DNS_DP_DOMAIN_DEFAULT;
}
dp_flags |= DNS_DP_DOMAIN_DEFAULT;
}
+ /* If the zone name ends with in-addr.arpa, it's reverse zone */
+ fReverse = 0;
+ len1 = strlen(zone->name);
+ len2 = strlen(revzone);
+ if (len1 > len2 && strcmp(&zone->name[len1-len2], revzone) == 0) {
+ fReverse = 1;
+ }
+
zoneinfo->Version = 0x32;
zoneinfo->Flags = DNS_RPC_ZONE_DSINTEGRATED | DNS_RPC_ZONE_UPDATE_SECURE;
zoneinfo->dwZoneType = DNS_ZONE_TYPE_PRIMARY;
zoneinfo->Version = 0x32;
zoneinfo->Flags = DNS_RPC_ZONE_DSINTEGRATED | DNS_RPC_ZONE_UPDATE_SECURE;
zoneinfo->dwZoneType = DNS_ZONE_TYPE_PRIMARY;
- zoneinfo->fReverse =
0; /* We only support forward zones for now */
+ zoneinfo->fReverse =
fReverse;
zoneinfo->fAllowUpdate = DNS_ZONE_UPDATE_SECURE;
zoneinfo->fPaused = 0;
zoneinfo->fShutdown = 0;
zoneinfo->fAllowUpdate = DNS_ZONE_UPDATE_SECURE;
zoneinfo->fPaused = 0;
zoneinfo->fShutdown = 0;