diff --git a/orchagent/main.cpp b/orchagent/main.cpp index 9da230bfb6..5370daf371 100644 --- a/orchagent/main.cpp +++ b/orchagent/main.cpp @@ -55,6 +55,7 @@ bool gSwssRecord = true; bool gLogRotate = false; bool gSaiRedisLogRotate = false; bool gSyncMode = false; +sai_redis_communication_mode_t gRedisCommunicationMode = SAI_REDIS_COMMUNICATION_MODE_REDIS_ASYNC; char *gAsicInstance = NULL; extern bool gIsNatSupported; @@ -64,7 +65,7 @@ string gRecordFile; void usage() { - cout << "usage: orchagent [-h] [-r record_type] [-d record_location] [-b batch_size] [-m MAC] [-i INST_ID] [-s]" << endl; + cout << "usage: orchagent [-h] [-r record_type] [-d record_location] [-b batch_size] [-m MAC] [-i INST_ID] [-s] [-z mode]" << endl; cout << " -h: display this message" << endl; cout << " -r record_type: record orchagent logs with type (default 3)" << endl; cout << " 0: do not record logs" << endl; @@ -75,7 +76,8 @@ void usage() cout << " -b batch_size: set consumer table pop operation batch size (default 128)" << endl; cout << " -m MAC: set switch MAC address" << endl; cout << " -i INST_ID: set the ASIC instance_id in multi-asic platform" << endl; - cout << " -s: enable synchronous mode" << endl; + cout << " -s: enable synchronous mode (depreacated, use -z)" << endl; + cout << " -z: redis communication mode (redis_async|redis_sync|zmq_sync), default: redis_async" << endl; } void sighup_handler(int signo) @@ -160,7 +162,7 @@ int main(int argc, char **argv) string record_location = "."; - while ((opt = getopt(argc, argv, "b:m:r:d:i:hs")) != -1) + while ((opt = getopt(argc, argv, "b:m:r:d:i:hsz:")) != -1) { switch (opt) { @@ -213,6 +215,9 @@ int main(int argc, char **argv) gSyncMode = true; SWSS_LOG_NOTICE("Enabling synchronous mode"); break; + case 'z': + sai_deserialize_redis_communication_mode(optarg, gRedisCommunicationMode); + break; default: /* '?' */ exit(EXIT_FAILURE); @@ -272,12 +277,16 @@ int main(int argc, char **argv) // when g_syncMode is set to true here, create_switch will wait the response from syncd if (gSyncMode) { - attr.id = SAI_REDIS_SWITCH_ATTR_SYNC_MODE; - attr.value.booldata = true; + SWSS_LOG_WARN("sync mode is depreacated, use -z param"); - sai_switch_api->set_switch_attribute(gSwitchId, &attr); + gRedisCommunicationMode = SAI_REDIS_COMMUNICATION_MODE_REDIS_SYNC; } + attr.id = SAI_REDIS_SWITCH_ATTR_REDIS_COMMUNICATION_MODE; + attr.value.s32 = gRedisCommunicationMode; + + sai_switch_api->set_switch_attribute(gSwitchId, &attr); + if (gAsicInstance) { attr.id = SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO;