VirtualBox

Changeset 87297 in vbox


Ignore:
Timestamp:
Jan 18, 2021 1:26:35 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9871: Network Manager: Port forwarding validation for NAT networking stuff.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/networkmanager
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp

    r87295 r87297  
    7474}
    7575
     76bool UIDetailsWidgetNATNetwork::revalidate()
     77{
     78    return m_pForwardingTableIPv4->validate() && m_pForwardingTableIPv6->validate();
     79}
     80
    7681void UIDetailsWidgetNATNetwork::retranslateUi()
    7782{
     
    147152            setToolTip(tr("Apply Changes (%1)").arg(m_pButtonBoxForwarding->button(QDialogButtonBox::Ok)->shortcut().toString()));
    148153    }
    149 
    150     /* Retranslate validation: */
    151     retranslateValidation();
    152154}
    153155
     
    156158    m_newData.m_fEnabled = fChecked;
    157159    loadDataForOptions();
    158     revalidate();
    159160    updateButtonStates();
    160161}
     
    163164{
    164165    m_newData.m_strName = strText;
    165     revalidate();
    166166    updateButtonStates();
    167167}
     
    170170{
    171171    m_newData.m_strCIDR = strText;
    172     revalidate();
    173172    updateButtonStates();
    174173}
     
    177176{
    178177    m_newData.m_fSupportsDHCP = fChecked;
    179     revalidate();
    180178    updateButtonStates();
    181179}
     
    184182{
    185183    m_newData.m_fSupportsIPv6 = fChecked;
    186     revalidate();
    187184    updateButtonStates();
    188185}
     
    191188{
    192189    m_newData.m_fAdvertiseDefaultIPv6Route = fChecked;
    193     revalidate();
    194190    updateButtonStates();
    195191}
     
    198194{
    199195    m_newData.m_rules4 = m_pForwardingTableIPv4->rules();
    200     revalidate();
    201196    updateButtonStates();
    202197}
     
    205200{
    206201    m_newData.m_rules6 = m_pForwardingTableIPv6->rules();
    207     revalidate();
    208202    updateButtonStates();
    209203}
     
    422416            {
    423417                /* Prepare IPv4 forwarding table: */
    424                 m_pForwardingTableIPv4 = new UIPortForwardingTable(UIPortForwardingDataList(), false, true);
     418                m_pForwardingTableIPv4 = new UIPortForwardingTable(UIPortForwardingDataList(),
     419                                                                   false /* ip IPv6 protocol */,
     420                                                                   false /* allow empty guest IPs */);
    425421                if (m_pForwardingTableIPv4)
    426422                {
     
    430426                }
    431427                /* Prepare IPv6 forwarding table: */
    432                 m_pForwardingTableIPv6 = new UIPortForwardingTable(UIPortForwardingDataList(), true, true);
     428                m_pForwardingTableIPv6 = new UIPortForwardingTable(UIPortForwardingDataList(),
     429                                                                   true /* ip IPv6 protocol */,
     430                                                                   false /* allow empty guest IPs */);
    433431                if (m_pForwardingTableIPv6)
    434432                {
     
    502500}
    503501
    504 void UIDetailsWidgetNATNetwork::revalidate(QWidget * /*pWidget*/ /* = 0 */)
    505 {
    506 #if 0
    507     /* Validate 'Interface' tab content: */
    508     if (!pWidget || pWidget == m_pErrorPaneAutomatic)
    509     {
    510         const bool fError =    m_newData.m_interface.m_fDHCPEnabled
    511                             && !m_newData.m_dhcpserver.m_fEnabled;
    512         m_pErrorPaneAutomatic->setVisible(fError);
    513     }
    514     if (!pWidget || pWidget == m_pErrorPaneManual)
    515     {
    516         const bool fError = false;
    517         m_pErrorPaneManual->setVisible(fError);
    518     }
    519     if (!pWidget || pWidget == m_pErrorPaneIPv4)
    520     {
    521         const bool fError =    !m_newData.m_interface.m_fDHCPEnabled
    522                             && !m_newData.m_interface.m_strAddress.trimmed().isEmpty()
    523                             && (   !RTNetIsIPv4AddrStr(m_newData.m_interface.m_strAddress.toUtf8().constData())
    524                                 || RTNetStrIsIPv4AddrAny(m_newData.m_interface.m_strAddress.toUtf8().constData()));
    525         m_pErrorPaneIPv4->setVisible(fError);
    526     }
    527     if (!pWidget || pWidget == m_pErrorPaneNMv4)
    528     {
    529         const bool fError =    !m_newData.m_interface.m_fDHCPEnabled
    530                             && !m_newData.m_interface.m_strMask.trimmed().isEmpty()
    531                             && (   !RTNetIsIPv4AddrStr(m_newData.m_interface.m_strMask.toUtf8().constData())
    532                                 || RTNetStrIsIPv4AddrAny(m_newData.m_interface.m_strMask.toUtf8().constData()));
    533         m_pErrorPaneNMv4->setVisible(fError);
    534     }
    535     if (!pWidget || pWidget == m_pErrorPaneIPv6)
    536     {
    537         const bool fError =    !m_newData.m_interface.m_fDHCPEnabled
    538                             && m_newData.m_interface.m_fSupportedIPv6
    539                             && !m_newData.m_interface.m_strAddress6.trimmed().isEmpty()
    540                             && (   !RTNetIsIPv6AddrStr(m_newData.m_interface.m_strAddress6.toUtf8().constData())
    541                                 || RTNetStrIsIPv6AddrAny(m_newData.m_interface.m_strAddress6.toUtf8().constData()));
    542         m_pErrorPaneIPv6->setVisible(fError);
    543     }
    544     if (!pWidget || pWidget == m_pErrorPaneNMv6)
    545     {
    546         bool fIsMaskPrefixLengthNumber = false;
    547         const int iMaskPrefixLength = m_newData.m_interface.m_strPrefixLength6.trimmed().toInt(&fIsMaskPrefixLengthNumber);
    548         const bool fError =    !m_newData.m_interface.m_fDHCPEnabled
    549                             && m_newData.m_interface.m_fSupportedIPv6
    550                             && (   !fIsMaskPrefixLengthNumber
    551                                 || iMaskPrefixLength < 0
    552                                 || iMaskPrefixLength > 128);
    553         m_pErrorPaneNMv6->setVisible(fError);
    554     }
    555 
    556     /* Validate 'DHCP server' tab content: */
    557     if (!pWidget || pWidget == m_pErrorPaneDHCPAddress)
    558     {
    559         const bool fError =    m_newData.m_dhcpserver.m_fEnabled
    560                             && (   !RTNetIsIPv4AddrStr(m_newData.m_dhcpserver.m_strAddress.toUtf8().constData())
    561                                 || RTNetStrIsIPv4AddrAny(m_newData.m_dhcpserver.m_strAddress.toUtf8().constData()));
    562         m_pErrorPaneDHCPAddress->setVisible(fError);
    563     }
    564     if (!pWidget || pWidget == m_pErrorPaneDHCPMask)
    565     {
    566         const bool fError =    m_newData.m_dhcpserver.m_fEnabled
    567                             && (   !RTNetIsIPv4AddrStr(m_newData.m_dhcpserver.m_strMask.toUtf8().constData())
    568                                 || RTNetStrIsIPv4AddrAny(m_newData.m_dhcpserver.m_strMask.toUtf8().constData()));
    569         m_pErrorPaneDHCPMask->setVisible(fError);
    570     }
    571     if (!pWidget || pWidget == m_pErrorPaneDHCPLowerAddress)
    572     {
    573         const bool fError =    m_newData.m_dhcpserver.m_fEnabled
    574                             && (   !RTNetIsIPv4AddrStr(m_newData.m_dhcpserver.m_strLowerAddress.toUtf8().constData())
    575                                 || RTNetStrIsIPv4AddrAny(m_newData.m_dhcpserver.m_strLowerAddress.toUtf8().constData()));
    576         m_pErrorPaneDHCPLowerAddress->setVisible(fError);
    577     }
    578     if (!pWidget || pWidget == m_pErrorPaneDHCPUpperAddress)
    579     {
    580         const bool fError =    m_newData.m_dhcpserver.m_fEnabled
    581                             && (   !RTNetIsIPv4AddrStr(m_newData.m_dhcpserver.m_strUpperAddress.toUtf8().constData())
    582                                 || RTNetStrIsIPv4AddrAny(m_newData.m_dhcpserver.m_strUpperAddress.toUtf8().constData()));
    583         m_pErrorPaneDHCPUpperAddress->setVisible(fError);
    584     }
    585 
    586     /* Retranslate validation: */
    587     retranslateValidation(pWidget);
    588 #endif
    589 }
    590 
    591 void UIDetailsWidgetNATNetwork::retranslateValidation(QWidget * /*pWidget*/ /* = 0 */)
    592 {
    593 #if 0
    594     /* Translate 'Interface' tab content: */
    595     if (!pWidget || pWidget == m_pErrorPaneAutomatic)
    596         m_pErrorPaneAutomatic->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> is set to obtain the address automatically "
    597                                              "but the corresponding DHCP server is not enabled.").arg(m_newData.m_interface.m_strName));
    598     if (!pWidget || pWidget == m_pErrorPaneIPv4)
    599         m_pErrorPaneIPv4->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    600                                         "IPv4 address.").arg(m_newData.m_interface.m_strName));
    601     if (!pWidget || pWidget == m_pErrorPaneNMv4)
    602         m_pErrorPaneNMv4->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    603                                         "IPv4 network mask.").arg(m_newData.m_interface.m_strName));
    604     if (!pWidget || pWidget == m_pErrorPaneIPv6)
    605         m_pErrorPaneIPv6->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    606                                         "IPv6 address.").arg(m_newData.m_interface.m_strName));
    607     if (!pWidget || pWidget == m_pErrorPaneNMv6)
    608         m_pErrorPaneNMv6->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    609                                         "IPv6 prefix length.").arg(m_newData.m_interface.m_strName));
    610 
    611     /* Translate 'DHCP server' tab content: */
    612     if (!pWidget || pWidget == m_pErrorPaneDHCPAddress)
    613         m_pErrorPaneDHCPAddress->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    614                                                "DHCP server address.").arg(m_newData.m_interface.m_strName));
    615     if (!pWidget || pWidget == m_pErrorPaneDHCPMask)
    616         m_pErrorPaneDHCPMask->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    617                                             "DHCP server mask.").arg(m_newData.m_interface.m_strName));
    618     if (!pWidget || pWidget == m_pErrorPaneDHCPLowerAddress)
    619         m_pErrorPaneDHCPLowerAddress->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    620                                                     "DHCP server lower address bound.").arg(m_newData.m_interface.m_strName));
    621     if (!pWidget || pWidget == m_pErrorPaneDHCPUpperAddress)
    622         m_pErrorPaneDHCPUpperAddress->setToolTip(tr("Host interface <nobr><b>%1</b></nobr> does not currently have a valid "
    623                                                     "DHCP server upper address bound.").arg(m_newData.m_interface.m_strName));
    624 #endif
    625 }
    626 
    627502void UIDetailsWidgetNATNetwork::updateButtonStates()
    628503{
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h

    r87295 r87297  
    125125    void setData(const UIDataNATNetwork &data, bool fHoldPosition = false);
    126126
     127    /** Revalidates changes. */
     128    bool revalidate();
     129
    127130protected:
    128131
     
    182185    /** @name Change handling stuff.
    183186      * @{ */
    184         /** Revalidates changes for passed @a pWidget. */
    185         void revalidate(QWidget *pWidget = 0);
    186         /** Retranslates validation for passed @a pWidget. */
    187         void retranslateValidation(QWidget *pWidget = 0);
    188187        /** Updates button states. */
    189188        void updateButtonStates();
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UINetworkManager.cpp

    r87295 r87297  
    11061106    /* Check NAT network details-widget: */
    11071107    AssertMsgReturnVoid(m_pDetailsWidgetNATNetwork, ("NAT network details-widget isn't created!\n"));
     1108
     1109    /* Revalidate NAT network details: */
     1110    if (!m_pDetailsWidgetNATNetwork->revalidate())
     1111        return;
    11081112
    11091113    /* Get item data: */
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