Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
ISC Open Source Projects
Kea
Commits
c7114bab
Commit
c7114bab
authored
Feb 18, 2014
by
Tomek Mrugalski
🛰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[3316] Vendor class content is now prefixed with VENDOR_CLASS_PREFIX.
parent
d1c6e7d8
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
38 additions
and
14 deletions
+38
-14
src/bin/dhcp4/dhcp4_srv.cc
src/bin/dhcp4/dhcp4_srv.cc
+8
-6
src/bin/dhcp4/dhcp4_srv.h
src/bin/dhcp4/dhcp4_srv.h
+8
-0
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc
+4
-4
src/bin/dhcp4/tests/dhcp4_test_utils.h
src/bin/dhcp4/tests/dhcp4_test_utils.h
+2
-0
src/bin/dhcp6/dhcp6_srv.cc
src/bin/dhcp6/dhcp6_srv.cc
+4
-2
src/bin/dhcp6/dhcp6_srv.h
src/bin/dhcp6/dhcp6_srv.h
+9
-0
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc
+2
-2
src/bin/dhcp6/tests/dhcp6_test_utils.h
src/bin/dhcp6/tests/dhcp6_test_utils.h
+1
-0
No files found.
src/bin/dhcp4/dhcp4_srv.cc
View file @
c7114bab
...
@@ -80,6 +80,8 @@ Dhcp4Hooks Hooks;
...
@@ -80,6 +80,8 @@ Dhcp4Hooks Hooks;
namespace
isc
{
namespace
isc
{
namespace
dhcp
{
namespace
dhcp
{
const
std
::
string
Dhcpv4Srv
::
VENDOR_CLASS_PREFIX
(
"VENDOR_CLASS_"
);
Dhcpv4Srv
::
Dhcpv4Srv
(
uint16_t
port
,
const
char
*
dbconfig
,
const
bool
use_bcast
,
Dhcpv4Srv
::
Dhcpv4Srv
(
uint16_t
port
,
const
char
*
dbconfig
,
const
bool
use_bcast
,
const
bool
direct_response_desired
)
const
bool
direct_response_desired
)
:
shutdown_
(
true
),
alloc_engine_
(),
port_
(
port
),
:
shutdown_
(
true
),
alloc_engine_
(),
port_
(
port
),
...
@@ -1812,15 +1814,15 @@ void Dhcpv4Srv::classifyPacket(const Pkt4Ptr& pkt) {
...
@@ -1812,15 +1814,15 @@ void Dhcpv4Srv::classifyPacket(const Pkt4Ptr& pkt) {
// quals subscriber-id option that was inserted by the relay (CMTS).
// quals subscriber-id option that was inserted by the relay (CMTS).
// This kind of logic will appear here soon.
// This kind of logic will appear here soon.
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_MODEM
)
!=
std
::
string
::
npos
)
{
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_MODEM
)
!=
std
::
string
::
npos
)
{
pkt
->
addClass
(
DOCSIS3_CLASS_MODEM
);
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_MODEM
);
classes
+=
string
(
DOCSIS3_CLASS_MODEM
)
+
" "
;
classes
+=
string
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_MODEM
)
+
" "
;
}
else
}
else
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_EROUTER
)
!=
std
::
string
::
npos
)
{
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_EROUTER
)
!=
std
::
string
::
npos
)
{
pkt
->
addClass
(
DOCSIS3_CLASS_EROUTER
);
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_EROUTER
);
classes
+=
string
(
DOCSIS3_CLASS_EROUTER
)
+
" "
;
classes
+=
string
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_EROUTER
)
+
" "
;
}
else
{
}
else
{
classes
+=
vendor_class
->
getValue
();
classes
+=
VENDOR_CLASS_PREFIX
+
vendor_class
->
getValue
();
pkt
->
addClass
(
vendor_class
->
getValue
());
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
vendor_class
->
getValue
());
}
}
if
(
!
classes
.
empty
())
{
if
(
!
classes
.
empty
())
{
...
...
src/bin/dhcp4/dhcp4_srv.h
View file @
c7114bab
...
@@ -405,6 +405,14 @@ protected:
...
@@ -405,6 +405,14 @@ protected:
/// @param [out] answer A response message to be sent to a client.
/// @param [out] answer A response message to be sent to a client.
void
processClientName
(
const
Pkt4Ptr
&
query
,
Pkt4Ptr
&
answer
);
void
processClientName
(
const
Pkt4Ptr
&
query
,
Pkt4Ptr
&
answer
);
/// @brief this is a prefix added to the contend of vendor-class option
///
/// If incoming packet has a vendor class option, its content is
/// prepended with this prefix and then interpreted as a class.
/// For example, a packet that sends vendor class with value of "FOO"
/// will cause the packet to be assigned to class VENDOR_CLASS_FOO.
static
const
std
::
string
VENDOR_CLASS_PREFIX
;
private:
private:
/// @brief Process Client FQDN %Option sent by a client.
/// @brief Process Client FQDN %Option sent by a client.
///
///
...
...
src/bin/dhcp4/tests/dhcp4_srv_unittest.cc
View file @
c7114bab
...
@@ -3294,8 +3294,8 @@ TEST_F(Dhcpv4SrvTest, clientClassification) {
...
@@ -3294,8 +3294,8 @@ TEST_F(Dhcpv4SrvTest, clientClassification) {
srv
.
classifyPacket
(
dis1
);
srv
.
classifyPacket
(
dis1
);
EXPECT_TRUE
(
dis1
->
inClass
(
"docsis3.0"
));
EXPECT_TRUE
(
dis1
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"docsis3.0"
));
EXPECT_FALSE
(
dis1
->
inClass
(
"eRouter1.0"
));
EXPECT_FALSE
(
dis1
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.0"
));
// Let's create a relayed DISCOVER. This particular relayed DISCOVER has
// Let's create a relayed DISCOVER. This particular relayed DISCOVER has
// vendor-class set to eRouter1.0
// vendor-class set to eRouter1.0
...
@@ -3305,8 +3305,8 @@ TEST_F(Dhcpv4SrvTest, clientClassification) {
...
@@ -3305,8 +3305,8 @@ TEST_F(Dhcpv4SrvTest, clientClassification) {
srv
.
classifyPacket
(
dis2
);
srv
.
classifyPacket
(
dis2
);
EXPECT_TRUE
(
dis2
->
inClass
(
"eRouter1.0"
));
EXPECT_TRUE
(
dis2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.0"
));
EXPECT_FALSE
(
dis2
->
inClass
(
"docsis3.0"
));
EXPECT_FALSE
(
dis2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"docsis3.0"
));
}
}
// This test verifies that the direct message is dropped when it has been
// This test verifies that the direct message is dropped when it has been
...
...
src/bin/dhcp4/tests/dhcp4_test_utils.h
View file @
c7114bab
...
@@ -199,6 +199,8 @@ public:
...
@@ -199,6 +199,8 @@ public:
using
Dhcpv4Srv
::
classifyPacket
;
using
Dhcpv4Srv
::
classifyPacket
;
using
Dhcpv4Srv
::
accept
;
using
Dhcpv4Srv
::
accept
;
using
Dhcpv4Srv
::
acceptMessageType
;
using
Dhcpv4Srv
::
acceptMessageType
;
using
Dhcpv4Srv
::
VENDOR_CLASS_PREFIX
;
};
};
class
Dhcpv4SrvTest
:
public
::
testing
::
Test
{
class
Dhcpv4SrvTest
:
public
::
testing
::
Test
{
...
...
src/bin/dhcp6/dhcp6_srv.cc
View file @
c7114bab
...
@@ -100,6 +100,8 @@ Dhcp6Hooks Hooks;
...
@@ -100,6 +100,8 @@ Dhcp6Hooks Hooks;
namespace
isc
{
namespace
isc
{
namespace
dhcp
{
namespace
dhcp
{
const
std
::
string
Dhcpv6Srv
::
VENDOR_CLASS_PREFIX
(
"VENDOR_CLASS_"
);
namespace
{
namespace
{
// The following constants describe server's behavior with respect to the
// The following constants describe server's behavior with respect to the
...
@@ -2447,10 +2449,10 @@ void Dhcpv6Srv::classifyPacket(const Pkt6Ptr& pkt) {
...
@@ -2447,10 +2449,10 @@ void Dhcpv6Srv::classifyPacket(const Pkt6Ptr& pkt) {
std
::
ostringstream
classes
;
std
::
ostringstream
classes
;
if
(
vclass
->
hasTuple
(
DOCSIS3_CLASS_MODEM
))
{
if
(
vclass
->
hasTuple
(
DOCSIS3_CLASS_MODEM
))
{
classes
<<
"
VENDOR_CLASS_
"
<<
DOCSIS3_CLASS_MODEM
;
classes
<<
VENDOR_CLASS_
PREFIX
<<
DOCSIS3_CLASS_MODEM
;
}
else
if
(
vclass
->
hasTuple
(
DOCSIS3_CLASS_EROUTER
))
{
}
else
if
(
vclass
->
hasTuple
(
DOCSIS3_CLASS_EROUTER
))
{
classes
<<
DOCSIS3_CLASS_EROUTER
;
classes
<<
VENDOR_CLASS_PREFIX
<<
DOCSIS3_CLASS_EROUTER
;
}
else
{
}
else
{
classes
<<
vclass
->
getTuple
(
0
).
getText
();
classes
<<
vclass
->
getTuple
(
0
).
getText
();
...
...
src/bin/dhcp6/dhcp6_srv.h
View file @
c7114bab
...
@@ -536,6 +536,15 @@ protected:
...
@@ -536,6 +536,15 @@ protected:
/// @param pkt packet to be classified
/// @param pkt packet to be classified
void
classifyPacket
(
const
Pkt6Ptr
&
pkt
);
void
classifyPacket
(
const
Pkt6Ptr
&
pkt
);
/// @brief this is a prefix added to the contend of vendor-class option
///
/// If incoming packet has a vendor class option, its content is
/// prepended with this prefix and then interpreted as a class.
/// For example, a packet that sends vendor class with value of "FOO"
/// will cause the packet to be assigned to class VENDOR_CLASS_FOO.
static
const
std
::
string
VENDOR_CLASS_PREFIX
;
private:
private:
/// @brief Implements the error handler for socket open failure.
/// @brief Implements the error handler for socket open failure.
...
...
src/bin/dhcp6/tests/dhcp6_srv_unittest.cc
View file @
c7114bab
...
@@ -1734,8 +1734,8 @@ TEST_F(Dhcpv6SrvTest, clientClassification) {
...
@@ -1734,8 +1734,8 @@ TEST_F(Dhcpv6SrvTest, clientClassification) {
srv
.
classifyPacket
(
sol2
);
srv
.
classifyPacket
(
sol2
);
EXPECT_TRUE
(
sol2
->
inClass
(
"eRouter1.0"
));
EXPECT_TRUE
(
sol2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.0"
));
EXPECT_FALSE
(
sol2
->
inClass
(
"docsis3.0"
));
EXPECT_FALSE
(
sol2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"docsis3.0"
));
}
}
// This test checks that the server will handle a Solicit with the Vendor Class
// This test checks that the server will handle a Solicit with the Vendor Class
...
...
src/bin/dhcp6/tests/dhcp6_test_utils.h
View file @
c7114bab
...
@@ -118,6 +118,7 @@ public:
...
@@ -118,6 +118,7 @@ public:
using
Dhcpv6Srv
::
writeServerID
;
using
Dhcpv6Srv
::
writeServerID
;
using
Dhcpv6Srv
::
unpackOptions
;
using
Dhcpv6Srv
::
unpackOptions
;
using
Dhcpv6Srv
::
name_change_reqs_
;
using
Dhcpv6Srv
::
name_change_reqs_
;
using
Dhcpv6Srv
::
VENDOR_CLASS_PREFIX
;
/// @brief packets we pretend to receive
/// @brief packets we pretend to receive
///
///
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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