25
25
#define MIRROR_SESSION_DSCP_MIN 0
26
26
#define MIRROR_SESSION_DSCP_MAX 63
27
27
28
+ #define MLNX_PLATFORM " mlnx"
29
+
28
30
extern sai_mirror_api_t *sai_mirror_api;
29
31
extern sai_object_id_t gSwitchId ;
30
32
31
33
using namespace std ::rel_ops;
32
34
33
- MirrorOrch::MirrorOrch (DBConnector *db, string tableName,
35
+ MirrorEntry::MirrorEntry (const string& platform) :
36
+ status(false ),
37
+ greType(0 ),
38
+ dscp(0 ),
39
+ ttl(0 ),
40
+ queue(0 ),
41
+ addVLanTag(false ),
42
+ sessionId(0 ),
43
+ refCount(0 )
44
+ {
45
+ nexthopInfo.resolved = false ;
46
+ neighborInfo.resolved = false ;
47
+
48
+ if (platform == MLNX_PLATFORM)
49
+ {
50
+ greType = 0x6558 ;
51
+ queue = 1 ;
52
+ }
53
+ else
54
+ {
55
+ greType = 0x88be ;
56
+ queue = 0 ;
57
+ }
58
+
59
+ dscp = 8 ;
60
+ ttl = 255 ;
61
+ }
62
+
63
+ MirrorOrch::MirrorOrch (TableConnector appDbConnector, TableConnector confDbConnector,
34
64
PortsOrch *portOrch, RouteOrch *routeOrch, NeighOrch *neighOrch, FdbOrch *fdbOrch) :
35
- Orch(db, tableName ),
65
+ Orch(confDbConnector.first, confDbConnector.second ),
36
66
m_portsOrch(portOrch),
37
67
m_routeOrch(routeOrch),
38
68
m_neighOrch(neighOrch),
39
69
m_fdbOrch(fdbOrch),
40
- m_mirrorTableProducer(db, tableName )
70
+ m_mirrorTableProducer(appDbConnector.first, appDbConnector.second )
41
71
{
42
72
m_portsOrch->attach (this );
43
73
m_neighOrch->attach (this );
@@ -104,7 +134,7 @@ bool MirrorOrch::getSessionState(const string& name, bool& state)
104
134
return false ;
105
135
}
106
136
107
- state = m_syncdMirrors[ name] .status ;
137
+ state = m_syncdMirrors. find ( name)-> second .status ;
108
138
109
139
return true ;
110
140
}
@@ -118,7 +148,7 @@ bool MirrorOrch::getSessionOid(const string& name, sai_object_id_t& oid)
118
148
return false ;
119
149
}
120
150
121
- oid = m_syncdMirrors[ name] .sessionId ;
151
+ oid = m_syncdMirrors. find ( name)-> second .sessionId ;
122
152
123
153
return true ;
124
154
}
@@ -132,7 +162,7 @@ bool MirrorOrch::increaseRefCount(const string& name)
132
162
return false ;
133
163
}
134
164
135
- ++m_syncdMirrors[ name] .refCount ;
165
+ ++m_syncdMirrors. find ( name)-> second .refCount ;
136
166
137
167
return true ;
138
168
}
@@ -162,7 +192,7 @@ void MirrorOrch::createEntry(const string& key, const vector<FieldValueTuple>& d
162
192
{
163
193
SWSS_LOG_ENTER ();
164
194
165
- MirrorEntry entry = { } ;
195
+ MirrorEntry entry ( getenv ( " platform " )) ;
166
196
167
197
for (auto i : data)
168
198
{
@@ -201,12 +231,6 @@ void MirrorOrch::createEntry(const string& key, const vector<FieldValueTuple>& d
201
231
{
202
232
entry.queue = to_uint<uint8_t >(fvValue (i));
203
233
}
204
- else if (fvField (i) == MIRROR_SESSION_STATUS)
205
- {
206
- // Status update always caused by MirrorOrch and should
207
- // not be changed by users. Ignore it.
208
- return ;
209
- }
210
234
else
211
235
{
212
236
SWSS_LOG_ERROR (" Failed to parse session %s configuration. Unknown attribute %s.\n " , key.c_str (), fvField (i).c_str ());
0 commit comments