Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
Kea
Commits
7d7e5269
Commit
7d7e5269
authored
Aug 02, 2012
by
Mukund Sivaraman
Browse files
Merge branch 'master' into trac2169
parents
3378f9b4
4f42de9d
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/bin/msgq/b10-msgq.8
View file @
7d7e5269
...
...
@@ -2,12 +2,12 @@
.\" Title: b10-msgq
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\" Date:
August 4
, 201
0
.\" Date:
June 25
, 201
2
.\" Manual: BIND10
.\" Source: BIND10
.\" Language: English
.\"
.TH "B10\-MSGQ" "8" "
August 4
, 201
0
" "BIND10" "BIND10"
.TH "B10\-MSGQ" "8" "
June 25
, 201
2
" "BIND10" "BIND10"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
...
...
@@ -87,8 +87,6 @@ is assigned a unique identifier \-\- this is the local name\&. The commands it h
.sp
.RE
.PP
It listens on 127\&.0\&.0\&.1\&.
.PP
The
\fBb10\-msgq\fR
daemon may be cleanly stopped by sending the SIGTERM signal to the process\&. This shutdown does not notify the subscribers\&.
...
...
src/lib/datasrc/rbtree.h
View file @
7d7e5269
...
...
@@ -221,6 +221,26 @@ public:
return
(
dns
::
LabelSequence
(
getLabelsData
()));
}
/// \brief Return the absolute label sequence of the node.
///
/// This method returns the label sequence corresponding to the full
/// name of the node; i.e. the entire name as it appears in the zone.
///
/// It takes the (partial) name of the node itself, and extends it
/// with all upper nodes.
///
/// \note Care must be taken with the buffer that is used here; this
/// method overwrites its data, so it should not be associated with
/// any other LabelSequence during the lifetime of the LabelSequence
/// returned by this method. See LabelSequence::extend(), which is used
/// by this method.
///
/// \param buf A data buffer where the label sequence will be built.
/// The data in this buffer will be overwritten by this call.
/// \return A LabelSequence with the absolute name of this node.
isc
::
dns
::
LabelSequence
getAbsoluteLabels
(
uint8_t
buf
[
isc
::
dns
::
LabelSequence
::
MAX_SERIALIZED_LENGTH
])
const
;
/// \brief Return the data stored in this node.
///
/// You should not delete the data, it is handled by shared pointers.
...
...
@@ -502,6 +522,21 @@ RBNode<T>::getUpperNode() const {
return
(
current
->
getParent
());
}
template
<
typename
T
>
isc
::
dns
::
LabelSequence
RBNode
<
T
>::
getAbsoluteLabels
(
uint8_t
buf
[
isc
::
dns
::
LabelSequence
::
MAX_SERIALIZED_LENGTH
])
const
{
isc
::
dns
::
LabelSequence
result
(
getLabels
(),
buf
);
const
RBNode
<
T
>*
upper
=
getUpperNode
();
while
(
upper
!=
NULL
)
{
result
.
extend
(
upper
->
getLabels
(),
buf
);
upper
=
upper
->
getUpperNode
();
}
return
(
result
);
}
template
<
typename
T
>
const
RBNode
<
T
>*
RBNode
<
T
>::
abstractSuccessor
(
typename
RBNode
<
T
>::
RBNodePtr
RBNode
<
T
>::*
left
,
...
...
src/lib/datasrc/tests/rbtree_unittest.cc
View file @
7d7e5269
...
...
@@ -104,6 +104,7 @@ protected:
RBTree
<
int
>&
rbtree_expose_empty_node
;
RBNode
<
int
>*
rbtnode
;
const
RBNode
<
int
>*
crbtnode
;
uint8_t
buf
[
LabelSequence
::
MAX_SERIALIZED_LENGTH
];
};
TEST_F
(
RBTreeTest
,
nodeCount
)
{
...
...
@@ -419,6 +420,11 @@ TEST_F(RBTreeTest, chainLevel) {
tree
.
find
(
node_name
,
&
crbtnode
,
chain
));
EXPECT_EQ
(
1
,
chain
.
getLevelCount
());
// Check the name of the found node (should have '.' as both non-absolute
// and absolute name
EXPECT_EQ
(
"."
,
crbtnode
->
getLabels
().
toText
());
EXPECT_EQ
(
"."
,
crbtnode
->
getAbsoluteLabels
(
buf
).
toText
());
/*
* Now creating a possibly deepest tree with MAX_LABELS levels.
* it should look like:
...
...
@@ -442,6 +448,12 @@ TEST_F(RBTreeTest, chainLevel) {
EXPECT_EQ
(
RBTree
<
int
>::
EXACTMATCH
,
tree
.
find
(
node_name
,
&
crbtnode
,
found_chain
));
EXPECT_EQ
(
i
,
found_chain
.
getLevelCount
());
// The non-absolute name should only have the first label
EXPECT_EQ
(
"a"
,
crbtnode
->
getLabels
().
toText
());
// But the absolute name should have all labels
EXPECT_EQ
(
node_name
.
toText
(),
crbtnode
->
getAbsoluteLabels
(
buf
).
toText
());
}
// Confirm the last inserted name has the possible maximum length with
...
...
@@ -988,4 +1000,45 @@ TEST_F(RBTreeTest, root) {
root
.
find
(
Name
(
"example.com"
),
&
crbtnode
));
EXPECT_EQ
(
rbtnode
,
crbtnode
);
}
TEST_F
(
RBTreeTest
,
getAbsoluteLabels
)
{
// The full absolute names of the nodes in the tree
// with the addition of the explicit root node
const
char
*
const
domain_names
[]
=
{
"c"
,
"b"
,
"a"
,
"x.d.e.f"
,
"z.d.e.f"
,
"g.h"
,
"i.g.h"
,
"o.w.y.d.e.f"
,
"j.z.d.e.f"
,
"p.w.y.d.e.f"
,
"q.w.y.d.e.f"
,
"k.g.h"
};
// The names of the nodes themselves, as they end up in the tree
const
char
*
const
first_labels
[]
=
{
"c"
,
"b"
,
"a"
,
"x"
,
"z"
,
"g.h"
,
"i"
,
"o"
,
"j"
,
"p"
,
"q"
,
"k"
};
const
int
name_count
=
sizeof
(
domain_names
)
/
sizeof
(
domain_names
[
0
]);
for
(
int
i
=
0
;
i
<
name_count
;
++
i
)
{
EXPECT_EQ
(
RBTree
<
int
>::
EXACTMATCH
,
rbtree
.
find
(
Name
(
domain_names
[
i
]),
&
crbtnode
));
// First make sure the names themselves are not absolute
const
LabelSequence
ls
(
crbtnode
->
getLabels
());
EXPECT_EQ
(
first_labels
[
i
],
ls
.
toText
());
EXPECT_FALSE
(
ls
.
isAbsolute
());
// Now check the absolute names
const
LabelSequence
abs_ls
(
crbtnode
->
getAbsoluteLabels
(
buf
));
EXPECT_EQ
(
Name
(
domain_names
[
i
]).
toText
(),
abs_ls
.
toText
());
EXPECT_TRUE
(
abs_ls
.
isAbsolute
());
}
// Explicitly add and find a root node, to see that getAbsoluteLabels
// also works when getLabels() already returns an absolute LabelSequence
rbtree
.
insert
(
mem_sgmt_
,
Name
(
"."
),
&
rbtnode
);
rbtnode
->
setData
(
RBNode
<
int
>::
NodeDataPtr
(
new
int
(
1
)));
EXPECT_EQ
(
RBTree
<
int
>::
EXACTMATCH
,
rbtree
.
find
(
Name
(
"."
),
&
crbtnode
));
EXPECT_TRUE
(
crbtnode
->
getLabels
().
isAbsolute
());
EXPECT_EQ
(
"."
,
crbtnode
->
getLabels
().
toText
());
EXPECT_TRUE
(
crbtnode
->
getAbsoluteLabels
(
buf
).
isAbsolute
());
EXPECT_EQ
(
"."
,
crbtnode
->
getAbsoluteLabels
(
buf
).
toText
());
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment