Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #include <cmn/agent.h> 6 : #include <bind/bind_resolver.h> 7 : #include <vnc_cfg_types.h> 8 : #include <oper_db.h> 9 : #include <forwarding_class.h> 10 : #include <global_qos_config.h> 11 : #include <config_manager.h> 12 : 13 3 : GlobalQosConfig::GlobalQosConfig(Agent *agent) : OperIFMapTable(agent) { 14 3 : } 15 : 16 6 : GlobalQosConfig::~GlobalQosConfig() { 17 6 : } 18 : 19 0 : void GlobalQosConfig::ResetDscp() { 20 0 : if (control_dscp_ != kInvalidDscp) { 21 0 : if (control_dscp_ != 0) { 22 0 : agent()->SetXmppDscp(0); 23 : } 24 0 : control_dscp_ = kInvalidDscp; 25 : } 26 0 : if (dns_dscp_ != kInvalidDscp) { 27 0 : if (dns_dscp_ != 0) { 28 0 : SetDnsDscp(0); 29 : } 30 0 : dns_dscp_ = kInvalidDscp; 31 : } 32 0 : if (analytics_dscp_ != kInvalidDscp) { 33 0 : if (analytics_dscp_ != 0) { 34 0 : Sandesh::SetDscpValue(0); 35 : } 36 0 : analytics_dscp_ = kInvalidDscp; 37 : } 38 0 : } 39 : 40 0 : void GlobalQosConfig::SetDnsDscp(uint8_t value) { 41 0 : BindResolver *resolver = BindResolver::Resolver(); 42 0 : if (resolver) { 43 0 : resolver->SetDscpValue(value); 44 : } 45 0 : } 46 : 47 0 : void GlobalQosConfig::ConfigDelete(IFMapNode *node) { 48 0 : if (node->IsDeleted()) { 49 0 : ResetDscp(); 50 : } 51 0 : } 52 : 53 0 : void GlobalQosConfig::ConfigAddChange(IFMapNode *node) { 54 : autogen::GlobalQosConfig *cfg = 55 0 : static_cast<autogen::GlobalQosConfig *>(node->GetObject()); 56 0 : if (cfg && 57 0 : cfg->IsPropertySet(autogen::GlobalQosConfig::CONTROL_TRAFFIC_DSCP)) { 58 : const autogen::ControlTrafficDscpType &dscp = 59 0 : cfg->control_traffic_dscp(); 60 0 : if (control_dscp_ != dscp.control) { 61 0 : control_dscp_ = dscp.control; 62 0 : agent()->SetXmppDscp(control_dscp_); 63 : } 64 0 : if (dns_dscp_ != dscp.dns) { 65 0 : dns_dscp_ = dscp.dns; 66 0 : SetDnsDscp(dns_dscp_); 67 : } 68 0 : if (analytics_dscp_ != dscp.analytics) { 69 0 : analytics_dscp_ = dscp.analytics; 70 0 : Sandesh::SetDscpValue(analytics_dscp_); 71 : } 72 : } else { 73 0 : ResetDscp(); 74 : } 75 0 : } 76 : 77 0 : void GlobalQosConfig::ConfigManagerEnqueue(IFMapNode *node) { 78 0 : agent()->config_manager()->AddGlobalQosConfigNode(node); 79 0 : }