A Discrete-Event Network Simulator
API
ipcs-classifier-record.h
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2007,2008, 2009 INRIA, UDcast
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
19 *
20 */
21
22#ifndef IPCS_CLASSIFIER_RECORD_H
23#define IPCS_CLASSIFIER_RECORD_H
24
25#include <stdint.h>
26#include "ns3/ipv4-address.h"
27#include "wimax-tlv.h"
28
29namespace ns3 {
30
36{
37public:
54 IpcsClassifierRecord (Ipv4Address srcAddress, Ipv4Mask srcMask,
55 Ipv4Address dstAddress, Ipv4Mask dstMask,
56 uint16_t srcPortLow, uint16_t srcPortHigh,
57 uint16_t dstPortLow, uint16_t dstPortHigh,
58 uint8_t protocol,
59 uint8_t priority);
69 Tlv ToTlv (void) const;
75 void AddSrcAddr (Ipv4Address srcAddress, Ipv4Mask srcMask);
81 void AddDstAddr (Ipv4Address dstAddress, Ipv4Mask dstMask);
87 void AddSrcPortRange ( uint16_t srcPortLow, uint16_t srcPortHigh);
93 void AddDstPortRange ( uint16_t dstPortLow, uint16_t dstPortHigh);
98 void AddProtocol (uint8_t proto);
103 void SetPriority (uint8_t prio);
108 void SetIndex (uint16_t index);
118 bool CheckMatch (Ipv4Address srcAddress, Ipv4Address dstAddress,
119 uint16_t srcPort, uint16_t dstPort,
120 uint8_t proto) const;
124 uint16_t GetCid (void) const;
128 uint8_t GetPriority (void) const;
132 uint16_t GetIndex (void) const;
137 void SetCid (uint16_t cid);
138
139
140private:
146 bool CheckMatchSrcAddr (Ipv4Address srcAddress) const;
152 bool CheckMatchDstAddr (Ipv4Address dstAddress) const;
158 bool CheckMatchSrcPort (uint16_t srcPort) const;
164 bool CheckMatchDstPort (uint16_t dstPort) const;
170 bool CheckMatchProtocol (uint8_t proto) const;
173 {
174 uint16_t PortLow;
175 uint16_t PortHigh;
176 };
178 struct ipv4Addr
179 {
182 };
183
184 uint8_t m_priority;
185 uint16_t m_index;
186 uint8_t m_tosLow;
187 uint8_t m_tosHigh;
188 uint8_t m_tosMask;
189 std::vector<uint8_t> m_protocol;
190 std::vector<struct ipv4Addr> m_srcAddr;
191 std::vector<struct ipv4Addr> m_dstAddr;
192 std::vector<struct PortRange> m_srcPortRange;
193 std::vector<struct PortRange> m_dstPortRange;
194
195 uint16_t m_cid;
196};
197} // namespace ns3
198
199#endif /* IPCS_CLASSIFIER_RECORD_H */
IpcsClassifierRecord class.
void SetPriority(uint8_t prio)
Set the priority of this classifier.
bool CheckMatchSrcAddr(Ipv4Address srcAddress) const
Check match source address function.
bool CheckMatchProtocol(uint8_t proto) const
Check match protocol function.
std::vector< struct PortRange > m_dstPortRange
destination port range
Tlv ToTlv(void) const
Creates a TLV from this classifier.
void SetIndex(uint16_t index)
Set the index of the classifier.
void AddDstAddr(Ipv4Address dstAddress, Ipv4Mask dstMask)
add a new destination ip address to the classifier
std::vector< struct PortRange > m_srcPortRange
surce port range
bool CheckMatchSrcPort(uint16_t srcPort) const
Check match source port function.
std::vector< struct ipv4Addr > m_srcAddr
source address
void AddSrcPortRange(uint16_t srcPortLow, uint16_t srcPortHigh)
add a range of source port to the classifier
std::vector< struct ipv4Addr > m_dstAddr
destination address
bool CheckMatchDstAddr(Ipv4Address dstAddress) const
Check match destination address function.
bool CheckMatch(Ipv4Address srcAddress, Ipv4Address dstAddress, uint16_t srcPort, uint16_t dstPort, uint8_t proto) const
check if a packets can be used with this classifier
void SetCid(uint16_t cid)
Set the cid associated to this classifier.
void AddDstPortRange(uint16_t dstPortLow, uint16_t dstPortHigh)
add a range of destination port to the classifier
std::vector< uint8_t > m_protocol
protocol
void AddSrcAddr(Ipv4Address srcAddress, Ipv4Mask srcMask)
add a new source ip address to the classifier
void AddProtocol(uint8_t proto)
add a protocol to the classifier
bool CheckMatchDstPort(uint16_t dstPort) const
Check match destination port function.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:256
This class implements the Type-Len-Value structure channel encodings as described by "IEEE Standard f...
Definition: wimax-tlv.h:84
Every class exported by the ns3 library is enclosed in the ns3 namespace.