• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "rtc_base/nat_types.h"
12 
13 #include "rtc_base/checks.h"
14 
15 namespace rtc {
16 
17 class SymmetricNAT : public NAT {
18  public:
IsSymmetric()19   bool IsSymmetric() override { return true; }
FiltersIP()20   bool FiltersIP() override { return true; }
FiltersPort()21   bool FiltersPort() override { return true; }
22 };
23 
24 class OpenConeNAT : public NAT {
25  public:
IsSymmetric()26   bool IsSymmetric() override { return false; }
FiltersIP()27   bool FiltersIP() override { return false; }
FiltersPort()28   bool FiltersPort() override { return false; }
29 };
30 
31 class AddressRestrictedNAT : public NAT {
32  public:
IsSymmetric()33   bool IsSymmetric() override { return false; }
FiltersIP()34   bool FiltersIP() override { return true; }
FiltersPort()35   bool FiltersPort() override { return false; }
36 };
37 
38 class PortRestrictedNAT : public NAT {
39  public:
IsSymmetric()40   bool IsSymmetric() override { return false; }
FiltersIP()41   bool FiltersIP() override { return true; }
FiltersPort()42   bool FiltersPort() override { return true; }
43 };
44 
Create(NATType type)45 NAT* NAT::Create(NATType type) {
46   switch (type) {
47     case NAT_OPEN_CONE:
48       return new OpenConeNAT();
49     case NAT_ADDR_RESTRICTED:
50       return new AddressRestrictedNAT();
51     case NAT_PORT_RESTRICTED:
52       return new PortRestrictedNAT();
53     case NAT_SYMMETRIC:
54       return new SymmetricNAT();
55     default:
56       RTC_DCHECK_NOTREACHED();
57       return 0;
58   }
59 }
60 
61 }  // namespace rtc
62