VirtualBox

Changeset 45117 in vbox for trunk/include


Ignore:
Timestamp:
Mar 21, 2013 8:16:22 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
84411
Message:

Main/NATNetwork API (xTracker/5894).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/settings.h

    r44948 r45117  
    155155
    156156/**
     157 *
     158 */
     159 struct NATRule
     160 {
     161     NATRule()
     162         : proto(NATProtocol_TCP),
     163           u16HostPort(0),
     164           u16GuestPort(0)
     165     {}
     166
     167     bool operator==(const NATRule &r) const
     168     {
     169         return strName == r.strName
     170             && proto == r.proto
     171             && u16HostPort == r.u16HostPort
     172             && strHostIP == r.strHostIP
     173             && u16GuestPort == r.u16GuestPort
     174             && strGuestIP == r.strGuestIP;
     175     }
     176
     177     com::Utf8Str            strName;
     178     NATProtocol_T           proto;
     179     uint16_t                u16HostPort;
     180     com::Utf8Str            strHostIP;
     181     uint16_t                u16GuestPort;
     182     com::Utf8Str            strGuestIP;
     183 };
     184 typedef std::list<NATRule> NATRuleList;
     185
     186/**
    157187 * Common base class for both MainConfigFile and MachineConfigFile
    158188 * which contains some common logic for both.
     
    187217    void readMedium(MediaType t, const xml::ElementNode &elmMedium, MediaList &llMedia);
    188218    void readMediaRegistry(const xml::ElementNode &elmMediaRegistry, MediaRegistry &mr);
     219    void readNATForwardRuleList(const xml::ElementNode  &elmParent, NATRuleList &llRules);
    189220
    190221    void setVersionAttribute(xml::ElementNode &elm);
     
    201232    void buildMediaRegistry(xml::ElementNode &elmParent,
    202233                            const MediaRegistry &mr);
     234    void buildNATForwardRuleList(xml::ElementNode &elmParent, const NATRuleList &natRuleList);
    203235    void clearDocument();
    204236
     
    260292typedef std::list<DHCPServer> DHCPServersList;
    261293
     294
     295/**
     296 * Nat Networking settings (NAT service).
     297 */
     298struct NATNetwork
     299{
     300    com::Utf8Str strNetworkName;
     301    bool         fEnabled;
     302    com::Utf8Str strNetwork;
     303    bool         fIPv6;
     304    com::Utf8Str strIPv6Prefix;
     305    bool         fAdvertiseDefaultIPv6Route;
     306    bool         fNeedDhcpServer;
     307    NATRuleList  llPortForwardRules4;
     308    NATRuleList  llPortForwardRules6;
     309    NATNetwork():fEnabled(false),
     310      fAdvertiseDefaultIPv6Route(false),
     311      fNeedDhcpServer(false)
     312      {}
     313    bool operator==(const NATNetwork &n) const
     314    {
     315        return    strNetworkName == n.strNetworkName
     316               && strNetwork == n.strNetwork;
     317    }
     318     
     319};
     320typedef std::list<NATNetwork> NATNetworksList;
     321
    262322class MainConfigFile : public ConfigFileBase
    263323{
     
    267327    void readMachineRegistry(const xml::ElementNode &elmMachineRegistry);
    268328    void readDHCPServers(const xml::ElementNode &elmDHCPServers);
     329    void readNATNetworks(const xml::ElementNode &elmNATNetworks);
    269330
    270331    void write(const com::Utf8Str strFilename);
     
    275336    MachinesRegistry        llMachines;
    276337    DHCPServersList         llDhcpServers;
     338    NATNetworksList         llNATNetworks;
    277339    StringsMap              mapExtraDataItems;
    278340};
     
    360422    USBDeviceFiltersList    llDeviceFilters;
    361423};
    362 
    363  struct NATRule
    364  {
    365      NATRule()
    366          : proto(NATProtocol_TCP),
    367            u16HostPort(0),
    368            u16GuestPort(0)
    369      {}
    370 
    371      bool operator==(const NATRule &r) const
    372      {
    373          return strName == r.strName
    374              && proto == r.proto
    375              && u16HostPort == r.u16HostPort
    376              && strHostIP == r.strHostIP
    377              && u16GuestPort == r.u16GuestPort
    378              && strGuestIP == r.strGuestIP;
    379      }
    380 
    381      com::Utf8Str            strName;
    382      NATProtocol_T           proto;
    383      uint16_t                u16HostPort;
    384      com::Utf8Str            strHostIP;
    385      uint16_t                u16GuestPort;
    386      com::Utf8Str            strGuestIP;
    387  };
    388  typedef std::list<NATRule> NATRuleList;
    389424
    390425 struct NAT
     
    443478     NATRuleList             llRules;
    444479 };
     480
    445481/**
    446482 * NOTE: If you add any fields in here, you must update a) the constructor and b)
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