VirtualBox

Changeset 75568 in vbox for trunk/src/VBox/NetworkServices


Ignore:
Timestamp:
Nov 19, 2018 11:52:10 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126727
Message:

Main/DHCPD: bugref:9288 Use new implementation of DHCP server (VCC 10 and older GCC support).

Location:
trunk/src/VBox/NetworkServices
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/Dhcpd/ClientId.h

    r70836 r75568  
    3535    ClientId()
    3636      : m_mac(), m_id() {}
    37     ClientId(const RTMAC &mac, const OptClientId &id)
    38       : m_mac(mac), m_id(id) {}
     37    ClientId(const RTMAC &macParam, const OptClientId &idParam)
     38      : m_mac(macParam), m_id(idParam) {}
    3939
    4040    const RTMAC &mac() const { return m_mac; }
  • trunk/src/VBox/NetworkServices/Dhcpd/Config.cpp

    r71749 r75568  
    589589    /** @todo r=bird: Visual C++ 2010 does not grok this use of 'auto'. */
    590590    // XXX: debug
    591     for (auto it: m_GlobalOptions) {
    592         std::shared_ptr<DhcpOption> opt(it.second);
     591    for (optmap_t::iterator it = m_GlobalOptions.begin(); it != m_GlobalOptions.end(); ++it) {
     592        std::shared_ptr<DhcpOption> opt(it->second);
    593593
    594594        octets_t data;
     
    596596
    597597        bool space = false;
    598         for (auto c: data) {
     598        for (octets_t::iterator c = data.begin(); c != data.end(); ++c) {
    599599            if (space)
    600600                std::cout << " ";
    601601            else
    602602                space = true;
    603             std::cout << (int)c;
     603            std::cout << (int)*c;
    604604        }
    605605        std::cout << std::endl;
     
    854854    optmap << new OptSubnetMask(m_IPv4Netmask);
    855855
    856     for (auto optreq: reqOpts.value())
    857     {
    858         std::cout << ">>> requested option " << (int)optreq << std::endl;
    859 
    860         if (optreq == OptSubnetMask::optcode)
     856    const OptParameterRequest::value_t& reqValue = reqOpts.value();
     857    for (octets_t::const_iterator optreq = reqValue.begin(); optreq != reqValue.end(); ++optreq)
     858    {
     859        std::cout << ">>> requested option " << (int)*optreq << std::endl;
     860
     861        if (*optreq == OptSubnetMask::optcode)
    861862        {
    862863            std::cout << "... always supplied" << std::endl;
     
    866867        if (vmopts != NULL)
    867868        {
    868             optmap_t::const_iterator it( vmopts->find(optreq) );
     869            optmap_t::const_iterator it( vmopts->find(*optreq) );
    869870            if (it != vmopts->end())
    870871            {
     
    875876        }
    876877
    877         optmap_t::const_iterator it( m_GlobalOptions.find(optreq) );
     878        optmap_t::const_iterator it( m_GlobalOptions.find(*optreq) );
    878879        if (it != m_GlobalOptions.end())
    879880        {
     
    890891    if (vmopts != NULL)
    891892    {
    892         for (auto it: *vmopts) {
    893             std::shared_ptr<DhcpOption> opt(it.second);
     893        for (optmap_t::const_iterator it = vmopts->begin(); it != vmopts->end(); ++it) {
     894            std::shared_ptr<DhcpOption> opt(it->second);
    894895            if (optmap.count(opt->optcode()) == 0 && opt->optcode() > 127)
    895896            {
     
    900901    }
    901902
    902     for (auto it: m_GlobalOptions) {
    903         std::shared_ptr<DhcpOption> opt(it.second);
     903    for (optmap_t::const_iterator it = m_GlobalOptions.begin(); it != m_GlobalOptions.end(); ++it) {
     904        std::shared_ptr<DhcpOption> opt(it->second);
    904905        if (optmap.count(opt->optcode()) == 0 && opt->optcode() > 127)
    905906        {
  • trunk/src/VBox/NetworkServices/Dhcpd/Db.cpp

    r75513 r75568  
    291291     */
    292292    const xml::ElementNode *ndTime = ndLease->findChildElement("Time");
    293     if (time == NULL)
     293    if (ndTime == NULL)
    294294        return NULL;
    295295
  • trunk/src/VBox/NetworkServices/Dhcpd/Db.h

    r73076 r75568  
    5151    Binding(const Binding &);
    5252
    53     explicit Binding(RTNETADDRIPV4 addr)
    54       : m_addr(addr), m_state(FREE),
     53    explicit Binding(RTNETADDRIPV4 addrParam)
     54      : m_addr(addrParam), m_state(FREE),
    5555        m_issued(), m_secLease() {}
    5656
    57     Binding(RTNETADDRIPV4 addr, const ClientId &id)
    58       : m_addr(addr), m_state(FREE), m_id(id),
     57    Binding(RTNETADDRIPV4 addrParam, const ClientId &idParam)
     58      : m_addr(addrParam), m_state(FREE), m_id(idParam),
    5959        m_issued(), m_secLease() {}
    6060
     
    7070    TimeStamp issued() const { return m_issued; }
    7171
    72     Binding &setState(State state)
     72    Binding &setState(State stateParam)
    7373    {
    74         m_state = state;
     74        m_state = stateParam;
    7575        return *this;
    7676    }
     
    8585    }
    8686
    87     Binding &giveTo(const ClientId &id)
     87    Binding &giveTo(const ClientId &idParam)
    8888    {
    89         m_id = id;
     89        m_id = idParam;
    9090        m_state = FREE;
    9191        return *this;
  • trunk/src/VBox/NetworkServices/Dhcpd/Defs.h

    r75513 r75568  
    2727#include <vector>
    2828
     29#ifdef _MSC_VER
     30# define __func__ __FUNCTION__
     31#endif
     32
    2933typedef std::vector<uint8_t> octets_t;
    3034
     
    3236
    3337class DhcpOption;
    34 typedef std::map<uint8_t, std::shared_ptr<DhcpOption>> optmap_t;
     38typedef std::map<uint8_t, std::shared_ptr<DhcpOption> > optmap_t;
    3539
    3640inline bool operator==(const RTMAC &l, const RTMAC &r)
  • trunk/src/VBox/NetworkServices/Dhcpd/DhcpMessage.cpp

    r70836 r75568  
    323323
    324324DhcpServerMessage::DhcpServerMessage(const DhcpClientMessage &req,
    325                                      uint8_t messageType, RTNETADDRIPV4 serverAddr)
     325                                     uint8_t messageTypeParam, RTNETADDRIPV4 serverAddr)
    326326  : DhcpMessage(),
    327327    m_optServerId(serverAddr)
     
    329329    m_dst.u = 0xffffffff;       /* broadcast */
    330330
    331     m_optMessageType = OptMessageType(messageType);
     331    m_optMessageType = OptMessageType(messageTypeParam);
    332332
    333333    /* copy values from the request (cf. RFC2131 Table 3) */
  • trunk/src/VBox/NetworkServices/Dhcpd/DhcpOptions.cpp

    r75513 r75568  
    3636optmap_t &operator<<(optmap_t &optmap, const std::shared_ptr<DhcpOption> &option)
    3737{
    38     if (option == NULL)
     38    if (option == nullptr)
    3939        return optmap;
    4040
  • trunk/src/VBox/NetworkServices/Dhcpd/Makefile.kmk

    r75513 r75568  
    2929 ifdef VBOX_WITH_HARDENING
    3030  PROGRAMS += VBoxNetDhcpdHardened
    31   VBoxNetDhcpdHardened_TEMPLATE = VBOXR3HARDENEDEXE
    32   VBoxNetDhcpdHardened_NAME     = VBoxNetDhcpd
    33   VBoxNetDhcpdHardened_DEFS     = SERVICE_NAME=\"VBoxNetDhcpd\"
    34   VBoxNetDhcpdHardened_SOURCES  = VBoxNetDhcpdHardened.cpp
    35   VBoxNetDhcpdHardened_SOURCES.win = $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetDhcpd-icon.rc
    36   VBoxNetDhcpdHardened_LDFLAGS.win = /SUBSYSTEM:windows
     31  DLLS += VBoxNetDhcpd
    3732 else
    3833  PROGRAMS += VBoxNetDhcpd
    3934 endif
    4035
    41  VBoxNetDhcpd_TEMPLATE := $(if-expr defined(VBOX_WITH_HARDENING),VBOXMAINDLL,VBOXMAINCLIENTEXE)
    42  VBoxNetDhcpd_NAME     := VBoxNetDhcpd
     36 VBoxNetDhcpdHardened_TEMPLATE = VBOXR3HARDENEDEXE
     37 VBoxNetDhcpdHardened_NAME     = VBoxNetDHCP
     38 VBoxNetDhcpdHardened_DEFS     = SERVICE_NAME=\"VBoxNetDhcpd\"
     39 VBoxNetDhcpdHardened_SOURCES  = VBoxNetDhcpdHardened.cpp
     40 VBoxNetDhcpdHardened_SOURCES.win = $(VBoxNetDhcpd_0_OUTDIR)/VBoxNetDhcpd-icon.rc
     41 VBoxNetDhcpdHardened_LDFLAGS.win = /SUBSYSTEM:windows
     42
     43 VBoxNetDhcpd_TEMPLATE := $(if-expr defined(VBOX_WITH_HARDENING),VBoxR3Dll,VBOXR3EXE)
     44 VBoxNetDhcpd_NAME      = VBoxNetDHCP
    4345 # VBoxNetDhcpd_DEFS      = IPv6
    44  # VBoxNetLwipNAT_DEFS.linux = WITH_VALGRIND
    45  VBoxNetDhcpd_DEFS.win  = VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x501 # Windows XP
     46 # VBoxNetDhcpd_DEFS.linux = WITH_VALGRIND
     47 #VBoxNetDhcpd_DEFS.win  = VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x501 # Windows XP
    4648
    4749 # (current dir is for for lwipopts.h)
    4850 VBoxNetDhcpd_INCS += . $(addprefix ../../Devices/Network/lwip-new/,$(LWIP_INCS))
    4951
    50  VBoxNetDhcpd_SOURCES  =
    51  VBoxNetDhcpd_SOURCES += ClientId.cpp
    52  VBoxNetDhcpd_SOURCES += Config.cpp
    53  VBoxNetDhcpd_SOURCES += DHCPD.cpp
    54  VBoxNetDhcpd_SOURCES += Db.cpp
    55  VBoxNetDhcpd_SOURCES += DhcpMessage.cpp
    56  VBoxNetDhcpd_SOURCES += DhcpOptions.cpp
    57  VBoxNetDhcpd_SOURCES += IPv4Pool.cpp
    58  VBoxNetDhcpd_SOURCES += TimeStamp.cpp
    59  VBoxNetDhcpd_SOURCES += VBoxNetDhcpd.cpp
    60  VBoxNetDhcpd_SOURCES += $(addprefix ../../Devices/Network/lwip-new/,$(LWIP_SOURCES))
     52 VBoxNetDhcpd_DEFS    = KBUILD_TYPE=\"$(KBUILD_TYPE)\"
     53 ifneq ($(KBUILD_TARGET),win)
     54  VBoxNetDhcpd_DEFS     += VBOX_WITH_XPCOM
     55  VBoxNetDhcpd_INCS     += $(VBOX_XPCOM_INCS)
     56  VBoxNetDhcpd_CXXFLAGS += $(VBOX_GCC_std)
     57 endif
     58 VBoxNetDhcpd_SOURCES = ../../Main/glue/VBoxLogRelCreate.cpp \
     59                        ../../Main/glue/GetVBoxUserHomeDirectory.cpp \
     60                        ClientId.cpp \
     61                        Config.cpp \
     62                        DHCPD.cpp \
     63                        Db.cpp \
     64                        DhcpMessage.cpp \
     65                        DhcpOptions.cpp \
     66                        IPv4Pool.cpp \
     67                        TimeStamp.cpp \
     68                        VBoxNetDhcpd.cpp \
     69                        $(addprefix ../../Devices/Network/lwip-new/,$(LWIP_SOURCES))
    6170
    62  VBoxNetLwipNAT_LIBS = $(LIB_RUNTIME)
     71 VBoxNetDhcpd_LIBS = $(LIB_RUNTIME)
    6372
    64  VBoxNetLwipNAT_LIBS.solaris += socket nsl
    65  VBoxNetLwipNAT_LDFLAGS.win = /SUBSYSTEM:windows
     73 VBoxNetDhcpd_LIBS.solaris += socket nsl
     74 VBoxNetDhcpd_LDFLAGS.win = /SUBSYSTEM:windows
    6675
    6776 ifeq ($(KBUILD_TARGET),win)
  • trunk/src/VBox/NetworkServices/Dhcpd/VBoxNetDhcpd.cpp

    r75513 r75568  
    5252#include <memory>
    5353
     54#ifdef RT_OS_WINDOWS /* WinMain */
     55#undef htonl
     56#undef ntohl
     57# include <iprt/win/windows.h>
     58#endif
    5459
    5560struct delete_pbuf
     
    448453                                                     i, cSegs,
    449454                                                     &cbSegFrame);
    450                 ifInput(pvSegFrame, cbFrame);
     455                ifInput(pvSegFrame, (uint32_t)cbFrame);
    451456            }
    452457        }
     
    738743
    739744    unique_ptr_pbuf q ( pbuf_alloc(PBUF_RAW, (u16_t)data.size(), PBUF_RAM) );
    740     if (q == NULL)
    741         return;
    742 
    743     error = pbuf_take(q.get(), &data.front(), data.size());
     745    if (q == nullptr)
     746        return;
     747
     748    error = pbuf_take(q.get(), &data.front(), (u16_t)data.size());
    744749    if (error != ERR_OK)
    745750        return;
  • trunk/src/VBox/NetworkServices/Makefile.kmk

    r75513 r75568  
    2222ifdef VBOX_WITH_MAIN
    2323 # Include sub-makefiles.
    24  include $(PATH_SUB_CURRENT)/DHCP/Makefile.kmk
     24 ifndef VBOX_WITH_DHCPD
     25  include $(PATH_SUB_CURRENT)/DHCP/Makefile.kmk
     26 else
     27  include $(PATH_SUB_CURRENT)/Dhcpd/Makefile.kmk
     28 endif
    2529 ifdef VBOX_WITH_NAT_SERVICE
    2630  include $(PATH_SUB_CURRENT)/NAT/Makefile.kmk
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette