Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef __VNSW_AGENT_FORWARDING_CLASS_KSYNC_H__ 6 : #define __VNSW_AGENT_FORWARDING_CLASS_KSYNC_H__ 7 : 8 : #include <db/db_entry.h> 9 : #include <db/db_table.h> 10 : #include <db/db_table_partition.h> 11 : #include <ksync/ksync_entry.h> 12 : #include <ksync/ksync_object.h> 13 : #include <ksync/ksync_netlink.h> 14 : #include "oper/qos_queue.h" 15 : #include "oper/forwarding_class.h" 16 : 17 : class KSync; 18 : class ForwardingClassKSyncObject; 19 : 20 : class ForwardingClassKSyncEntry : public KSyncNetlinkDBEntry { 21 : public: 22 : ForwardingClassKSyncEntry(ForwardingClassKSyncObject *obj, 23 : const ForwardingClassKSyncEntry *entry); 24 : ForwardingClassKSyncEntry(ForwardingClassKSyncObject *obj, 25 : const ForwardingClass *fc); 26 : ForwardingClassKSyncEntry(ForwardingClassKSyncObject *obj, 27 : uint32_t i); 28 : virtual ~ForwardingClassKSyncEntry(); 29 : 30 : KSyncDBObject *GetObject() const; 31 : virtual bool IsLess(const KSyncEntry &rhs) const; 32 : virtual std::string ToString() const; 33 : virtual KSyncEntry *UnresolvedReference(); 34 : virtual bool Sync(DBEntry *e); 35 : virtual int AddMsg(char *buf, int buf_len); 36 : virtual int ChangeMsg(char *buf, int buf_len); 37 : virtual int DeleteMsg(char *buf, int buf_len); 38 0 : uint32_t id() const { return id_;} 39 : uint32_t dscp() const { return dscp_;} 40 : uint32_t vlan_priority() const { return vlan_priority_;} 41 : uint32_t mpls_exp() const { return mpls_exp_;} 42 0 : KSyncEntry* qos_queue_ksync() const { 43 0 : return qos_queue_ksync_.get(); 44 : } 45 : private: 46 : int Encode(sandesh_op::type op, char *buf, int buf_len); 47 : KSyncDBObject *ksync_obj_; 48 : uint32_t id_; 49 : uint32_t dscp_; 50 : uint32_t vlan_priority_; 51 : uint32_t mpls_exp_; 52 : KSyncEntryPtr qos_queue_ksync_; 53 : uint16_t nic_queue_id_; 54 : DISALLOW_COPY_AND_ASSIGN(ForwardingClassKSyncEntry); 55 : }; 56 : 57 : class ForwardingClassKSyncObject : public KSyncDBObject { 58 : public: 59 : ForwardingClassKSyncObject(KSync *ksync); 60 : virtual ~ForwardingClassKSyncObject(); 61 0 : KSync *ksync() const { return ksync_; } 62 : virtual KSyncEntry *Alloc(const KSyncEntry *entry, uint32_t index); 63 : virtual KSyncEntry *DBToKSyncEntry(const DBEntry *e); 64 : void RegisterDBClients(); 65 : virtual KSyncDBObject::DBFilterResp DBEntryFilter(const DBEntry *entry, 66 : const KSyncDBEntry*ksync); 67 : private: 68 : KSync *ksync_; 69 : DISALLOW_COPY_AND_ASSIGN(ForwardingClassKSyncObject); 70 : }; 71 : #endif