diff --git a/agent/src/core.cc b/agent/src/core.cc
index fde14a4..999601e 100644
--- a/agent/src/core.cc
+++ b/agent/src/core.cc
@@ -312,7 +312,7 @@
     return queue_map.count(key) > 0 ? true: false;
 }
 
-char* openolt_read_sysinfo(char* field_name, char* field_val)
+char* openolt_read_sysinfo(const char* field_name, char* field_val)
 {
    FILE *fp;
    /* Prepare the command*/
@@ -455,6 +455,19 @@
     return Status::OK;
 }
 
+Status pushOltOperInd(uint32_t intf_id, const char *type, const char *state)
+{
+	 openolt::Indication ind;
+	 openolt::IntfOperIndication* intf_oper_ind = new openolt::IntfOperIndication;
+
+	 intf_oper_ind->set_type(type);
+	 intf_oper_ind->set_intf_id(intf_id);
+	 intf_oper_ind->set_oper_state(state);
+	 ind.set_allocated_intf_oper_ind(intf_oper_ind);
+	 oltIndQ.push(ind);
+    return Status::OK;
+}
+
 #define CLI_HOST_PROMPT_FORMAT "BCM.%u> "
 
 /* Build CLI prompt */
@@ -651,12 +664,8 @@
     Status status = DisableUplinkIf_(nni_intf_id);
     if (status.ok()) {
         state.deactivate();
-        openolt::Indication ind;
-        openolt::OltIndication* olt_ind = new openolt::OltIndication;
-        olt_ind->set_oper_state("down");
-        ind.set_allocated_olt_ind(olt_ind);
         BCM_LOG(INFO, openolt_log_id, "Disable OLT, add an extra indication\n");
-        oltIndQ.push(ind);
+        pushOltOperInd(nni_intf_id, "nni", "up");
     }
     return status;
 
@@ -666,12 +675,8 @@
     Status status = EnableUplinkIf_(0);
     if (status.ok()) {
         state.activate();
-        openolt::Indication ind;
-        openolt::OltIndication* olt_ind = new openolt::OltIndication;
-        olt_ind->set_oper_state("up");
-        ind.set_allocated_olt_ind(olt_ind);
         BCM_LOG(INFO, openolt_log_id, "Reenable OLT, add an extra indication\n");
-        oltIndQ.push(ind);
+        pushOltOperInd(0, "nni", "up");
     }
     return status;
 }
