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
Adam Osuchowski
Kea
Commits
1ca6a3ac
Commit
1ca6a3ac
authored
Apr 25, 2013
by
Marcin Siodelski
Browse files
[2902] Do not use the broadcast address as source in server's response.
parent
8b0cb0de
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcp/pkt_filter_lpf.cc
View file @
1ca6a3ac
...
...
@@ -110,6 +110,20 @@ PktFilterLPF::send(const Iface& iface, uint16_t sockfd, const Pkt4Ptr& pkt) {
}
writeEthernetHeader
(
iface
.
getMac
(),
&
dest_addr
[
0
],
buf
);
// It is likely that the local address in pkt object is set to
// broadcast address. This is the case if server received the
// client's packet on broadcast address. Therefore, we need to
// correct it here and assign the actual source address.
if
(
pkt
->
getLocalAddr
().
toText
()
==
"255.255.255.255"
)
{
const
Iface
::
SocketCollection
&
sockets
=
iface
.
getSockets
();
for
(
Iface
::
SocketCollection
::
const_iterator
it
=
sockets
.
begin
();
it
!=
sockets
.
end
();
++
it
)
{
if
(
sockfd
==
it
->
sockfd_
)
{
pkt
->
setLocalAddr
(
it
->
addr_
);
}
}
}
// IP and UDP header
writeIpUdpHeader
(
pkt
,
buf
);
...
...
src/lib/dhcp/tests/pkt_filter_lpf_unittest.cc
View file @
1ca6a3ac
...
...
@@ -139,7 +139,12 @@ TEST_F(PktFilterLPFTest, DISABLED_send) {
ASSERT_TRUE
(
pkt
);
// Set required fields.
pkt
->
setLocalAddr
(
IOAddress
(
"127.0.0.1"
));
// By setting the local address to broadcast we simulate the
// typical scenario when client's request was send to broadcast
// address and server by default used it as a source address
// in its response. The send() function should be able to detect
// it and correct the source address.
pkt
->
setLocalAddr
(
IOAddress
(
"255.255.255.255"
));
pkt
->
setRemotePort
(
PORT
);
pkt
->
setLocalPort
(
PORT
+
1
);
pkt
->
setIndex
(
ifindex_
);
...
...
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