void nas_acl_table::commit_create (bool rolling_back) { if (!is_attr_dirty (BASE_ACL_TABLE_STAGE)) { throw nas::base_exception {NAS_ACL_E_CREATE_ONLY, __PRETTY_FUNCTION__, "Mandatory attribute Stage not present"}; } if (!is_attr_dirty (BASE_ACL_TABLE_ALLOWED_MATCH_FIELDS)) { throw nas::base_exception {NAS_ACL_E_CREATE_ONLY, __PRETTY_FUNCTION__, "Mandatory attribute Allowed Match Fields not present"}; } nas::base_obj_t::commit_create(rolling_back); }
void nas_acl_counter_t::set_type(uint_t type, bool reset) { auto t = static_cast <BASE_ACL_COUNTER_TYPE_t> (type); if (!is_attr_dirty (BASE_ACL_COUNTER_TYPES)) { mark_attr_dirty (BASE_ACL_COUNTER_TYPES); _types_to_be_pushed.clear(); if (reset) { _enable_byte_count = false; _enable_pkt_count = false; } } switch (t) { case BASE_ACL_COUNTER_TYPE_PACKET: _enable_pkt_count = true; break; case BASE_ACL_COUNTER_TYPE_BYTE: _enable_byte_count = true; break; default: throw nas::base_exception {NAS_ACL_E_ATTR_VAL, __PRETTY_FUNCTION__, std::string {"Unknown Counter type "} + std::to_string (t)}; break; } }
void derived_obj_t::commit_create (bool rolling_back) { if (!is_attr_dirty (BASE_UT_ATTR1)) { throw nas::base_exception {NAS_BASE_E_PARAM, __PRETTY_FUNCTION__, "Mandatory attribute ATTR1 not present"}; } nas::base_obj_t::commit_create(rolling_back); }
void nas_acl_table::set_allowed_filter (uint_t filter_id) { if (is_created_in_ndi()) { // Create-Only attribute throw nas::base_exception {NAS_ACL_E_CREATE_ONLY, __PRETTY_FUNCTION__, "Cannot modify Filter-Set for Table"}; } BASE_ACL_MATCH_TYPE_t f = static_cast <BASE_ACL_MATCH_TYPE_t> (filter_id); if (!nas_acl_filter_t::is_type_valid (f)) { throw nas::base_exception {NAS_ACL_E_ATTR_VAL, __PRETTY_FUNCTION__, std::string {"Unknown Table Match Field type "} + std::to_string (f)}; } if (!is_attr_dirty (BASE_ACL_TABLE_ALLOWED_MATCH_FIELDS)) { mark_attr_dirty (BASE_ACL_TABLE_ALLOWED_MATCH_FIELDS); _allowed_filters.clear (); } _allowed_filters.insert(f); }