VirtualBox

Ignore:
Timestamp:
Jul 16, 2019 7:57:16 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
132193
Message:

Dhcpd: Configurable lease time. bugref:9288

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/Dhcpd/Config.cpp

    r79818 r79819  
    830830        m_secMaxLeaseTime = 0;
    831831
     832    /* Swap min and max if max is smaller: */
     833    if (m_secMaxLeaseTime < m_secMinLeaseTime && m_secMinLeaseTime && m_secMaxLeaseTime)
     834    {
     835        LogRel(("Swapping min/max lease times: %u <-> %u\n", m_secMinLeaseTime, m_secMaxLeaseTime));
     836        uint32_t uTmp = m_secMaxLeaseTime;
     837        m_secMaxLeaseTime = m_secMinLeaseTime;
     838        m_secMinLeaseTime = uTmp;
     839    }
     840
    832841    /*
    833842     * Parse children.
     
    852861{
    853862    ConfigLevelBase::initFromXml(pElmOptions, fStrict, pConfig);
     863
     864    /*
     865     * Resolve defaults here in the global config so we don't have to do this
     866     * in Db::allocate() for every lease request.
     867     */
     868    if (m_secMaxLeaseTime == 0 && m_secDefaultLeaseTime == 0 && m_secMinLeaseTime == 0)
     869    {
     870        m_secMinLeaseTime     = 300;                /*  5 min */
     871        m_secDefaultLeaseTime = 600;                /* 10 min */
     872        m_secMaxLeaseTime     = 12 * RT_SEC_1HOUR;  /* 12 hours */
     873    }
     874    else
     875    {
     876        if (m_secDefaultLeaseTime == 0)
     877        {
     878            if (m_secMaxLeaseTime != 0)
     879                m_secDefaultLeaseTime = RT_MIN(RT_MAX(m_secMinLeaseTime, 600), m_secMaxLeaseTime);
     880            else
     881            {
     882                m_secDefaultLeaseTime = RT_MAX(m_secMinLeaseTime, 600);
     883                m_secMaxLeaseTime = RT_MAX(m_secDefaultLeaseTime, 12 * RT_SEC_1HOUR);
     884            }
     885        }
     886        if (m_secMaxLeaseTime == 0)
     887            m_secMaxLeaseTime = RT_MAX(RT_MAX(m_secMinLeaseTime, m_secDefaultLeaseTime), 12 * RT_SEC_1HOUR);
     888        if (m_secMinLeaseTime == 0)
     889            m_secMinLeaseTime = RT_MIN(300, m_secDefaultLeaseTime);
     890    }
     891
    854892}
    855893
Note: See TracChangeset for help on using the changeset viewer.

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