For DHCP client configuration control the setting of the broadcast flag in the 69/10169/2
authorNeale Ranns <nranns@cisco.com>
Wed, 17 Jan 2018 18:29:10 +0000 (10:29 -0800)
committerOle Trøan <otroan@employees.org>
Tue, 23 Jan 2018 13:36:48 +0000 (13:36 +0000)
commit54c6dc450031443663d40b836a8b0bffdcc2bdea
tree0d59479cda2cdaf14ecd72a6d72ef2ac3083e6ac
parent9d42087149a6870965896be74dc6260f72d2cac9
For DHCP client configuration control the setting of the broadcast flag in the
DISCOVER message sent.

According to RFC2131:

   In the case of a client using DHCP for initial configuration (before
   the client's TCP/IP software has been completely configured), DHCP
   requires creative use of the client's TCP/IP software and liberal
   interpretation of RFC 1122.  The TCP/IP software SHOULD accept and
   forward to the IP layer any IP packets delivered to the client's
   hardware address before the IP address is configured; DHCP servers
   and BOOTP relay agents may not be able to deliver DHCP messages to
   clients that cannot accept hardware unicast datagrams before the
   TCP/IP software is configured.

   To work around some clients that cannot accept IP unicast datagrams
   before the TCP/IP software is configured as discussed in the previous
   paragraph, DHCP uses the 'flags' field [21].  The leftmost bit is
   defined as the BROADCAST (B) flag.  The semantics of this flag are
   discussed in section 4.1 of this document.  The remaining bits of the
   flags field are reserved for future use.  They MUST be set to zero by
   clients and ignored by servers and relay agents.  Figure 2 gives the
   format of the 'flags' field.

this changes means VPP conforms to the:
   "SHOULD accept and forward to the IP layer any IP packets delivered
    to the client's hardware address before the IP address is configured"
with the caveat that VPP allows DHCP packets destined to the stanard client
DHCP port to be delivered. With this enhancement the control-plane is now
able to choose the setting of the broadcast flag.

Change-Id: Ia4eb2c9bb1e30c29f9192facc645e9533641955a
Signed-off-by: Neale Ranns <nranns@cisco.com>
12 files changed:
src/vnet.am
src/vnet/dhcp/client.c
src/vnet/dhcp/client.h
src/vnet/dhcp/dhcp.api
src/vnet/dhcp/dhcp_api.c
src/vnet/dhcp/dhcp_client_detect.c [new file with mode: 0644]
src/vpp-api/vom/dhcp_config.cpp
src/vpp-api/vom/dhcp_config.hpp
src/vpp-api/vom/dhcp_config_cmds.cpp
src/vpp-api/vom/dhcp_config_cmds.hpp
test/test_dhcp.py
test/vpp_papi_provider.py