Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
coxmatch_output.h
1 /*
2  * coxmatch_output.h
3  *
4  * Created on: 20.08.2014
5  * Author: andreas
6  */
7 
8 #ifndef COXMATCH_OUTPUT_H_
9 #define COXMATCH_OUTPUT_H_
10 
11 #include "rofl.h"
12 #include "rofl/common/openflow/coxmatch.h"
13 
14 #ifdef ROFL_EXPERIMENTAL
15  #include "rofl/common/openflow/experimental/matches/gre_matches.h"
16  #include "rofl/common/openflow/experimental/matches/gtp_matches.h"
17  #include "rofl/common/openflow/experimental/matches/pppoe_matches.h"
18 #endif
19 
20 
21 namespace rofl {
22 namespace openflow {
23 
24 
26  coxmatch oxm;
27 public:
28  coxmatch_output(coxmatch const& oxm) : oxm(oxm) {};
29 
30  friend std::ostream&
31  operator<<(std::ostream& os, coxmatch_output const& oxm_output) {
32  coxmatch const& oxm = oxm_output.oxm;
33  switch (oxm.get_oxm_class()) {
34  case openflow::OFPXMC_OPENFLOW_BASIC: {
35  switch (oxm.get_oxm_field()) {
36  case openflow::OFPXMT_OFB_IN_PORT:
37  os << coxmatch_ofb_in_port(oxm); return os;
38  case openflow::OFPXMT_OFB_IN_PHY_PORT:
39  os << coxmatch_ofb_in_phy_port(oxm); return os;
40  case openflow::OFPXMT_OFB_METADATA:
41  os << coxmatch_ofb_metadata(oxm); return os;
42  case openflow::OFPXMT_OFB_ETH_DST:
43  os << coxmatch_ofb_eth_dst(oxm); return os;
44  case openflow::OFPXMT_OFB_ETH_SRC:
45  os << coxmatch_ofb_eth_src(oxm); return os;
46  case openflow::OFPXMT_OFB_ETH_TYPE:
47  os << coxmatch_ofb_eth_type(oxm); return os;
48  case openflow::OFPXMT_OFB_VLAN_VID:
49  os << coxmatch_ofb_vlan_vid(oxm); return os;
50  case openflow::OFPXMT_OFB_VLAN_PCP:
51  os << coxmatch_ofb_vlan_pcp(oxm); return os;
52  case openflow::OFPXMT_OFB_IP_DSCP:
53  os << coxmatch_ofb_ip_dscp(oxm); return os;
54  case openflow::OFPXMT_OFB_IP_ECN:
55  os << coxmatch_ofb_ip_ecn(oxm); return os;
56  case openflow::OFPXMT_OFB_IP_PROTO:
57  os << coxmatch_ofb_ip_proto(oxm); return os;
58  case openflow::OFPXMT_OFB_IPV4_SRC:
59  os << coxmatch_ofb_ipv4_src(oxm); return os;
60  case openflow::OFPXMT_OFB_IPV4_DST:
61  os << coxmatch_ofb_ipv4_dst(oxm); return os;
62  case openflow::OFPXMT_OFB_TCP_SRC:
63  os << coxmatch_ofb_tcp_src(oxm); return os;
64  case openflow::OFPXMT_OFB_TCP_DST:
65  os << coxmatch_ofb_tcp_dst(oxm); return os;
66  case openflow::OFPXMT_OFB_UDP_SRC:
67  os << coxmatch_ofb_udp_src(oxm); return os;
68  case openflow::OFPXMT_OFB_UDP_DST:
69  os << coxmatch_ofb_udp_dst(oxm); return os;
70  case openflow::OFPXMT_OFB_SCTP_SRC:
71  os << coxmatch_ofb_sctp_src(oxm); return os;
72  case openflow::OFPXMT_OFB_SCTP_DST:
73  os << coxmatch_ofb_sctp_dst(oxm); return os;
74  case openflow::OFPXMT_OFB_ICMPV4_TYPE:
75  os << coxmatch_ofb_icmpv4_type(oxm); return os;
76  case openflow::OFPXMT_OFB_ICMPV4_CODE:
77  os << coxmatch_ofb_icmpv4_code(oxm); return os;
78  case openflow::OFPXMT_OFB_ARP_OP:
79  os << coxmatch_ofb_arp_opcode(oxm); return os;
80  case openflow::OFPXMT_OFB_ARP_SPA:
81  os << coxmatch_ofb_arp_spa(oxm); return os;
82  case openflow::OFPXMT_OFB_ARP_TPA:
83  os << coxmatch_ofb_arp_tpa(oxm); return os;
84  case openflow::OFPXMT_OFB_ARP_SHA:
85  os << coxmatch_ofb_arp_sha(oxm); return os;
86  case openflow::OFPXMT_OFB_ARP_THA:
87  os << coxmatch_ofb_arp_tha(oxm); return os;
88  case openflow::OFPXMT_OFB_IPV6_SRC:
89  os << coxmatch_ofb_ipv6_src(oxm); return os;
90  case openflow::OFPXMT_OFB_IPV6_DST:
91  os << coxmatch_ofb_ipv6_dst(oxm); return os;
92  case openflow::OFPXMT_OFB_IPV6_FLABEL:
93  os << coxmatch_ofb_ipv6_flabel(oxm); return os;
94  case openflow::OFPXMT_OFB_ICMPV6_TYPE:
95  os << coxmatch_ofb_icmpv6_type(oxm); return os;
96  case openflow::OFPXMT_OFB_ICMPV6_CODE:
97  os << coxmatch_ofb_icmpv6_code(oxm); return os;
98  case openflow::OFPXMT_OFB_IPV6_ND_TARGET:
99  os << coxmatch_ofb_ipv6_nd_target(oxm); return os;
100  case openflow::OFPXMT_OFB_IPV6_ND_SLL:
101  os << coxmatch_ofb_ipv6_nd_sll(oxm); return os;
102  case openflow::OFPXMT_OFB_IPV6_ND_TLL:
103  os << coxmatch_ofb_ipv6_nd_tll(oxm); return os;
104  case openflow::OFPXMT_OFB_MPLS_LABEL:
105  os << coxmatch_ofb_mpls_label(oxm); return os;
106  case openflow::OFPXMT_OFB_MPLS_TC:
107  os << coxmatch_ofb_mpls_tc(oxm); return os;
108  case openflow::OFPXMT_OFB_MPLS_BOS:
109  os << coxmatch_ofb_mpls_bos(oxm); return os;
110  case openflow::OFPXMT_OFB_TUNNEL_ID:
111  os << coxmatch_ofb_tunnel_id(oxm); return os;
112  case openflow::OFPXMT_OFB_PBB_ISID:
113  os << coxmatch_ofb_pbb_isid(oxm); return os;
114  case openflow::OFPXMT_OFB_IPV6_EXTHDR:
115  os << coxmatch_ofb_ipv6_exthdr(oxm); return os;
116  default:
117  os << oxm; return os;
118  }
119  } break;
120  case openflow::OFPXMC_EXPERIMENTER: {
121  switch (oxm.get_oxm_field()) {
122  case openflow::experimental::OFPXMT_OFX_NW_SRC:
123  os << coxmatch_ofx_nw_src(oxm); return os;
124  case openflow::experimental::OFPXMT_OFX_NW_DST:
125  os << coxmatch_ofx_nw_dst(oxm); return os;
126  case openflow::experimental::OFPXMT_OFX_NW_PROTO:
127  os << coxmatch_ofx_nw_proto(oxm); return os;
128  case openflow::experimental::OFPXMT_OFX_NW_TOS:
129  os << coxmatch_ofx_nw_tos(oxm); return os;
130  case openflow::experimental::OFPXMT_OFX_TP_SRC:
131  os << coxmatch_ofx_tp_src(oxm); return os;
132  case openflow::experimental::OFPXMT_OFX_TP_DST:
133  os << coxmatch_ofx_tp_dst(oxm); return os;
134 #ifdef ROFL_EXPERIMENTAL
135  case openflow::experimental::gtp::OFPXMT_OFX_GTP_MSGTYPE:
137  case openflow::experimental::gtp::OFPXMT_OFX_GTP_TEID:
139  case openflow::experimental::pppoe::OFPXMT_OFX_PPPOE_SID:
141  case openflow::experimental::pppoe::OFPXMT_OFX_PPPOE_CODE:
143  case openflow::experimental::pppoe::OFPXMT_OFX_PPPOE_TYPE:
145  case openflow::experimental::pppoe::OFPXMT_OFX_PPP_PROT:
147  case openflow::experimental::gre::OFPXMT_OFX_GRE_VERSION:
149  case openflow::experimental::gre::OFPXMT_OFX_GRE_PROT_TYPE:
151  case openflow::experimental::gre::OFPXMT_OFX_GRE_KEY:
153 #endif
154  default:
155  os << oxm; return os;
156  }
157  } break;
158  default:
159  os << oxm; return os;
160  }
161 
162  return os;
163  };
164 };
165 
166 
167 }; // end of namespace openflow
168 }; // end of namespace rofl
169 
170 
171 
172 
173 #endif /* COXMATCH_OUTPUT_H_ */
Definition: coxmatch.h:684
Definition: coxmatch.h:640
Definition: coxmatch.h:1200
Definition: coxmatch.h:548
Definition: coxmatch.h:1328
Definition: coxmatch.h:1048
Definition: coxmatch.h:1024
Definition: coxmatch.h:526
Definition: coxmatch.h:442
Definition: coxmatch.h:1510
Definition: coxmatch.h:662
Definition: coxmatch.h:618
Definition: coxmatch.h:880
Definition: coxmatch.h:1303
Definition: coxmatch.h:803
Definition: coxmatch.h:1461
Definition: coxmatch.h:976
Definition: coxmatch.h:499
Definition: coxmatch.h:740
Definition: coxmatch.h:49
Definition: coxmatch.h:1565
Definition: coxmatch.h:1253
Definition: coxmatch.h:1000
Definition: coxmatch.h:1142
Definition: coxmatch.h:1171
Definition: coxmatch.h:928
Definition: coxmatch.h:904
Definition: coxmatch.h:1278
Definition: coxmatch.h:1624
Definition: coxmatch_output.h:25
Definition: coxmatch.h:471
Definition: coxmatch.h:1401
Definition: coxmatch.h:952
Definition: coxmatch.h:1432
Definition: coxmatch.h:1376
Definition: coxmatch.h:1600
Definition: coxmatch.h:774
Definition: coxmatch.h:1352
Definition: coxmatch.h:1531
Definition: coxmatch.h:1229
Definition: coxmatch.h:1488
Definition: coxmatch.h:706
Definition: coxmatch.h:398
Definition: coxmatch.h:1108
Definition: coxmatch.h:856
Definition: coxmatch.h:1073