src/lte/test/test-eps-tft-classifier.cc
changeset 8463 cc818aa536a5
parent 8406 ee763735b38f
equal deleted inserted replaced
8462:cf6a48994db5 8463:cc818aa536a5
    39 
    39 
    40 class EpsTftClassifierTestCase : public TestCase
    40 class EpsTftClassifierTestCase : public TestCase
    41 {
    41 {
    42 public:
    42 public:
    43   EpsTftClassifierTestCase (Ptr<EpsTftClassifier> c,
    43   EpsTftClassifierTestCase (Ptr<EpsTftClassifier> c,
    44                             LteTft::Direction d,
    44                             EpcTft::Direction d,
    45                             Ipv4Address sa, 
    45                             Ipv4Address sa, 
    46                             Ipv4Address da, 
    46                             Ipv4Address da, 
    47                             uint16_t sp,
    47                             uint16_t sp,
    48                             uint16_t dp,
    48                             uint16_t dp,
    49                             uint8_t tos,
    49                             uint8_t tos,
    51   virtual ~EpsTftClassifierTestCase ();
    51   virtual ~EpsTftClassifierTestCase ();
    52 
    52 
    53 private:
    53 private:
    54   
    54   
    55   Ptr<EpsTftClassifier> m_c;
    55   Ptr<EpsTftClassifier> m_c;
    56   LteTft::Direction m_d;
    56   EpcTft::Direction m_d;
    57   uint8_t m_tftId;
    57   uint8_t m_tftId;
    58   Ipv4Header m_ipHeader;
    58   Ipv4Header m_ipHeader;
    59   UdpHeader m_udpHeader;
    59   UdpHeader m_udpHeader;
    60   TcpHeader m_tcpHeader;
    60   TcpHeader m_tcpHeader;
    61 
    61 
    62   static std::string BuildNameString (Ptr<EpsTftClassifier> c,
    62   static std::string BuildNameString (Ptr<EpsTftClassifier> c,
    63                                       LteTft::Direction d,
    63                                       EpcTft::Direction d,
    64                                       Ipv4Address sa, 
    64                                       Ipv4Address sa, 
    65                                       Ipv4Address da, 
    65                                       Ipv4Address da, 
    66                                       uint16_t sp,
    66                                       uint16_t sp,
    67                                       uint16_t dp,
    67                                       uint16_t dp,
    68                                       uint8_t tos,
    68                                       uint8_t tos,
    69                                       uint32_t tftId);
    69                                       uint32_t tftId);
    70   virtual void DoRun (void);
    70   virtual void DoRun (void);
    71 };
    71 };
    72 
    72 
    73 EpsTftClassifierTestCase::EpsTftClassifierTestCase (Ptr<EpsTftClassifier> c,
    73 EpsTftClassifierTestCase::EpsTftClassifierTestCase (Ptr<EpsTftClassifier> c,
    74                                                     LteTft::Direction d,
    74                                                     EpcTft::Direction d,
    75                                                     Ipv4Address sa, 
    75                                                     Ipv4Address sa, 
    76                                                     Ipv4Address da, 
    76                                                     Ipv4Address da, 
    77                                                     uint16_t sp,
    77                                                     uint16_t sp,
    78                                                     uint16_t dp,
    78                                                     uint16_t dp,
    79                                                     uint8_t tos,
    79                                                     uint8_t tos,
    97 {
    97 {
    98 }
    98 }
    99 
    99 
   100 std::string
   100 std::string
   101 EpsTftClassifierTestCase::BuildNameString (Ptr<EpsTftClassifier> c,
   101 EpsTftClassifierTestCase::BuildNameString (Ptr<EpsTftClassifier> c,
   102                                            LteTft::Direction d,
   102                                            EpcTft::Direction d,
   103                                            Ipv4Address sa, 
   103                                            Ipv4Address sa, 
   104                                            Ipv4Address da, 
   104                                            Ipv4Address da, 
   105                                            uint16_t sp,
   105                                            uint16_t sp,
   106                                            uint16_t dp,
   106                                            uint16_t dp,
   107                                            uint8_t tos,
   107                                            uint8_t tos,
   156 
   156 
   157   
   157   
   158   Ptr<EpsTftClassifier> c1 = Create<EpsTftClassifier> ();
   158   Ptr<EpsTftClassifier> c1 = Create<EpsTftClassifier> ();
   159   
   159   
   160 
   160 
   161   Ptr<LteTft> tft1_1 = Create<LteTft> ();
   161   Ptr<EpcTft> tft1_1 = Create<EpcTft> ();
   162 
   162 
   163   LteTft::PacketFilter pf1_1_1;
   163   EpcTft::PacketFilter pf1_1_1;
   164   pf1_1_1.remoteAddress.Set ("1.0.0.0");
   164   pf1_1_1.remoteAddress.Set ("1.0.0.0");
   165   pf1_1_1.localAddress.Set ("2.0.0.0");
   165   pf1_1_1.localAddress.Set ("2.0.0.0");
   166   pf1_1_1.remoteMask.Set (0xFF000000);
   166   pf1_1_1.remoteMask.Set (0xFF000000);
   167   pf1_1_1.localMask.Set (0xFF000000);
   167   pf1_1_1.localMask.Set (0xFF000000);
   168   tft1_1->Add (pf1_1_1);
   168   tft1_1->Add (pf1_1_1);
   169 
   169 
   170   LteTft::PacketFilter pf1_1_2;
   170   EpcTft::PacketFilter pf1_1_2;
   171   pf1_1_2.remoteAddress.Set ("3.3.3.0");
   171   pf1_1_2.remoteAddress.Set ("3.3.3.0");
   172   pf1_1_2.localAddress.Set ("4.4.4.0");
   172   pf1_1_2.localAddress.Set ("4.4.4.0");
   173   pf1_1_2.remoteMask.Set (0xFFFFFF00);
   173   pf1_1_2.remoteMask.Set (0xFFFFFF00);
   174   pf1_1_2.localMask.Set (0xFFFFFF00);
   174   pf1_1_2.localMask.Set (0xFFFFFF00);
   175   tft1_1->Add (pf1_1_2);
   175   tft1_1->Add (pf1_1_2);
   176 
   176 
   177   c1->Add (tft1_1, 1);
   177   c1->Add (tft1_1, 1);
   178 
   178 
   179 
   179 
   180 
   180 
   181   Ptr<LteTft> tft1_2 = Create<LteTft> ();
   181   Ptr<EpcTft> tft1_2 = Create<EpcTft> ();
   182 
   182 
   183   LteTft::PacketFilter pf1_2_1;
   183   EpcTft::PacketFilter pf1_2_1;
   184   pf1_2_1.remotePortStart = 1024;
   184   pf1_2_1.remotePortStart = 1024;
   185   pf1_2_1.remotePortEnd   = 1035;
   185   pf1_2_1.remotePortEnd   = 1035;
   186   tft1_2->Add (pf1_2_1);
   186   tft1_2->Add (pf1_2_1);
   187 
   187 
   188   LteTft::PacketFilter pf1_2_2;
   188   EpcTft::PacketFilter pf1_2_2;
   189   pf1_2_2.localPortStart = 3456;
   189   pf1_2_2.localPortStart = 3456;
   190   pf1_2_2.localPortEnd   = 3489;
   190   pf1_2_2.localPortEnd   = 3489;
   191   tft1_2->Add (pf1_2_2);
   191   tft1_2->Add (pf1_2_2);
   192 
   192 
   193 
   193 
   194   LteTft::PacketFilter pf1_2_3;
   194   EpcTft::PacketFilter pf1_2_3;
   195   pf1_2_3.localPortStart = 7895;
   195   pf1_2_3.localPortStart = 7895;
   196   pf1_2_3.localPortEnd   = 7895;
   196   pf1_2_3.localPortEnd   = 7895;
   197   tft1_2->Add (pf1_2_3);
   197   tft1_2->Add (pf1_2_3);
   198 
   198 
   199 
   199 
   200   LteTft::PacketFilter pf1_2_4;
   200   EpcTft::PacketFilter pf1_2_4;
   201   pf1_2_4.remotePortStart = 5897;
   201   pf1_2_4.remotePortStart = 5897;
   202   pf1_2_4.remotePortEnd   = 5897;
   202   pf1_2_4.remotePortEnd   = 5897;
   203   tft1_2->Add (pf1_2_4);
   203   tft1_2->Add (pf1_2_4);
   204 
   204 
   205 
   205 
   206   c1->Add (tft1_2, 2);
   206   c1->Add (tft1_2, 2);
   207 
   207 
   208   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   208   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   209 
   209 
   210   // test IP addresses
   210   // test IP addresses
   211   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   211   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   212   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    1));
   212   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    1));
   213   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    0));
   213   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    0));
   214   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   214   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   215   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    0));
   215   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    0));
   216   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    0));
   216   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    0));
   217 
   217 
   218   // test remote port
   218   // test remote port
   219   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    2));
   219   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    2));
   220   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    2));
   220   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    2));
   221   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    2));
   221   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    2));
   222   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    0));
   222   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    0));
   223   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    0));
   223   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    0));
   224   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    0));
   224   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    0));
   225   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    0));
   225   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    0));
   226 
   226 
   227   // test local port
   227   // test local port
   228   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    0));
   228   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    0));
   229   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    0));
   229   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    0));
   230   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    0));
   230   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    0));
   231   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    2));
   231   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    2));
   232   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    2));
   232   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    2));
   233   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    2));
   233   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    2));
   234   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     7895,     0,    2));
   234   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     7895,     0,    2));
   235   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  7895,       10,     0,    2));
   235   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  7895,       10,     0,    2));
   236   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     5897,     0,    2));
   236   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     5897,     0,    2));
   237   AddTestCase (new EpsTftClassifierTestCase (c1, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  5897,       10,     0,    2));
   237   AddTestCase (new EpsTftClassifierTestCase (c1, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  5897,       10,     0,    2));
   238 
   238 
   239 
   239 
   240   ///////////////////////////
   240   ///////////////////////////
   241   // check default TFT 
   241   // check default TFT 
   242   ///////////////////////////
   242   ///////////////////////////
   243 
   243 
   244   Ptr<EpsTftClassifier> c2 = Create<EpsTftClassifier> ();
   244   Ptr<EpsTftClassifier> c2 = Create<EpsTftClassifier> ();
   245   c2->Add (LteTft::Default (), 1);
   245   c2->Add (EpcTft::Default (), 1);
   246 
   246 
   247   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   247   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   248 
   248 
   249   // test IP addresses
   249   // test IP addresses
   250   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   250   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   251   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    1));
   251   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    1));
   252   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   252   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   253   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   253   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   254   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   254   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   255   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    1));
   255   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    1));
   256 
   256 
   257   // test remote port
   257   // test remote port
   258   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   258   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   259   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   259   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   260   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   260   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   261   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    1));
   261   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    1));
   262   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   262   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   263   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   263   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   264   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   264   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   265 
   265 
   266   // test local port
   266   // test local port
   267   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    1));
   267   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    1));
   268   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    1));
   268   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    1));
   269   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    1));
   269   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    1));
   270   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    1));
   270   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    1));
   271   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    1));
   271   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    1));
   272   AddTestCase (new EpsTftClassifierTestCase (c2, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    1));
   272   AddTestCase (new EpsTftClassifierTestCase (c2, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    1));
   273 
   273 
   274   
   274   
   275 
   275 
   276   ///////////////////////////////////////////
   276   ///////////////////////////////////////////
   277   // check default TFT plus dedicated ones
   277   // check default TFT plus dedicated ones
   278   ///////////////////////////////////////////
   278   ///////////////////////////////////////////
   279 
   279 
   280   Ptr<EpsTftClassifier> c3 = Create<EpsTftClassifier> ();
   280   Ptr<EpsTftClassifier> c3 = Create<EpsTftClassifier> ();
   281   c3->Add (LteTft::Default (), 1);
   281   c3->Add (EpcTft::Default (), 1);
   282   c3->Add (tft1_1, 2);
   282   c3->Add (tft1_1, 2);
   283   c3->Add (tft1_2, 3);
   283   c3->Add (tft1_2, 3);
   284 
   284 
   285   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   285   // ------------------------------------classifier---direction--------------src address---------------dst address---src port--dst port--ToS--TFT id
   286 
   286 
   287   // test IP addresses
   287   // test IP addresses
   288   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    2));
   288   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    2));
   289   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    2));
   289   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("2.2.3.4"), Ipv4Address ("1.0.0.0"),     2,      123,     5,    2));
   290   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   290   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("6.2.3.4"), Ipv4Address ("1.1.1.1"),     4,     1234,     0,    1));
   291   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    2));
   291   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    2));
   292   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   292   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("3.3.4.4"), Ipv4Address ("4.4.4.1"),     4,     1234,     0,    1));
   293   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    1));
   293   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("3.3.3.4"), Ipv4Address ("4.4.2.1"),     4,     1234,     0,    1));
   294 
   294 
   295   // test remote port
   295   // test remote port
   296   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    3));
   296   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    3));
   297   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    3));
   297   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    3));
   298   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    3));
   298   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    3));
   299   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    1));
   299   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1234,     0,    1));
   300   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   300   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1024,     0,    1));
   301   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   301   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1025,     0,    1));
   302   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   302   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     1035,     0,    1));
   303 
   303 
   304   // test local port
   304   // test local port
   305   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    1));
   305   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3456,     0,    1));
   306   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    1));
   306   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3457,     0,    1));
   307   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    1));
   307   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     4,     3489,     0,    1));
   308   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    3));
   308   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3456,        6,     0,    3));
   309   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    3));
   309   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  3461,     3461,     0,    3));
   310   AddTestCase (new EpsTftClassifierTestCase (c3, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    3));
   310   AddTestCase (new EpsTftClassifierTestCase (c3, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    3));
   311 
   311 
   312 
   312 
   313 
   313 
   314   ///////////////////////////////////////////
   314   ///////////////////////////////////////////
   315   // check two TFTs with different ports
   315   // check two TFTs with different ports
   316   ///////////////////////////////////////////
   316   ///////////////////////////////////////////
   317 
   317 
   318   Ptr<EpsTftClassifier> c4 = Create<EpsTftClassifier> ();
   318   Ptr<EpsTftClassifier> c4 = Create<EpsTftClassifier> ();
   319   Ptr<LteTft> tft4_1 = Create<LteTft> ();
   319   Ptr<EpcTft> tft4_1 = Create<EpcTft> ();
   320   tft4_1->Add (pf1_2_3);  
   320   tft4_1->Add (pf1_2_3);  
   321   c4->Add (tft4_1, 1);
   321   c4->Add (tft4_1, 1);
   322   Ptr<LteTft> tft4_2 = Create<LteTft> ();
   322   Ptr<EpcTft> tft4_2 = Create<EpcTft> ();
   323   tft4_2->Add (pf1_2_4);
   323   tft4_2->Add (pf1_2_4);
   324   c4->Add (tft4_2, 2);
   324   c4->Add (tft4_2, 2);
   325   AddTestCase (new EpsTftClassifierTestCase (c4, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    0));
   325   AddTestCase (new EpsTftClassifierTestCase (c4, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     3489,     0,    0));
   326   AddTestCase (new EpsTftClassifierTestCase (c4, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     7895,     0,    1));
   326   AddTestCase (new EpsTftClassifierTestCase (c4, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     7895,     0,    1));
   327   AddTestCase (new EpsTftClassifierTestCase (c4, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  7895,       10,     0,    1));
   327   AddTestCase (new EpsTftClassifierTestCase (c4, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  7895,       10,     0,    1));
   328   AddTestCase (new EpsTftClassifierTestCase (c4, LteTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     5897,     0,    2));
   328   AddTestCase (new EpsTftClassifierTestCase (c4, EpcTft::UPLINK,   Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),     9,     5897,     0,    2));
   329   AddTestCase (new EpsTftClassifierTestCase (c4, LteTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  5897,       10,     0,    2));
   329   AddTestCase (new EpsTftClassifierTestCase (c4, EpcTft::DOWNLINK, Ipv4Address ("9.1.1.1"), Ipv4Address ("8.1.1.1"),  5897,       10,     0,    2));
   330 
   330 
   331 }
   331 }
   332 
   332 
   333 
   333 
   334 } // namespace ns3
   334 } // namespace ns3