]> git.ipfire.org Git - thirdparty/kea.git/commit
[#42,!103] Initial receiver thread and packet queuing
authorThomas Markwalder <tmark@isc.org>
Mon, 29 Oct 2018 15:27:12 +0000 (11:27 -0400)
committerThomas Markwalder <tmark@isc.org>
Mon, 29 Oct 2018 15:27:12 +0000 (11:27 -0400)
commit21cac7d0a02b9af376c8dda1d7a7d2059254ece8
treeb7eb4ecad7738aff8d7b2f3f7e1ca762da03c0c8
parent1d34b2965f2bd9c4260b18a5b6ebfc55b867a0c2
[#42,!103] Initial receiver thread and packet queuing

New files:
    src/lib/dhcp -
    packet_queue.h - defines packet queuing template classes
    socket_info.h - contains existing class extracted iface_mgr.h
    tests/packet_queue4_unittest.cc
    tests/packet_queue6_unittest.cc

src/lib/dhcp/iface_mgr.*
IfaceMgr:: - new functions
    - receiveDHCP<4/6>Packets() - thread worker function which
    monitors interface sockets, enqueues packets as they are read

    - receiveDHCP<4/6>Packet() - reads a single packet from a socket

    - startDHCPReceiver(const uint16_t family) - runs
    receiveDHCP<4/6?appropriate worker function in a thread

    - stopReceiver() - stops the receiver thread

    - setPacketQueue<4/6> - replaces the default packet queue instance

    receiveDHCP<4/6>() - modified to monitor receiver watch
    socekts rather than interface sockets.  Dequeue packets
    from packet queue.

src/lib/dhcp/tests/iface_mgr_unittest.cc
    TEST_F(IfaceMgrTest, packetQueue4)
    TEST_F(IfaceMgrTest, packetQueue6)

src/lib/dhcpsrv/cfg_iface.cc
    CfgIface::openSockets() - starts DHCP receiver
    CfgIface::closeSockets() - stops DHCP receiver
16 files changed:
src/lib/dhcp/Makefile.am
src/lib/dhcp/iface_mgr.cc
src/lib/dhcp/iface_mgr.h
src/lib/dhcp/packet_queue.h [new file with mode: 0644]
src/lib/dhcp/socket_info.h [new file with mode: 0644]
src/lib/dhcp/tests/Makefile.am
src/lib/dhcp/tests/iface_mgr_test_config.cc
src/lib/dhcp/tests/iface_mgr_test_config.h
src/lib/dhcp/tests/iface_mgr_unittest.cc
src/lib/dhcp/tests/packet_queue4_unittest.cc [new file with mode: 0644]
src/lib/dhcp/tests/packet_queue6_unittest.cc [new file with mode: 0644]
src/lib/dhcpsrv/cfg_iface.cc
src/lib/dhcpsrv/cfg_iface.h
src/lib/dhcpsrv/parsers/ifaces_config_parser.cc
src/lib/dhcpsrv/tests/database_connection_unittest.cc
src/lib/util/threads/thread.h