VirtualBox

Changeset 87545 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Feb 2, 2021 5:14:24 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142571
Message:

FE/Qt: bugref:9871: Network Manager: IPv6 prefix support.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp

    r87544 r87545  
    19921992}
    19931993
     1994void UIMessageCenter::warnAboutNoIPv6PrefixSpecified(const QString &strName, QWidget *pParent /* = 0 */)
     1995{
     1996    alert(pParent, MessageType_Error,
     1997          tr("No IPv6 prefix specified for the NAT network <b>%1</b>.").arg(strName));
     1998}
     1999
    19942000void UIMessageCenter::warnAboutInvalidCIDRSpecified(const QString &strCIDR, const QString &strName, QWidget *pParent /* = 0 */)
    19952001{
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h

    r87544 r87545  
    412412    void warnAboutNameAlreadyBusy(const QString &strName, QWidget *pParent = 0);
    413413    void warnAboutNoIPv4PrefixSpecified(const QString &strName, QWidget *pParent = 0);
     414    void warnAboutNoIPv6PrefixSpecified(const QString &strName, QWidget *pParent = 0);
    414415    void warnAboutInvalidCIDRSpecified(const QString &strCIDR, const QString &strName, QWidget *pParent = 0);
    415416
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.cpp

    r87544 r87545  
    4848    , m_pLabelNetworkIPv4Prefix(0)
    4949    , m_pEditorNetworkIPv4Prefix(0)
     50    , m_pLabelNetworkIPv6Prefix(0)
     51    , m_pEditorNetworkIPv6Prefix(0)
    5052    , m_pLabelExtended(0)
    5153    , m_pCheckboxSupportsDHCP(0)
     
    102104        return false;
    103105    }
     106    /* Make sure IPv6 prefix isn't empty if IPv6 is supported: */
     107    if (m_newData.m_fSupportsIPv6 && m_newData.m_strPrefixIPv6.isEmpty())
     108    {
     109        msgCenter().warnAboutNoIPv4PrefixSpecified(m_newData.m_strName);
     110        return false;
     111    }
    104112
    105113    /* Validate 'Forwarding' tab content: */
     
    110118{
    111119//    if (m_oldData != m_newData)
    112 //        printf("Network: %d, %s, %s, %d, %d, %d\n",
     120//        printf("Network: %d, %s, %s, %s, %d, %d, %d\n",
    113121//               m_newData.m_fEnabled,
    114122//               m_newData.m_strName.toUtf8().constData(),
    115123//               m_newData.m_strPrefixIPv4.toUtf8().constData(),
     124//               m_newData.m_strPrefixIPv6.toUtf8().constData(),
    116125//               m_newData.m_fSupportsDHCP,
    117126//               m_newData.m_fSupportsIPv6,
     
    157166    if (m_pEditorNetworkIPv4Prefix)
    158167        m_pEditorNetworkIPv4Prefix->setToolTip(tr("Holds the IPv4 prefix for this network."));
     168    if (m_pLabelNetworkIPv6Prefix)
     169        m_pLabelNetworkIPv6Prefix->setText(tr("IPv&6 Prefix:"));
     170    if (m_pEditorNetworkIPv6Prefix)
     171        m_pEditorNetworkIPv6Prefix->setToolTip(tr("Holds the IPv6 prefix for this network."));
    159172    if (m_pLabelExtended)
    160173        m_pLabelExtended->setText(tr("Extended Features:"));
     
    228241}
    229242
     243void UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged(const QString &strText)
     244{
     245    m_newData.m_strPrefixIPv6 = strText;
     246    updateButtonStates();
     247}
     248
    230249void UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged(bool fChecked)
    231250{
     
    396415                }
    397416
     417                /* Prepare network IPv6 prefix label: */
     418                m_pLabelNetworkIPv6Prefix = new QLabel(pTabOptions);
     419                if (m_pLabelNetworkIPv6Prefix)
     420                {
     421                    m_pLabelNetworkIPv6Prefix->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
     422                    pLayoutSettings->addWidget(m_pLabelNetworkIPv6Prefix, 2, 0);
     423                }
     424                /* Prepare network IPv6 prefix editor: */
     425                m_pEditorNetworkIPv6Prefix = new QLineEdit(pTabOptions);
     426                if (m_pEditorNetworkIPv6Prefix)
     427                {
     428                    if (m_pLabelNetworkIPv6Prefix)
     429                        m_pLabelNetworkIPv6Prefix->setBuddy(m_pEditorNetworkIPv6Prefix);
     430                    connect(m_pEditorNetworkIPv6Prefix, &QLineEdit::textEdited,
     431                            this, &UIDetailsWidgetNATNetwork::sltNetworkIPv6PrefixChanged);
     432
     433                    pLayoutSettings->addWidget(m_pEditorNetworkIPv6Prefix, 2, 1, 1, 3);
     434                }
     435
    398436                /* Prepare extended label: */
    399437                m_pLabelExtended = new QLabel(pTabOptions);
     
    401439                {
    402440                    m_pLabelExtended->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    403                     pLayoutSettings->addWidget(m_pLabelExtended, 2, 0);
     441                    pLayoutSettings->addWidget(m_pLabelExtended, 3, 0);
    404442                }
    405443                /* Prepare 'supports DHCP' check-box: */
     
    409447                    connect(m_pCheckboxSupportsDHCP, &QCheckBox::toggled,
    410448                            this, &UIDetailsWidgetNATNetwork::sltSupportsDHCPChanged);
    411                     pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 2, 1, 1, 2);
     449                    pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 3, 1, 1, 2);
    412450                }
    413451                /* Prepare 'supports IPv6' check-box: */
     
    417455                    connect(m_pCheckboxSupportsIPv6, &QCheckBox::toggled,
    418456                            this, &UIDetailsWidgetNATNetwork::sltSupportsIPv6Changed);
    419                     pLayoutSettings->addWidget(m_pCheckboxSupportsIPv6, 3, 1, 1, 2);
     457                    pLayoutSettings->addWidget(m_pCheckboxSupportsIPv6, 4, 1, 1, 2);
    420458                }
    421459                /* Prepare 'advertise default IPv6 route' check-box: */
     
    425463                    connect(m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::toggled,
    426464                            this, &UIDetailsWidgetNATNetwork::sltAdvertiseDefaultIPv6RouteChanged);
    427                     pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 4, 1, 1, 2);
     465                    pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 5, 1, 1, 2);
    428466                }
    429467
     
    525563    m_pLabelNetworkIPv4Prefix->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
    526564    m_pEditorNetworkIPv4Prefix->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
     565    m_pLabelNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
     566    m_pEditorNetworkIPv6Prefix->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
    527567    m_pLabelExtended->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
    528568    m_pCheckboxSupportsDHCP->setEnabled(fIsNetworkExists && fIsNetworkEnabled);
     
    534574    m_pEditorNetworkName->setText(m_newData.m_strName);
    535575    m_pEditorNetworkIPv4Prefix->setText(m_newData.m_strPrefixIPv4);
     576    m_pEditorNetworkIPv6Prefix->setText(m_newData.m_strPrefixIPv6);
    536577    m_pCheckboxSupportsDHCP->setChecked(m_newData.m_fSupportsDHCP);
    537578    m_pCheckboxSupportsIPv6->setChecked(m_newData.m_fSupportsIPv6);
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UIDetailsWidgetNATNetwork.h

    r87544 r87545  
    5050        , m_strName(QString())
    5151        , m_strPrefixIPv4(QString())
     52        , m_strPrefixIPv6(QString())
    5253        , m_fSupportsDHCP(false)
    5354        , m_fSupportsIPv6(false)
     
    6364               && (m_strName == other.m_strName)
    6465               && (m_strPrefixIPv4 == other.m_strPrefixIPv4)
     66               && (m_strPrefixIPv6 == other.m_strPrefixIPv6)
    6567               && (m_fSupportsDHCP == other.m_fSupportsDHCP)
    6668               && (m_fSupportsIPv6 == other.m_fSupportsIPv6)
     
    8486    /** Holds network IPv4 prefix. */
    8587    QString                   m_strPrefixIPv4;
     88    /** Holds network IPv6 prefix. */
     89    QString                   m_strPrefixIPv6;
    8690    /** Holds whether this network supports DHCP. */
    8791    bool                      m_fSupportsDHCP;
     
    153157        /** Handles network IPv4 prefix text change. */
    154158        void sltNetworkIPv4PrefixChanged(const QString &strText);
     159        /** Handles network IPv6 prefix text change. */
     160        void sltNetworkIPv6PrefixChanged(const QString &strText);
    155161        /** Handles network supports DHCP choice change. */
    156162        void sltSupportsDHCPChanged(bool fChecked);
     
    219225        /** Holds the network IPv4 prefix editor instance. */
    220226        QLineEdit         *m_pEditorNetworkIPv4Prefix;
     227        /** Holds the network IPv6 prefix label instance. */
     228        QLabel            *m_pLabelNetworkIPv6Prefix;
     229        /** Holds the network IPv6 prefix editor instance. */
     230        QLineEdit         *m_pEditorNetworkIPv6Prefix;
    221231        /** Holds the extended label instance. */
    222232        QLabel            *m_pLabelExtended;
  • trunk/src/VBox/Frontends/VirtualBox/src/networkmanager/UINetworkManager.cpp

    r87544 r87545  
    245245    strToolTip += strHeader.arg(tr("Network Name"), m_strName);
    246246    strToolTip += strHeader.arg(tr("Network IPv4 Prefix"), m_strPrefixIPv4);
     247    strToolTip += strHeader.arg(tr("Network IPv6 Prefix"), m_strPrefixIPv6);
    247248    strToolTip += strHeader.arg(tr("Supports DHCP"), m_fSupportsDHCP ? tr("yes") : tr("no"));
    248249    strToolTip += strHeader.arg(tr("Supports IPv6"), m_fSupportsIPv6 ? tr("yes") : tr("no"));
     
    558559    oldData.m_strName = strNetworkName;
    559560    oldData.m_strPrefixIPv4 = "10.0.2.0/24";
     561    oldData.m_strPrefixIPv6 = ""; // do we need something here?
    560562    oldData.m_fSupportsDHCP = true;
    561563    oldData.m_fSupportsIPv6 = false;
     
    582584        if (comNetwork.isOk())
    583585            comNetwork.SetNetwork(oldData.m_strPrefixIPv4);
     586        /* Save NAT network IPv6 prefix: */
     587        if (comNetwork.isOk())
     588            comNetwork.SetIPv6Prefix(oldData.m_strPrefixIPv6);
    584589        /* Save whether NAT network needs DHCP server: */
    585590        if (comNetwork.isOk())
     
    11561161            if (comNetwork.isOk() && newData.m_strPrefixIPv4 != oldData.m_strPrefixIPv4)
    11571162                comNetwork.SetNetwork(newData.m_strPrefixIPv4);
     1163            /* Save NAT network IPv6: */
     1164            if (comNetwork.isOk() && newData.m_strPrefixIPv6 != oldData.m_strPrefixIPv6)
     1165                comNetwork.SetIPv6Prefix(newData.m_strPrefixIPv6);
    11581166            /* Save whether NAT network needs DHCP server: */
    11591167            if (comNetwork.isOk() && newData.m_fSupportsDHCP != oldData.m_fSupportsDHCP)
     
    16291637    if (comNetwork.isOk())
    16301638        data.m_strPrefixIPv4 = comNetwork.GetNetwork();
     1639    if (comNetwork.isOk())
     1640        data.m_strPrefixIPv6 = comNetwork.GetIPv6Prefix();
    16311641    if (comNetwork.isOk())
    16321642        data.m_fSupportsDHCP = comNetwork.GetNeedDhcpServer();
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