Changeset 33825 in vbox for trunk/src/VBox/Main/NATEngineImpl.cpp
- Timestamp:
- Nov 8, 2010 10:16:25 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 67471
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/NATEngineImpl.cpp
r33517 r33825 32 32 //////////////////////////////////////////////////////////////////////////////// 33 33 34 NATEngine::NATEngine():mParent(NULL) {}34 NATEngine::NATEngine():mParent(NULL), mAdapter(NULL){} 35 35 NATEngine::~NATEngine(){} 36 36 … … 40 40 } 41 41 42 HRESULT NATEngine::init(Machine *aParent )42 HRESULT NATEngine::init(Machine *aParent, INetworkAdapter *aAdapter) 43 43 { 44 44 AutoInitSpan autoInitSpan(this); … … 50 50 mData->mBindIP.setNull(); 51 51 unconst(mParent) = aParent; 52 return S_OK; 53 } 54 55 HRESULT NATEngine::init(Machine *aParent, NATEngine *aThat) 52 unconst(mAdapter) = aAdapter; 53 return S_OK; 54 } 55 56 HRESULT NATEngine::init(Machine *aParent, INetworkAdapter *aAdapter, NATEngine *aThat) 56 57 { 57 58 AutoInitSpan autoInitSpan(this); … … 72 73 } 73 74 unconst(mParent) = aParent; 75 unconst(mAdapter) = aAdapter; 74 76 unconst(mPeer) = aThat; 75 77 autoInitSpan.setSucceeded(); … … 77 79 } 78 80 79 HRESULT NATEngine::initCopy (Machine *aParent, NATEngine *aThat)81 HRESULT NATEngine::initCopy (Machine *aParent, INetworkAdapter *aAdapter, NATEngine *aThat) 80 82 { 81 83 AutoInitSpan autoInitSpan(this); … … 96 98 mNATRules.insert(std::make_pair(it->first, it->second)); 97 99 } 100 unconst(mAdapter) = aAdapter; 98 101 unconst(mParent) = aParent; 99 102 autoInitSpan.setSucceeded(); … … 265 268 Utf8Str name = aName; 266 269 settings::NATRule r; 270 const char *proto; 271 switch (aProto) 272 { 273 case NATProtocol_TCP: 274 proto = "tcp"; 275 break; 276 case NATProtocol_UDP: 277 proto = "udp"; 278 break; 279 default: 280 return E_INVALIDARG; 281 } 267 282 if (name.isEmpty()) 268 {269 const char *proto;270 switch (aProto)271 {272 case NATProtocol_TCP:273 proto = "tcp";274 break;275 case NATProtocol_UDP:276 proto = "udp";277 break;278 default:279 return E_INVALIDARG;280 }281 283 name = Utf8StrFmt("%s_%d_%d", proto, aHostPort, aGuestPort); 282 }283 284 r.strName = name.c_str(); 284 285 r.u32Proto = aProto; … … 290 291 mParent->setModified(Machine::IsModified_NetworkAdapters); 291 292 m_fModified = true; 293 alock.release(); 294 mParent->onNATRedirectRuleChange(mAdapter, FALSE, Bstr(name).raw(), aProto, Bstr(r.strHostIP).raw(), r.u16HostPort, Bstr(r.strGuestIP).raw(), r.u16GuestPort); 292 295 return S_OK; 293 296 } … … 300 303 301 304 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 302 Utf8Str rule;303 305 NATRuleMap::iterator it = mNATRules.find(aName); 304 306 if (it == mNATRules.end()) 305 307 return E_INVALIDARG; 306 308 mData.backup(); 309 settings::NATRule r = it->second; 310 Utf8Str strHostIP = r.strHostIP; 311 Utf8Str strGuestIP = r.strGuestIP; 312 NATProtocol_T proto = r.u32Proto; 313 uint16_t u16HostPort = r.u16HostPort; 314 uint16_t u16GuestPort = r.u16GuestPort; 315 307 316 mNATRules.erase(it); 308 317 mParent->setModified(Machine::IsModified_NetworkAdapters); 309 318 m_fModified = true; 319 alock.release(); 320 mParent->onNATRedirectRuleChange(mAdapter, TRUE, aName, proto, Bstr(strHostIP).raw(), u16HostPort, Bstr(strGuestIP).raw(), u16GuestPort); 310 321 return S_OK; 311 322 }
Note:
See TracChangeset
for help on using the changeset viewer.