BIND 10 trac811_new, updated. 76039741c19fa58e404879b334475b9ae01cd8dd [trac811] some small improvements
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri May 13 12:56:35 UTC 2011
The branch, trac811_new has been updated
via 76039741c19fa58e404879b334475b9ae01cd8dd (commit)
from 7a52a9a3618fd19ea9779eb0cef1a3e4f1c3d444 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 76039741c19fa58e404879b334475b9ae01cd8dd
Author: Jelte Jansen <jelte at isc.org>
Date: Fri May 13 14:55:54 2011 +0200
[trac811] some small improvements
-----------------------------------------------------------------------
Summary of changes:
src/bin/xfrin/tests/xfrin_test.py | 14 +++++++++++++
src/bin/xfrin/xfrin.py.in | 39 ++++++++++++++++++++++--------------
src/bin/xfrout/xfrout.spec.pre.in | 5 ++-
3 files changed, 41 insertions(+), 17 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/xfrin/tests/xfrin_test.py b/src/bin/xfrin/tests/xfrin_test.py
index fe35d24..c9e25ba 100644
--- a/src/bin/xfrin/tests/xfrin_test.py
+++ b/src/bin/xfrin/tests/xfrin_test.py
@@ -607,6 +607,20 @@ class TestXfrin(unittest.TestCase):
self.assertEqual(self.xfr.command_handler("notify",
self.args)['result'][0], 1)
+ def test_command_handler_notify_known_zone(self):
+ # try it with a known zone
+ self.args['master'] = TEST_MASTER_IPV6_ADDRESS
+
+ zones = { 'zones': [
+ { 'name': TEST_ZONE_NAME,
+ 'master_addr': TEST_MASTER_IPV4_ADDRESS,
+ 'master_port': TEST_MASTER_PORT
+ }
+ ]}
+ self.xfr.config_handler(zones)
+ self.assertEqual(self.xfr.command_handler("notify",
+ self.args)['result'][0], 0)
+
def test_command_handler_unknown(self):
self.assertEqual(self.xfr.command_handler("xxx", None)['result'][0], 1)
diff --git a/src/bin/xfrin/xfrin.py.in b/src/bin/xfrin/xfrin.py.in
index 94db996..0d112f5 100755
--- a/src/bin/xfrin/xfrin.py.in
+++ b/src/bin/xfrin/xfrin.py.in
@@ -386,6 +386,8 @@ class ZoneInfo:
"""Creates a zone_info with the config data element as
specified by the 'zones' list in xfrin.spec"""
self.name = config_data.get('name')
+ self.class_str = config_data.get('class') or 'IN'
+
if self.name is None:
raise XfrinConfigException("Configuration zones list "
"element does not contain "
@@ -394,14 +396,11 @@ class ZoneInfo:
# add the root dot if the user forgot
if len(self.name) > 0 and self.name[-1] != '.':
self.name += '.'
- self.master_addr = config_data.get('master_addr') or DEFAULT_MASTER
+ self.master_addr_str = config_data.get('master_addr') or DEFAULT_MASTER
+ self.master_port_str = config_data.get('master_port') or DEFAULT_MASTER_PORT
try:
- addr = config_data.get('master_addr') or DEFAULT_MASTER
- port = config_data.get('master_port') or DEFAULT_MASTER_PORT
- isc.net.parse.addr_parse(addr)
- isc.net.parse.port_parse(port)
- self.master_addr = addr
- self.master_port = port
+ self.master_addr = isc.net.parse.addr_parse(self.master_addr_str)
+ self.master_port = isc.net.parse.port_parse(self.master_port_str)
except ValueError:
errmsg = "bad format for zone's master: " + str(config_data)
log_error(errmsg)
@@ -409,6 +408,10 @@ class ZoneInfo:
self.tsig_key_str = config_data.get('tsig_key') or None
+ def get_master_addr_info(self):
+ return (self.master_addr.family, socket.SOCK_STREAM,
+ (self.master_addr_str, self.master_port))
+
class Xfrin:
def __init__(self, verbose = False):
self._max_transfers_in = 10
@@ -439,26 +442,32 @@ class Xfrin:
of unit tests.'''
self._module_cc.check_command(False)
- def _get_zone_info(self, name):
+ def _get_zone_info(self, name, class_str = "IN"):
"""Returns the ZoneInfo object containing the configured data
for the given zone name. If the zone name did not have any
data, returns None"""
# add the root dot if the user forgot
if len(name) > 0 and name[-1] != '.':
name += '.'
- if name in self._zones:
- return self._zones[name]
+ if (name, class_str) in self._zones:
+ return self._zones[(name, class_str)]
else:
return None
+ def _clear_zone_info(self):
+ self._zones = {}
+
+ def _add_zone_info(self, zone_info):
+ self._zones[(zone_info.name, zone_info.class_str)] = zone_info
+
def config_handler(self, new_config):
self._max_transfers_in = new_config.get("transfers_in") or self._max_transfers_in
if 'zones' in new_config:
- self._zones = {}
+ self._clear_zone_info()
for zone_config in new_config.get('zones'):
try:
zone_info = ZoneInfo(zone_config)
- self._zones[zone_info.name] = zone_info
+ self._add_zone_info(zone_info)
except XfrinConfigException as xce:
return create_answer(1, str(xce))
@@ -493,7 +502,7 @@ class Xfrin:
log_error(errmsg)
answer = create_answer(1, errmsg)
else:
- (master_addr) = build_addr_info(zone_info.master_addr, zone_info.master_port)
+ master_addr = zone_info.get_master_addr_info()
ret = self.xfrin_start(zone_name,
rrclass,
self._get_db_file(),
@@ -552,14 +561,14 @@ class Xfrin:
port = args.get('port')
if port is None:
if zone_info is not None:
- port = zone_info.master_port
+ port = zone_info.master_port_str
else:
port = DEFAULT_MASTER_PORT
master = args.get('master')
if master is None:
if zone_info is not None:
- master = zone_info.master_addr
+ master = zone_info.master_addr_str
else:
master = DEFAULT_MASTER
diff --git a/src/bin/xfrout/xfrout.spec.pre.in b/src/bin/xfrout/xfrout.spec.pre.in
index 89c475d..96b9570 100644
--- a/src/bin/xfrout/xfrout.spec.pre.in
+++ b/src/bin/xfrout/xfrout.spec.pre.in
@@ -41,7 +41,7 @@
{
"item_name": "zones",
"item_type": "list",
- "item_optional": "false",
+ "item_optional": false,
"item_default": [],
"list_item_spec":
{ "item_name": "zone_info",
@@ -51,7 +51,8 @@
"map_item_spec": [
{ "item_name": "name",
"item_type": "string",
- "item_optional": false
+ "item_optional": false,
+ "item_default": ""
},
{ "item_name": "tsig_key",
"item_type": "string",
More information about the bind10-changes
mailing list