Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
gtp_matches.h
1 #ifndef GTP_MATCHES_H
2 #define GTP_MATCHES_H 1
3 
4 #include <rofl/common/openflow/coxmatch.h>
5 
6 namespace rofl {
7 namespace openflow {
8 namespace experimental {
9 namespace gtp {
10 
11 static uint16_t const OFPXMC_EXPERIMENTER = 0xffff;
12 
13 /* OXM Flow match field types for OpenFlow Experimental */
14 enum oxm_ofx_match_fields {
15  /* GTP related extensions */
16  OFPXMT_OFX_GTP_MSGTYPE = 25, /* GTP message type */
17  OFPXMT_OFX_GTP_TEID = 26, /* GTP tunnel endpoint identifier */
18 };
19 
20 /* OXM Flow match field types for OpenFlow basic class. */
21 enum oxm_tlv_match_fields {
22  OXM_TLV_EXPR_GTP_MSGTYPE = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_GTP_MSGTYPE << 9) | 1,
23  OXM_TLV_EXPR_GTP_MSGTYPE_MASK = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_GTP_MSGTYPE << 9) | 2 | HAS_MASK_FLAG,
24  OXM_TLV_EXPR_GTP_TEID = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_GTP_TEID << 9) | 4,
25  OXM_TLV_EXPR_GTP_TEID_MASK = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_GTP_TEID << 9) | 8 | HAS_MASK_FLAG,
26 };
27 
28 
33 public:
35  uint32_t teid) :
36  coxmatch(OXM_TLV_EXPR_GTP_TEID, teid) {};
38  uint32_t teid, uint32_t mask) :
39  coxmatch(OXM_TLV_EXPR_GTP_TEID_MASK, teid, mask) {};
41  coxmatch const& oxm) :
42  coxmatch(oxm) {};
43  virtual
45  friend std::ostream&
46  operator<< (std::ostream& os, coxmatch_ofx_gtp_teid const& oxm) {
47  os << dynamic_cast<coxmatch const&>(oxm);
48  os << indent(2) << "<gtp-teid: "
49  << (int)oxm.get_u32value() << "/" << (int)oxm.get_u32mask()
50  << " >" << std::endl;
51  return os;
52  };
53 };
54 
55 
60 public:
62  uint8_t msg_type) :
63  coxmatch(OXM_TLV_EXPR_GTP_MSGTYPE, msg_type) {};
65  uint8_t msg_type, uint8_t mask) :
66  coxmatch(OXM_TLV_EXPR_GTP_MSGTYPE_MASK, msg_type, mask) {};
68  coxmatch const& oxm) :
69  coxmatch(oxm) {};
70  virtual
72  friend std::ostream&
73  operator<< (std::ostream& os, coxmatch_ofx_gtp_msg_type const& oxm) {
74  os << dynamic_cast<coxmatch const&>(oxm);
75  os << indent(2) << "<gtp-msg-type: "
76  << (int)oxm.get_u8value()
77  << " >" << std::endl;
78  return os;
79  };
80 };
81 
82 }; // end of namespace gtp
83 }; // end of namespace experimental
84 }; // end of namespace openflow
85 }; // end of namespace rofl
86 
87 #endif
Definition: coxmatch.h:49
Definition: logging.h:76