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
Sebastian Schrader
Kea
Commits
fe668b6d
Commit
fe668b6d
authored
Jan 16, 2015
by
Marcin Siodelski
Browse files
[3636] Trivial fixes to comply with the coding standards/guidelines.
parent
4b087069
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/bin/dhcp4/dhcp4_srv.cc
View file @
fe668b6d
// Copyright (C) 2011-201
4
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2011-201
5
Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
...
...
@@ -816,8 +816,12 @@ Dhcpv4Srv::processHostnameOption(const OptionStringPtr& opt_hostname,
}
else
if
(
label_count
==
2
)
{
// If there are two labels, it means that the client has specified
// the unqualified name. We have to concatenate the unqalified name
// with the domain name.
opt_hostname_resp
->
setValue
(
d2_mgr
.
qualifyName
(
hostname
,
false
));
// with the domain name. The false value passed as a second argument
// indicates that the trailing dot should not be appended to the
// hostname. We don't want to append the trailing dot because
// we don't know whether the hostname is partial or not and some
// clients do not handle the hostnames with the trailing dot.
opt_hostname_resp
->
setValue
(
d2_mgr
.
qualifyName
(
hostname
,
false
));
}
answer
->
addOption
(
opt_hostname_resp
);
...
...
@@ -1071,13 +1075,15 @@ Dhcpv4Srv::assignLease(const Pkt4Ptr& question, Pkt4Ptr& answer) {
// hostname is empty, it means that server is responsible for
// generating the entire hostname for the client. The example of the
// client's name, generated from the IP address is: host-192-0-2-3.
if
((
fqdn
||
opt_hostname
)
&&
lease
->
hostname_
.
empty
())
{
if
(
fqdn
)
{
lease
->
hostname_
=
CfgMgr
::
instance
().
getD2ClientMgr
().
generateFqdn
(
lease
->
addr_
,
true
);
}
if
(
opt_hostname
)
{
lease
->
hostname_
=
CfgMgr
::
instance
().
getD2ClientMgr
().
generateFqdn
(
lease
->
addr_
,
false
);
}
if
((
fqdn
||
opt_hostname
)
&&
lease
->
hostname_
.
empty
())
{
// Note that if we have received the hostname option, rather than
// Client FQDN the trailing dot is not appended to the generated
// hostname because some clients don't handle the trailing dot in
// the hostname. Whether the trailing dot is appended or not is
// controlled by the second argument to the generateFqdn().
lease
->
hostname_
=
CfgMgr
::
instance
().
getD2ClientMgr
()
.
generateFqdn
(
lease
->
addr_
,
static_cast
<
bool
>
(
fqdn
));
// The operations below are rather safe, but we want to catch
// any potential exceptions (e.g. invalid lease database backend
// implementation) and log an error.
...
...
src/bin/dhcp6/dhcp6_srv.cc
View file @
fe668b6d
// Copyright (C) 2011-201
4
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2011-201
5
Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
...
...
@@ -2609,7 +2609,7 @@ Dhcpv6Srv::generateFqdn(const Pkt6Ptr& answer) {
// Get the IPv6 address acquired by the client.
IOAddress
addr
=
iaaddr
->
getAddress
();
std
::
string
generated_name
=
CfgMgr
::
instance
().
getD2ClientMgr
().
generateFqdn
(
addr
,
true
);
CfgMgr
::
instance
().
getD2ClientMgr
().
generateFqdn
(
addr
);
try
{
// The lease has been acquired but the FQDN for this lease hasn't
// been updated in the lease database. We now have new FQDN
...
...
src/lib/dhcpsrv/d2_client_mgr.cc
View file @
fe668b6d
// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2014
-2015
Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
...
...
@@ -171,43 +171,47 @@ D2ClientMgr::analyzeFqdn(const bool client_s, const bool client_n,
}
std
::
string
D2ClientMgr
::
generateFqdn
(
const
asiolink
::
IOAddress
&
address
,
bool
appendDot
)
const
{
D2ClientMgr
::
generateFqdn
(
const
asiolink
::
IOAddress
&
address
,
const
bool
trailing_dot
)
const
{
std
::
string
hostname
=
address
.
toText
();
std
::
replace
(
hostname
.
begin
(),
hostname
.
end
(),
(
address
.
isV4
()
?
'.'
:
':'
),
'-'
);
std
::
ostringstream
gen_name
;
gen_name
<<
d2_client_config_
->
getGeneratedPrefix
()
<<
"-"
<<
hostname
;
return
(
qualifyName
(
gen_name
.
str
(),
appendD
ot
));
return
(
qualifyName
(
gen_name
.
str
(),
trailing_d
ot
));
}
std
::
string
D2ClientMgr
::
qualifyName
(
const
std
::
string
&
partial_name
,
bool
appendDot
)
const
{
D2ClientMgr
::
qualifyName
(
const
std
::
string
&
partial_name
,
const
bool
trailing_dot
)
const
{
std
::
ostringstream
gen_name
;
gen_name
<<
partial_name
<<
"."
<<
d2_client_config_
->
getQualifyingSuffix
();
std
::
string
str
=
gen_name
.
str
();
size_t
len
=
str
.
length
();
//unless it's forced, will append trailing dot
if
(
appendDot
)
{
// Tack on a trailing dot in case suffix doesn't have one.
if
((
len
>
0
)
&&
(
str
[
len
-
1
]
!=
'.'
))
{
gen_name
<<
"."
;
}
if
(
trailing_dot
)
{
// If trailing dot should be added but there is no trailing dot,
// append it.
if
((
len
>
0
)
&&
(
str
[
len
-
1
]
!=
'.'
))
{
gen_name
<<
"."
;
}
}
else
{
//if a call with appendDot is false, remove the dot if exists
if
((
len
>
0
)
&&
(
str
[
len
-
1
]
==
'.'
))
{
gen_name
.
str
(
str
.
substr
(
0
,
len
-
1
));
}
// If the trailing dot should not be appended but it is present,
// remove it.
if
((
len
>
0
)
&&
(
str
[
len
-
1
]
==
'.'
))
{
gen_name
.
str
(
str
.
substr
(
0
,
len
-
1
));
}
}
return
(
gen_name
.
str
());
}
void
D2ClientMgr
::
startSender
(
D2ClientErrorHandler
error_handler
)
{
if
(
amSending
())
{
...
...
src/lib/dhcpsrv/d2_client_mgr.h
View file @
fe668b6d
...
...
@@ -172,10 +172,12 @@ public:
/// ('.' for IPv4 or ':' for IPv6) replaced with a hyphen, '-'.
///
/// @param address IP address from which to derive the name (IPv4 or IPv6)
/// @param appendDot wether if a trailing dot should be appended or not
/// @param trailing_dot A boolean value which indicates whether trailing
/// dot should be appended (if true) or not (false).
///
/// @return std::string containing the generated name.
std
::
string
generateFqdn
(
const
asiolink
::
IOAddress
&
address
,
bool
appendDot
)
const
;
std
::
string
generateFqdn
(
const
asiolink
::
IOAddress
&
address
,
const
bool
trailing_dot
=
true
)
const
;
/// @brief Adds a qualifying suffix to a given domain name
///
...
...
@@ -183,14 +185,14 @@ public:
/// a partial domain name as follows:
///
/// <partial_name>.<qualifying-suffix>.
/// Note it will add a trailing '.' should qualifying-suffix not end with
/// one.
///
/// @param partial_name domain name to qualify
/// @param appendDot wether if a trailing dot should be appended or not
/// @param trailing_dot A boolean value which indicates whether trailing
/// dot should be appended (if true) or not (false).
///
/// @return std::string containing the qualified name.
std
::
string
qualifyName
(
const
std
::
string
&
partial_name
,
bool
appendDot
)
const
;
std
::
string
qualifyName
(
const
std
::
string
&
partial_name
,
const
bool
trailing_dot
)
const
;
/// @brief Set server FQDN flags based on configuration and a given FQDN
///
...
...
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