13 #include "rofl/common/croflexception.h"
14 #include "rofl/common/openflow/openflow.h"
15 #include "rofl/common/openflow/cofaction.h"
16 #include "rofl/common/openflow/experimental/actions/gtp_actions.h"
17 #include "rofl/common/cindex.h"
29 uint8_t ofp_version = openflow::OFP_VERSION_UNKNOWN);
70 uint8_t* buf,
size_t buflen);
77 uint8_t* buf,
size_t buflen);
98 uint32_t port_no = 0)
const;
112 check_prerequisites()
const;
120 set_version(uint8_t ofp_version) {
121 this->ofp_version = ofp_version;
122 for (std::map<cindex, cofaction*>::iterator
123 it = actions.begin(); it != actions.end(); ++it) {
124 it->second->set_version(ofp_version);
132 get_version()
const {
return ofp_version; };
137 const std::map<cindex, unsigned int>&
138 get_actions_index()
const {
return actions_index; };
143 std::map<cindex, cofaction*>&
144 set_actions() {
return actions; };
149 const std::map<cindex, cofaction*>&
150 get_actions()
const {
return actions; };
156 size()
const {
return actions.size(); };
162 empty()
const {
return actions.empty(); };
167 drop_action(
const cindex& index);
170 has_action(
const cindex& index)
const;
176 add_action_output(
const cindex& index);
179 set_action_output(
const cindex& index);
182 get_action_output(
const cindex& index)
const;
185 drop_action_output(
const cindex& index);
188 has_action_output(
const cindex& index)
const;
194 add_action_set_vlan_vid(
const cindex& index);
197 set_action_set_vlan_vid(
const cindex& index);
200 get_action_set_vlan_vid(
const cindex& index)
const;
203 drop_action_set_vlan_vid(
const cindex& index);
206 has_action_set_vlan_vid(
const cindex& index)
const;
212 add_action_set_vlan_pcp(
const cindex& index);
215 set_action_set_vlan_pcp(
const cindex& index);
218 get_action_set_vlan_pcp(
const cindex& index)
const;
221 drop_action_set_vlan_pcp(
const cindex& index);
224 has_action_set_vlan_pcp(
const cindex& index)
const;
230 add_action_strip_vlan(
const cindex& index);
233 set_action_strip_vlan(
const cindex& index);
236 get_action_strip_vlan(
const cindex& index)
const;
239 drop_action_strip_vlan(
const cindex& index);
242 has_action_strip_vlan(
const cindex& index)
const;
248 add_action_set_dl_src(
const cindex& index);
251 set_action_set_dl_src(
const cindex& index);
254 get_action_set_dl_src(
const cindex& index)
const;
257 drop_action_set_dl_src(
const cindex& index);
260 has_action_set_dl_src(
const cindex& index)
const;
266 add_action_set_dl_dst(
const cindex& index);
269 set_action_set_dl_dst(
const cindex& index);
272 get_action_set_dl_dst(
const cindex& index)
const;
275 drop_action_set_dl_dst(
const cindex& index);
278 has_action_set_dl_dst(
const cindex& index)
const;
284 add_action_set_nw_src(
const cindex& index);
287 set_action_set_nw_src(
const cindex& index);
290 get_action_set_nw_src(
const cindex& index)
const;
293 drop_action_set_nw_src(
const cindex& index);
296 has_action_set_nw_src(
const cindex& index)
const;
302 add_action_set_nw_dst(
const cindex& index);
305 set_action_set_nw_dst(
const cindex& index);
308 get_action_set_nw_dst(
const cindex& index)
const;
311 drop_action_set_nw_dst(
const cindex& index);
314 has_action_set_nw_dst(
const cindex& index)
const;
320 add_action_set_nw_tos(
const cindex& index);
323 set_action_set_nw_tos(
const cindex& index);
326 get_action_set_nw_tos(
const cindex& index)
const;
329 drop_action_set_nw_tos(
const cindex& index);
332 has_action_set_nw_tos(
const cindex& index)
const;
338 add_action_set_tp_src(
const cindex& index);
341 set_action_set_tp_src(
const cindex& index);
344 get_action_set_tp_src(
const cindex& index)
const;
347 drop_action_set_tp_src(
const cindex& index);
350 has_action_set_tp_src(
const cindex& index)
const;
356 add_action_set_tp_dst(
const cindex& index);
359 set_action_set_tp_dst(
const cindex& index);
362 get_action_set_tp_dst(
const cindex& index)
const;
365 drop_action_set_tp_dst(
const cindex& index);
368 has_action_set_tp_dst(
const cindex& index)
const;
374 add_action_enqueue(
const cindex& index);
377 set_action_enqueue(
const cindex& index);
380 get_action_enqueue(
const cindex& index)
const;
383 drop_action_enqueue(
const cindex& index);
386 has_action_enqueue(
const cindex& index)
const;
392 add_action_vendor(
const cindex& index);
395 set_action_vendor(
const cindex& index);
398 get_action_vendor(
const cindex& index)
const;
401 drop_action_vendor(
const cindex& index);
404 has_action_vendor(
const cindex& index)
const;
410 add_action_copy_ttl_out(
const cindex& index);
413 set_action_copy_ttl_out(
const cindex& index);
416 get_action_copy_ttl_out(
const cindex& index)
const;
419 drop_action_copy_ttl_out(
const cindex& index);
422 has_action_copy_ttl_out(
const cindex& index)
const;
428 add_action_copy_ttl_in(
const cindex& index);
431 set_action_copy_ttl_in(
const cindex& index);
434 get_action_copy_ttl_in(
const cindex& index)
const;
437 drop_action_copy_ttl_in(
const cindex& index);
440 has_action_copy_ttl_in(
const cindex& index)
const;
446 add_action_set_mpls_ttl(
const cindex& index);
449 set_action_set_mpls_ttl(
const cindex& index);
452 get_action_set_mpls_ttl(
const cindex& index)
const;
455 drop_action_set_mpls_ttl(
const cindex& index);
458 has_action_set_mpls_ttl(
const cindex& index)
const;
464 add_action_dec_mpls_ttl(
const cindex& index);
467 set_action_dec_mpls_ttl(
const cindex& index);
470 get_action_dec_mpls_ttl(
const cindex& index)
const;
473 drop_action_dec_mpls_ttl(
const cindex& index);
476 has_action_dec_mpls_ttl(
const cindex& index)
const;
482 add_action_push_vlan(
const cindex& index);
485 set_action_push_vlan(
const cindex& index);
488 get_action_push_vlan(
const cindex& index)
const;
491 drop_action_push_vlan(
const cindex& index);
494 has_action_push_vlan(
const cindex& index)
const;
500 add_action_pop_vlan(
const cindex& index);
503 set_action_pop_vlan(
const cindex& index);
506 get_action_pop_vlan(
const cindex& index)
const;
509 drop_action_pop_vlan(
const cindex& index);
512 has_action_pop_vlan(
const cindex& index)
const;
518 add_action_push_mpls(
const cindex& index);
521 set_action_push_mpls(
const cindex& index);
524 get_action_push_mpls(
const cindex& index)
const;
527 drop_action_push_mpls(
const cindex& index);
530 has_action_push_mpls(
const cindex& index)
const;
536 add_action_pop_mpls(
const cindex& index);
539 set_action_pop_mpls(
const cindex& index);
542 get_action_pop_mpls(
const cindex& index)
const;
545 drop_action_pop_mpls(
const cindex& index);
548 has_action_pop_mpls(
const cindex& index)
const;
554 add_action_group(
const cindex& index);
557 set_action_group(
const cindex& index);
560 get_action_group(
const cindex& index)
const;
563 drop_action_group(
const cindex& index);
566 has_action_group(
const cindex& index)
const;
572 add_action_set_nw_ttl(
const cindex& index);
575 set_action_set_nw_ttl(
const cindex& index);
578 get_action_set_nw_ttl(
const cindex& index)
const;
581 drop_action_set_nw_ttl(
const cindex& index);
584 has_action_set_nw_ttl(
const cindex& index)
const;
590 add_action_dec_nw_ttl(
const cindex& index);
593 set_action_dec_nw_ttl(
const cindex& index);
596 get_action_dec_nw_ttl(
const cindex& index)
const;
599 drop_action_dec_nw_ttl(
const cindex& index);
602 has_action_dec_nw_ttl(
const cindex& index)
const;
608 add_action_set_queue(
const cindex& index);
611 set_action_set_queue(
const cindex& index);
614 get_action_set_queue(
const cindex& index)
const;
617 drop_action_set_queue(
const cindex& index);
620 has_action_set_queue(
const cindex& index)
const;
626 add_action_set_field(
const cindex& index);
629 set_action_set_field(
const cindex& index);
632 get_action_set_field(
const cindex& index)
const;
635 drop_action_set_field(
const cindex& index);
638 has_action_set_field(
const cindex& index)
const;
644 add_action_experimenter(
const cindex& index);
647 set_action_experimenter(
const cindex& index);
650 get_action_experimenter(
const cindex& index)
const;
653 drop_action_experimenter(
const cindex& index);
656 has_action_experimenter(
const cindex& index)
const;
662 add_action_push_pbb(
const cindex& index);
665 set_action_push_pbb(
const cindex& index);
668 get_action_push_pbb(
const cindex& index)
const;
671 drop_action_push_pbb(
const cindex& index);
674 has_action_push_pbb(
const cindex& index)
const;
680 add_action_pop_pbb(
const cindex& index);
683 set_action_pop_pbb(
const cindex& index);
686 get_action_pop_pbb(
const cindex& index)
const;
689 drop_action_pop_pbb(
const cindex& index);
692 has_action_pop_pbb(
const cindex& index)
const;
698 operator<< (std::ostream& os,
cofactions const& actions) {
699 os <<
rofl::indent(0) <<
"<cofactions ofp-version:" << (int)actions.get_version() <<
700 " #actions:" << (int)actions.get_actions().size() <<
" >" << std::endl;
702 for (std::map<cindex, cofaction*>::const_iterator
703 it = actions.actions.begin(); it != actions.actions.end(); ++it) {
704 cofaction::dump(os, *(it->second));
712 std::map<cindex, cofaction*> actions;
713 std::map<cindex, unsigned int> actions_index;
std::list< uint32_t > actions_output_ports() const
Definition: cofactions.cc:402
Definition: cofaction.h:1839
Definition: cofaction.h:2089
Definition: cofaction.h:570
Definition: cofaction.h:2644
Definition: cofaction.h:190
Definition: cofaction.h:1679
Definition: cofaction.h:961
Definition: cofaction.h:1344
int count_action_type(uint16_t type) const
Definition: cofactions.cc:369
Definition: cofaction.h:2527
Definition: cofactions.h:22
Definition: cofaction.h:408
Definition: cofaction.h:2179
Definition: cofaction.h:1520
Definition: cofaction.h:502
Definition: cofaction.h:2338
Definition: cofaction.h:764
Definition: cofaction.h:1052
Definition: cofaction.h:667
Definition: cofaction.h:1452
Definition: cofaction.h:313
Definition: cofaction.h:1588
Definition: cofaction.h:862
Definition: cofaction.h:1143
Definition: cofaction.h:2429
int count_action_output(uint32_t port_no=0) const
Definition: cofactions.cc:378
Definition: cofaction.h:1998
Definition: cofaction.h:1907
Definition: cofaction.h:2735
Definition: cofaction.h:1748
Definition: cofaction.h:2270
Definition: cofaction.h:1234