[Bugfix][API-1100]setup data call success,but iface is not set up 2
Change-Id: Ie6e9c6ad622f593039c8e6694bd405be26f70de0
(cherry picked from commit 73def6d19c0f893d7cdce18c522f5ed806f79f60)
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.c b/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.c
old mode 100644
new mode 100755
index f3201cc..ea0b0be
--- a/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.c
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.c
@@ -180,6 +180,7 @@
uint8_t v6_full_addr_count;
mipc_v6_full_addr_struct4 *v6_full_addr_list_ptr;
uint32_t cause;
+ mipc_msg_sim_ps_id_enum sim_ps_id;
causeStr = (char *)calloc(1, MAX_CAUSE_LENGTH);
if (causeStr == NULL){
@@ -198,6 +199,8 @@
// get cmd
cmd = mipc_msg_get_val_uint8(msg_ptr, MIPC_INTERNAL_EIF_IND_T_CMD, 0xff);
+ sim_ps_id = (mipc_msg_sim_ps_id_enum)msg_ptr->hdr.msg_sim_ps_id;
+ cmd_obj->sim_id = sim_ps_id;
switch (cmd) {
case MIPC_INTERNAL_EIF_IND_CMD_IFUP:
@@ -223,6 +226,7 @@
MEH_LOG_E("[MEH] can't allocate cmd_obj_for_mtu\n");
goto error;
}
+ cmd_obj_for_mtu->sim_id = cmd_obj->sim_id;
cmd_obj_for_mtu->cmd = NETAGENT_IO_CMD_SETMTU;
cmd_obj_for_mtu->parameter.mtu.mtu_size = mtu;
MEH_LOG_D("[MEH] EIF_IND cmd_obj_for_mtu->parameter.mtu.mtu_size=%d \n",
@@ -264,6 +268,20 @@
}
enqueueReqToNa(cmd_obj, REQUEST_TYPE_L5);
+ if (cmd == MIPC_INTERNAL_EIF_IND_CMD_IFUP && mtu > 0) {
+ // needs to update MTU size
+ cmd_obj_for_mtu = netagent_io_cmd_alloc(transid, NETAGENT_IO_CMD_MAX);
+ if (!cmd_obj_for_mtu) {
+ MEH_LOG_E("[MEH] can't allocate cmd_obj_for_mtu\n");
+ goto error;
+ }
+ cmd_obj_for_mtu->sim_id = cmd_obj->sim_id;
+ cmd_obj_for_mtu->cmd = NETAGENT_IO_CMD_SETMTU;
+ cmd_obj_for_mtu->parameter.mtu.mtu_size = mtu;
+ MEH_LOG_D("[MEH] EIF_IND cmd_obj_for_mtu->parameter.mtu.mtu_size=%d \n",
+ cmd_obj_for_mtu->parameter.mtu.mtu_size);
+ enqueueReqToNa(cmd_obj_for_mtu, REQUEST_TYPE_L5);
+ }
return;
error:
@@ -410,6 +428,7 @@
//register MIPC_INTERNAL_EIF_IND
mipc_msg_register_ind(MIPC_MSG_PS0, MIPC_INTERNAL_EIF_IND, (void *)onEifIndCallback, NULL);
+ mipc_msg_register_ind(MIPC_MSG_PS1, MIPC_INTERNAL_EIF_IND, (void *)onEifIndCallback, NULL);
}
unsigned int getIpAddrTypeFromMdMsg(uint8_t v4FullAddrCount, uint8_t v6FullAddrCount) {
@@ -537,8 +556,7 @@
return 1;
}
-int confirmInterfaceUpToMd(unsigned int transId) {
- mipc_msg_t *msg_cnf_ptr;
+int confirmInterfaceUpToMd(unsigned int transId, int sim_ps_id) {
mipc_msg_t *msg_req_ptr;
if (transId == INVALID_TRANS_ID) {
@@ -547,19 +565,17 @@
}
MEH_LOG_D("[MEH] confirmInterfaceUpToMd: transId=%d \n", transId);
- msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, MIPC_MSG_PS0);
+ msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, (mipc_msg_sim_ps_id_enum)sim_ps_id);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_TRANSID, transId);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_CMD, MIPC_INTERNAL_EIF_REQ_CMD_IFUP);
- msg_cnf_ptr = mipc_msg_sync(msg_req_ptr);
+ mipc_msg_async(msg_req_ptr, NULL, NULL);
mipc_msg_deinit(msg_req_ptr);
- mipc_msg_deinit(msg_cnf_ptr);
MEH_LOG_D("[MEH] confirmInterfaceUpToMd: transId=%d done!\n", transId);
return 1;
}
-int confirmInterfaceDownToMd(unsigned int transId){
- mipc_msg_t *msg_cnf_ptr;
+int confirmInterfaceDownToMd(unsigned int transId, int sim_ps_id){
mipc_msg_t *msg_req_ptr;
if (transId == INVALID_TRANS_ID) {
@@ -568,19 +584,17 @@
}
MEH_LOG_D("[MEH] confirmInterfaceDownToMd: transId=%d \n", transId);
- msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, MIPC_MSG_PS0);
+ msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, (mipc_msg_sim_ps_id_enum)sim_ps_id);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_TRANSID, transId);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_CMD, MIPC_INTERNAL_EIF_REQ_CMD_IFDOWN);
- msg_cnf_ptr = mipc_msg_sync(msg_req_ptr);
+ mipc_msg_async(msg_req_ptr, NULL, NULL);
mipc_msg_deinit(msg_req_ptr);
- mipc_msg_deinit(msg_cnf_ptr);
MEH_LOG_D("[MEH] confirmInterfaceDownToMd: transId=%d done!\n", transId);
return 1;
}
-int confirmIpUpdateToMd(unsigned int transId, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength){
- mipc_msg_t *msg_cnf_ptr = NULL;
+int confirmIpUpdateToMd(unsigned int transId, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength, int sim_ps_id){
mipc_msg_t *msg_req_ptr = NULL;
mipc_full_addr_struct4 full_addr;
int log_enable = getCfgValue("enable_sensitive_log");
@@ -591,7 +605,7 @@
}
MEH_LOG_D("[MEH] confirmIpUpdateToMd: transId=%d addrType=%02X\n", transId, addrType);
- msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, MIPC_MSG_PS0);
+ msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, (mipc_msg_sim_ps_id_enum)sim_ps_id);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_TRANSID, transId);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_CMD, MIPC_INTERNAL_EIF_REQ_CMD_IPUPDATE);
@@ -621,22 +635,18 @@
}
mipc_msg_add_tlv(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_NEW_ADDR, sizeof(full_addr), &full_addr);
- msg_cnf_ptr = mipc_msg_sync(msg_req_ptr);
+ mipc_msg_async(msg_req_ptr, NULL, NULL);
mipc_msg_deinit(msg_req_ptr);
- mipc_msg_deinit(msg_cnf_ptr);
MEH_LOG_D("[MEH] confirmIpUpdateToMd: transId=%d done!\n", transId);
return 1;
error:
if (msg_req_ptr != NULL)
mipc_msg_deinit(msg_req_ptr);
- if (msg_cnf_ptr != NULL)
- mipc_msg_deinit(msg_cnf_ptr);
return 0;
}
-int confirmNoRaToMd(unsigned int transId, netagent_io_ra_e flag) {
- mipc_msg_t *msg_cnf_ptr;
+int confirmNoRaToMd(unsigned int transId, netagent_io_ra_e flag, int sim_ps_id) {
mipc_msg_t *msg_req_ptr;
if (transId == INVALID_TRANS_ID) {
@@ -645,7 +655,7 @@
}
MEH_LOG_D("[MEH] confirmNoRaToMd: transId=%d RA_FALG=%d\n", transId, flag);
- msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, MIPC_MSG_PS0);
+ msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, (mipc_msg_sim_ps_id_enum)sim_ps_id);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_TRANSID, transId);
if (flag == NETAGENT_IO_NO_RA_INITIAL) {
@@ -658,16 +668,15 @@
return 0;
}
- msg_cnf_ptr = mipc_msg_sync(msg_req_ptr);
+ mipc_msg_async(msg_req_ptr, NULL, NULL);
mipc_msg_deinit(msg_req_ptr);
- mipc_msg_deinit(msg_cnf_ptr);
MEH_LOG_D("[MEH] confirmNoRaToMd: transId=%d done!\n", transId);
return 1;
}
-int confirmIpAddOrDelToMd(unsigned int transId, netagent_io_cmd_e cmd, int result, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength) {
- mipc_msg_t *msg_cnf_ptr = NULL;
+int confirmIpAddOrDelToMd(unsigned int transId, netagent_io_cmd_e cmd, int result,
+ netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength, int sim_ps_id) {
mipc_msg_t *msg_req_ptr = NULL;
mipc_full_addr_struct4 full_addr;
int log_enable = getCfgValue("enable_sensitive_log");
@@ -678,7 +687,7 @@
}
MEH_LOG_D("[MEH] confirmIpAddOrDelToMd: transId=%d cmd=%d addrType=%02X\n", transId, cmd, addrType);
- msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, MIPC_MSG_PS0);
+ msg_req_ptr = mipc_msg_init(MIPC_INTERNAL_EIF_REQ, (mipc_msg_sim_ps_id_enum)sim_ps_id);
mipc_msg_add_tlv_uint32(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_TRANSID, transId);
if (cmd == NETAGENT_IO_CMD_IPADD) {
@@ -716,18 +725,15 @@
}
mipc_msg_add_tlv(msg_req_ptr, MIPC_INTERNAL_EIF_REQ_T_NEW_ADDR, sizeof(full_addr), &full_addr);
- msg_cnf_ptr = mipc_msg_sync(msg_req_ptr);
+ mipc_msg_async(msg_req_ptr, NULL, NULL);
mipc_msg_deinit(msg_req_ptr);
- mipc_msg_deinit(msg_cnf_ptr);
MEH_LOG_D("[MEH] confirmIpAddOrDelToMd: transId=%d done!\n", transId);
return 1;
error:
if (msg_req_ptr != NULL)
mipc_msg_deinit(msg_req_ptr);
- if (msg_cnf_ptr != NULL)
- mipc_msg_deinit(msg_cnf_ptr);
return 0;
}
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.h b/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.h
old mode 100644
new mode 100755
index a8a1e3e..758c719
--- a/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.h
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/MdEventHandler.h
@@ -72,11 +72,11 @@
int copyIpAddressToReqInfo(netagent_io_cmd_obj_t *cmd_obj, mipc_v4_full_addr_struct4 *ipV4list, mipc_v6_full_addr_struct4 *ipV6list);
-int confirmInterfaceUpToMd(unsigned int transId);
-int confirmInterfaceDownToMd(unsigned int transId);
-int confirmIpUpdateToMd(unsigned int transId, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength);
-int confirmNoRaToMd(unsigned int transId, netagent_io_ra_e flag);
-int confirmIpAddOrDelToMd(unsigned int transId, netagent_io_cmd_e cmd, int result, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength);
+int confirmInterfaceUpToMd(unsigned int transId, int sim_ps_id);
+int confirmInterfaceDownToMd(unsigned int transId, int sim_ps_id);
+int confirmIpUpdateToMd(unsigned int transId, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength, int sim_ps_id);
+int confirmNoRaToMd(unsigned int transId, netagent_io_ra_e flag, int sim_ps_id);
+int confirmIpAddOrDelToMd(unsigned int transId, netagent_io_cmd_e cmd, int result, netagent_io_addr_type_e addrType, unsigned int* addr, int ipv6PrefixLength, int sim_ps_id);
int confirmTcpUdpRsvnToMd(unsigned int transId, netagent_io_cmd_e cmd, uint8_t rsvnAction, unsigned int response);
// Sensitive log control
int getCfgValue(char *name);
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.cpp b/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.cpp
old mode 100644
new mode 100755
index 777a4e1..343f8de
--- a/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.cpp
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.cpp
@@ -82,7 +82,7 @@
pthread_cond_init(&mDispatchCond, NULL);
m_lTransIntfId.clear();
isMultiHomingFeatureSupport = false;
-
+ m_wait_v6_sim_id = 0;
for (int i = 0; i < 2; i++) {
cbUpdateKernelAddress[i] = NULL;
@@ -548,8 +548,10 @@
char addressV4[MAX_IPV4_ADDRESS_LENGTH] = {0};
char addressV6[MAX_IPV6_ADDRESS_LENGTH] = {0};
char *reason = NULL;
+ int sim_id = 0;
NA_GET_IFST_STATE(config, state);
+ NA_GET_SIM_ID(pReqInfo->pNetAgentCmdObj, &sim_id);
if (NA_GET_IF_ID(pReqInfo->pNetAgentCmdObj, &interfaceId) != NETAGENT_IO_RET_SUCCESS) {
NA_LOG_E("[%s] fail to get interface id", __FUNCTION__);
@@ -669,7 +671,7 @@
confirmIpUpdateToMd(transId,
NETAGENT_IO_ADDR_TYPE_IPv4,
&addrV4_,
- INVALID_IPV6_PREFIX_LENGTH);
+ INVALID_IPV6_PREFIX_LENGTH, sim_id);
} else {
NA_LOG_E("[%s] error occurs when get addressV4", __FUNCTION__);
}
@@ -685,9 +687,10 @@
//confirmInterfaceState(interfaceId, state, addrType);
NA_LOG_D("[%s] send confirm %d to L5", __FUNCTION__, state);
if (config == ENABLE) {
- confirmInterfaceUpToMd(getTransIntfId(interfaceId));
+ confirmInterfaceUpToMd(getTransIntfId(interfaceId), sim_id);
+ m_wait_v6_sim_id = sim_id;
} else {
- confirmInterfaceDownToMd(getTransIntfId(interfaceId));
+ confirmInterfaceDownToMd(getTransIntfId(interfaceId), sim_id);
}
NA_LOG_D("[%s] confirm complete!", __FUNCTION__);
}
@@ -742,6 +745,9 @@
char addressV6[MAX_IPV6_ADDRESS_LENGTH] = {0};
unsigned int addrV6_binary[4] = {0};
int log_enable = getCfgValue("enable_sensitive_log");
+ int sim_id = 0;
+
+ NA_GET_SIM_ID(pReqInfo->pNetAgentCmdObj, &sim_id);
// get interface id
if (NA_GET_IF_ID(pReqInfo->pNetAgentCmdObj, &interfaceId) != NETAGENT_IO_RET_SUCCESS) {
@@ -792,7 +798,7 @@
result = 0;
}
//confirmIpAddOrDel(interfaceId, NETAGENT_IO_CMD_IPADD, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH);
- confirmIpAddOrDelToMd(getTransIntfId(interfaceId), NETAGENT_IO_CMD_IPADD, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH);
+ confirmIpAddOrDelToMd(getTransIntfId(interfaceId), NETAGENT_IO_CMD_IPADD, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH, sim_id);
} else {
NA_LOG_E("[%s] is not link local address", __FUNCTION__);
return;
@@ -812,6 +818,9 @@
char addressV6[MAX_IPV6_ADDRESS_LENGTH] = {0};
unsigned int addrV6_binary[4] = {0};
int log_enable = getCfgValue("enable_sensitive_log");
+ int sim_id = 0;
+
+ NA_GET_SIM_ID(pReqInfo->pNetAgentCmdObj, &sim_id);
// get interface id
if (NA_GET_IF_ID(pReqInfo->pNetAgentCmdObj, &interfaceId) != NETAGENT_IO_RET_SUCCESS) {
@@ -859,7 +868,8 @@
}
recordPdnIpInfo(interfaceId, addrType,addressV4, addressV6);
//confirmIpAddOrDel(interfaceId, NETAGENT_IO_CMD_IPDEL, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH);
- confirmIpAddOrDelToMd(getTransIntfId(interfaceId), NETAGENT_IO_CMD_IPDEL, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH);
+ confirmIpAddOrDelToMd(getTransIntfId(interfaceId), NETAGENT_IO_CMD_IPDEL, result, addrType, addrV6_binary, INVALID_IPV6_PREFIX_LENGTH, sim_id);
+
} else {
NA_LOG_E("[%s] not get address", __FUNCTION__);
return;
@@ -1769,14 +1779,14 @@
cmd = (action == ACTION_ADDR_UPDATED) ? NETAGENT_IO_CMD_IPADD : NETAGENT_IO_CMD_IPDEL;
result = 99;
//confirmIpAddOrDel(interfaceId, cmd, result, NETAGENT_IO_ADDR_TYPE_IPv6, addrV6_, ipv6PrefixLength);
- confirmIpAddOrDelToMd(getTransIntfId(interfaceId), cmd, result, NETAGENT_IO_ADDR_TYPE_IPv6, addrV6_, ipv6PrefixLength);
+ confirmIpAddOrDelToMd(getTransIntfId(interfaceId), cmd, result, NETAGENT_IO_ADDR_TYPE_IPv6, addrV6_, ipv6PrefixLength, m_wait_v6_sim_id);
} else {
//confirmIpUpdate(interfaceId, NETAGENT_IO_ADDR_TYPE_IPv6, addrV6_, ipv6PrefixLength);
confirmIpUpdateToMd(getTransIntfId(interfaceId),
NETAGENT_IO_ADDR_TYPE_IPv6,
addrV6_,
- INVALID_IPV6_PREFIX_LENGTH);
+ INVALID_IPV6_PREFIX_LENGTH, m_wait_v6_sim_id);
}
if (m_pRouteHandler->setLastReqInfo(pReqInfo->pNetAgentCmdObj) != NETLINK_RET_SUCCESS) {
@@ -1784,7 +1794,7 @@
}
} else if (action == ACTION_ADDR_REMOVED && isNoRA(address, &flag)) {
//confirmNoRA(interfaceId, flag);
- confirmNoRaToMd(getTransIntfId(interfaceId), flag);
+ confirmNoRaToMd(getTransIntfId(interfaceId), flag, m_wait_v6_sim_id);
}
}
@@ -1963,6 +1973,9 @@
unsigned int addrV4_;
unsigned int addrV6_[4];
int log_enable = getCfgValue("enable_sensitive_log");
+ int sim_id = 0;
+
+ NA_GET_SIM_ID(pReqInfo->pNetAgentCmdObj, &sim_id);
if (NA_GET_IF_ID(pReqInfo->pNetAgentCmdObj, &interfaceId) != NETAGENT_IO_RET_SUCCESS) {
NA_LOG_E("[%s] fail to get interface id", __FUNCTION__);
@@ -2076,7 +2089,7 @@
// NETAGENT_IO_ADDR_TYPE_IPv4,
// &addrV4_,
// INVALID_IPV6_PREFIX_LENGTH);
- confirmIpUpdateToMd(getTransIntfId(interfaceId), NETAGENT_IO_ADDR_TYPE_IPv4, &addrV4_, INVALID_IPV6_PREFIX_LENGTH);
+ confirmIpUpdateToMd(getTransIntfId(interfaceId), NETAGENT_IO_ADDR_TYPE_IPv4, &addrV4_, INVALID_IPV6_PREFIX_LENGTH, sim_id);
break;
default:
// No address, shall not go to here.
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.h b/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.h
old mode 100644
new mode 100755
index dbc2f35..1e43e54
--- a/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.h
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/NetAgentService.h
@@ -163,6 +163,7 @@
#define NA_GET_ADDR_V4(a, b) netagent_io_get_addr_v4(a, b)
#define NA_GET_ADDR_V6(a, b) netagent_io_get_addr_v6(a, b)
#define NA_GET_IP_CHANGE_REASON(a, b) netagent_io_get_ip_change_reason(a, b)
+#define NA_GET_SIM_ID(a, b) netagent_io_get_sim_id(a, b)
#define NA_GET_PDN_HO_INFO(a, b) netagent_io_get_pdnho_info(a, b)
//#define NA_FLUSH_IPSEC_POLICY(a, b) netagent_io_flush_ipsec_policy(a, b)
#define NA_GET_NAPTR(a, b) netagent_io_get_naptr(a, b)
@@ -440,6 +441,7 @@
std::map<int, int> m_rsvnFdMap;
bool isMultiHomingFeatureSupport;
+ int m_wait_v6_sim_id;
};
#endif /* __NET_AGENT_SERVICE_H__ */
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/nautils/common/ioutils/netagent_io.c b/src/telephonyware/3.0/netagent/src/libnetagent/nautils/common/ioutils/netagent_io.c
old mode 100644
new mode 100755
index 915dfa3..b4b379a
--- a/src/telephonyware/3.0/netagent/src/libnetagent/nautils/common/ioutils/netagent_io.c
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/nautils/common/ioutils/netagent_io.c
@@ -467,6 +467,20 @@
}
int
+netagent_io_get_sim_id(void *co, int *sim_id) {
+ netagent_io_cmd_obj_t *cmd_obj = co;
+
+ if (!cmd_obj) {
+ ErrMsg("obj is NULL");
+ return NETAGENT_IO_RET_GENERIC_FAILURE;
+ }
+
+ *sim_id = cmd_obj->sim_id;
+ return NETAGENT_IO_RET_SUCCESS;
+}
+
+
+int
netagent_io_get_cmd_type(void *co, netagent_io_cmd_e *cmd) {
netagent_io_cmd_obj_t *cmd_obj = co;
diff --git a/src/telephonyware/3.0/netagent/src/libnetagent/nautils/include/ioutils/netagent_io.h b/src/telephonyware/3.0/netagent/src/libnetagent/nautils/include/ioutils/netagent_io.h
old mode 100644
new mode 100755
index 6c8e6e0..59c7ef9
--- a/src/telephonyware/3.0/netagent/src/libnetagent/nautils/include/ioutils/netagent_io.h
+++ b/src/telephonyware/3.0/netagent/src/libnetagent/nautils/include/ioutils/netagent_io.h
@@ -213,6 +213,7 @@
unsigned int trans_intf_id;
unsigned int cmd;
char* reason;
+ int sim_id;
union {
netagent_io_ifst_parameter_t ifst; // cmd = NETAGENT_IO_CMD_IFST
netagent_io_mtu_parameter_t mtu; // cmd = NETAGENT_IO_CMD_SETMTU
@@ -266,6 +267,7 @@
int netagent_io_get_if_id(void *co, unsigned int *if_id);
int netagent_io_get_ip_change_reason(void *co, char **reason);
+int netagent_io_get_sim_id(void *co, int* sim_id);
int netagent_io_get_cmd_type(void *co, netagent_io_cmd_e *cmd);
int netagent_io_get_addr_type(void *co, netagent_io_addr_type_e *addr_type);
int netagent_io_get_mtu_size(void *co, unsigned int *mtu_size);