Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Kea
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Adam Osuchowski
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;
namespace
isc
{
namespace
dhcp
{
const
std
::
string
Dhcpv4Srv
::
VENDOR_CLASS_PREFIX
(
"VENDOR_CLASS_"
);
Dhcpv4Srv
::
Dhcpv4Srv
(
uint16_t
port
,
const
char
*
dbconfig
,
const
bool
use_bcast
,
const
bool
direct_response_desired
)
:
shutdown_
(
true
),
alloc_engine_
(),
port_
(
port
),
...
...
@@ -1812,15 +1814,15 @@ void Dhcpv4Srv::classifyPacket(const Pkt4Ptr& pkt) {
// quals subscriber-id option that was inserted by the relay (CMTS).
// This kind of logic will appear here soon.
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_MODEM
)
!=
std
::
string
::
npos
)
{
pkt
->
addClass
(
DOCSIS3_CLASS_MODEM
);
classes
+=
string
(
DOCSIS3_CLASS_MODEM
)
+
" "
;
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_MODEM
);
classes
+=
string
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_MODEM
)
+
" "
;
}
else
if
(
vendor_class
->
getValue
().
find
(
DOCSIS3_CLASS_EROUTER
)
!=
std
::
string
::
npos
)
{
pkt
->
addClass
(
DOCSIS3_CLASS_EROUTER
);
classes
+=
string
(
DOCSIS3_CLASS_EROUTER
)
+
" "
;
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_EROUTER
);
classes
+=
string
(
VENDOR_CLASS_PREFIX
+
DOCSIS3_CLASS_EROUTER
)
+
" "
;
}
else
{
classes
+=
vendor_class
->
getValue
();
pkt
->
addClass
(
vendor_class
->
getValue
());
classes
+=
VENDOR_CLASS_PREFIX
+
vendor_class
->
getValue
();
pkt
->
addClass
(
VENDOR_CLASS_PREFIX
+
vendor_class
->
getValue
());
}
if
(
!
classes
.
empty
())
{
...
...
src/bin/dhcp4/dhcp4_srv.h
View file @
c7114bab
...
...
@@ -405,6 +405,14 @@ protected:
/// @param [out] answer A response message to be sent to a client.
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:
/// @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) {
srv
.
classifyPacket
(
dis1
);
EXPECT_TRUE
(
dis1
->
inClass
(
"docsis3.0"
));
EXPECT_FALSE
(
dis1
->
inClass
(
"eRouter1.0"
));
EXPECT_TRUE
(
dis1
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"docsis3.0"
));
EXPECT_FALSE
(
dis1
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.0"
));
// Let's create a relayed DISCOVER. This particular relayed DISCOVER has
// vendor-class set to eRouter1.0
...
...
@@ -3305,8 +3305,8 @@ TEST_F(Dhcpv4SrvTest, clientClassification) {
srv
.
classifyPacket
(
dis2
);
EXPECT_TRUE
(
dis2
->
inClass
(
"eRouter1.0"
));
EXPECT_FALSE
(
dis2
->
inClass
(
"docsis3.0"
));
EXPECT_TRUE
(
dis2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.0"
));
EXPECT_FALSE
(
dis2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"docsis3.0"
));
}
// 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:
using
Dhcpv4Srv
::
classifyPacket
;
using
Dhcpv4Srv
::
accept
;
using
Dhcpv4Srv
::
acceptMessageType
;
using
Dhcpv4Srv
::
VENDOR_CLASS_PREFIX
;
};
class
Dhcpv4SrvTest
:
public
::
testing
::
Test
{
...
...
src/bin/dhcp6/dhcp6_srv.cc
View file @
c7114bab
...
...
@@ -100,6 +100,8 @@ Dhcp6Hooks Hooks;
namespace
isc
{
namespace
dhcp
{
const
std
::
string
Dhcpv6Srv
::
VENDOR_CLASS_PREFIX
(
"VENDOR_CLASS_"
);
namespace
{
// The following constants describe server's behavior with respect to the
...
...
@@ -2447,10 +2449,10 @@ void Dhcpv6Srv::classifyPacket(const Pkt6Ptr& pkt) {
std
::
ostringstream
classes
;
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
))
{
classes
<<
DOCSIS3_CLASS_EROUTER
;
classes
<<
VENDOR_CLASS_PREFIX
<<
DOCSIS3_CLASS_EROUTER
;
}
else
{
classes
<<
vclass
->
getTuple
(
0
).
getText
();
...
...
src/bin/dhcp6/dhcp6_srv.h
View file @
c7114bab
...
...
@@ -536,6 +536,15 @@ protected:
/// @param pkt packet to be classified
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:
/// @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) {
srv
.
classifyPacket
(
sol2
);
EXPECT_TRUE
(
sol2
->
inClass
(
"eRouter1.0"
));
EXPECT_FALSE
(
sol2
->
inClass
(
"docsis3.0"
));
EXPECT_TRUE
(
sol2
->
inClass
(
srv
.
VENDOR_CLASS_PREFIX
+
"eRouter1.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
...
...
src/bin/dhcp6/tests/dhcp6_test_utils.h
View file @
c7114bab
...
...
@@ -118,6 +118,7 @@ public:
using
Dhcpv6Srv
::
writeServerID
;
using
Dhcpv6Srv
::
unpackOptions
;
using
Dhcpv6Srv
::
name_change_reqs_
;
using
Dhcpv6Srv
::
VENDOR_CLASS_PREFIX
;
/// @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