Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
capwap_matches.h
1 #ifndef CAPWAP_MATCHES_H
2 #define CAPWAP_MATCHES_H
3 
4 #include "../../coxmatch.h"
5 
6 namespace rofl {
7 namespace openflow {
8 namespace experimental {
9 namespace capwap {
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  /* CAPWAP related extensions */
16  OFPXMT_OFX_CAPWAP_WBID = 27,
17  OFPXMT_OFX_CAPWAP_RID = 28,
18  OFPXMT_OFX_CAPWAP_FLAGS = 29,
19 };
20 
21 /* OXM Flow match field types for OpenFlow basic class. */
22 enum oxm_tlv_match_fields {
23  OXM_TLV_EXPR_CAPWAP_WBID = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_WBID << 9) | 1,
24  OXM_TLV_EXPR_CAPWAP_WBID_MASK = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_WBID << 9) | 2 | HAS_MASK_FLAG,
25  OXM_TLV_EXPR_CAPWAP_RID = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_RID << 9) | 1,
26  OXM_TLV_EXPR_CAPWAP_RID_MASK = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_RID << 9) | 2 | HAS_MASK_FLAG,
27  OXM_TLV_EXPR_CAPWAP_FLAGS = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_FLAGS << 9) | 2,
28  OXM_TLV_EXPR_CAPWAP_FLAGS_MASK = (OFPXMC_EXPERIMENTER << 16) | (OFPXMT_OFX_CAPWAP_FLAGS << 9) | 4 | HAS_MASK_FLAG,
29 };
30 
31 
36 public:
38  uint8_t wbid) :
39  coxmatch(OXM_TLV_EXPR_CAPWAP_WBID, wbid) {};
41  uint8_t wbid, uint8_t mask) :
42  coxmatch(OXM_TLV_EXPR_CAPWAP_WBID_MASK, wbid, mask) {};
44  coxmatch const& oxm) :
45  coxmatch(oxm) {};
46  virtual
48  friend std::ostream&
49  operator<< (std::ostream& os, coxmatch_ofx_capwap_wbid const& oxm) {
50  os << dynamic_cast<coxmatch const&>(oxm);
51  os << indent(2) << "<capwap-wbid: 0x" << std::hex
52  << (int)oxm.get_u8value() << "/0x" << (int)oxm.get_u8mask()
53  << std::dec << " >" << std::endl;
54  return os;
55  };
56 };
57 
58 
59 
64 public:
66  uint8_t rid) :
67  coxmatch(OXM_TLV_EXPR_CAPWAP_RID, rid) {};
69  uint8_t rid, uint8_t mask) :
70  coxmatch(OXM_TLV_EXPR_CAPWAP_RID_MASK, rid, mask) {};
72  coxmatch const& oxm) :
73  coxmatch(oxm) {};
74  virtual
76  friend std::ostream&
77  operator<< (std::ostream& os, coxmatch_ofx_capwap_rid const& oxm) {
78  os << dynamic_cast<coxmatch const&>(oxm);
79  os << indent(2) << "<capwap-rid: 0x" << std::hex
80  << (int)oxm.get_u8value() << "/0x" << (int)oxm.get_u8mask()
81  << std::dec << " >" << std::endl;
82  return os;
83  };
84 };
85 
86 
87 
92 public:
94  uint16_t flags) :
95  coxmatch(OXM_TLV_EXPR_CAPWAP_FLAGS, flags) {};
97  uint16_t flags, uint16_t mask) :
98  coxmatch(OXM_TLV_EXPR_CAPWAP_FLAGS_MASK, flags, mask) {};
100  coxmatch const& oxm) :
101  coxmatch(oxm) {};
102  virtual
104  friend std::ostream&
105  operator<< (std::ostream& os, coxmatch_ofx_capwap_flags const& oxm) {
106  os << dynamic_cast<coxmatch const&>(oxm);
107  os << indent(2) << "<capwap-flags: 0x" << std::hex
108  << (int)oxm.get_u16value() << "/0x" << (int)oxm.get_u16mask()
109  << std::dec << " >" << std::endl;
110  return os;
111  };
112 };
113 
114 }; // end of namespace capwap
115 }; // end of namespace experimental
116 }; // end of namespace openflow
117 }; // end of namespace rofl
118 
119 #endif
Definition: coxmatch.h:49
Definition: logging.h:76