[Feature][API-1578][DATA]Added DATA packet filtering between the AP and the MODEM
Only Configure: Yes
Affected branch: MR3.0-Merge-v2.0-GSW
Affected module: Data
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No
Change-Id: Ie16d9fef020e1f8b58e6e14900a53c35aed87974
diff --git a/common_src/framework/lynq-ril-service/src/commands.h b/common_src/framework/lynq-ril-service/src/commands.h
index 115e16d..8a5f736 100755
--- a/common_src/framework/lynq-ril-service/src/commands.h
+++ b/common_src/framework/lynq-ril-service/src/commands.h
@@ -57,6 +57,11 @@
{"RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD",syncDataSettingsToMd, "sync data settings to modem", RIL_REQUEST_SYNC_DATA_SETTINGS_TO_MD},
{"RIL_REQUEST_MODIFY_APN",modifyApnRecord, "modify apn db", RIL_REQUEST_MODIFY_APN},
{"RIL_REQUEST_RESET_APN",resetApnRecord, "reset apn db", RIL_REQUEST_RESET_APN},
+ {"RIL_REQUEST_SET_IP_TUPLE_FILTER",setIpFilter,"set ip filter", RIL_REQUEST_SET_IP_TUPLE_FILTER},
+ {"RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE",setIpFilterMode,"set ip filter mode",RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE},
+ {"RIL_REQUEST_GET_IP_TUPLE_FILTER",getIpFilter,"get ip filter",RIL_REQUEST_GET_IP_TUPLE_FILTER},
+ {"RIL_REQUEST_DEL_IP_TUPLE_FILTER",delIpFilter,"delete ip filter",RIL_REQUEST_DEL_IP_TUPLE_FILTER},
+
//CC
{"RIL_REQUEST_DIAL",dial,"dial",RIL_REQUEST_DIAL},
{"RIL_REQUEST_HANGUP",hangupConnection,"hangup",RIL_REQUEST_HANGUP},
diff --git a/common_src/framework/lynq-ril-service/src/data/data.cpp b/common_src/framework/lynq-ril-service/src/data/data.cpp
index 678568d..23103a1 100755
--- a/common_src/framework/lynq-ril-service/src/data/data.cpp
+++ b/common_src/framework/lynq-ril-service/src/data/data.cpp
@@ -1698,3 +1698,77 @@
resetApnDB();
return 0;
}
+
+int setIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+ RLOGD("%s,argc = %d,argv = %d", __FUNCTION__,argc,atoi(argv[1]));
+ if (argc < 2){
+ RLOGD("%s parameters number isn't enough", __FUNCTION__);
+ return -1;
+ }
+ int cid = atoi(argv[1]);
+ android::Parcel p;
+ size_t pos = p.dataPosition();
+ p.writeInt32(1);
+ p.writeInt32(cid);
+ p.setDataPosition(pos);
+ pRI->pCI->dispatchFunction(p, pRI);
+ RLOGD("dispatchFunction done");
+ return 0;
+}
+
+int setIpFilterMode(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+ RLOGD("%s,argc = %d,argv = %d", __FUNCTION__,argc,atoi(argv[1]));
+ if (argc < 3){
+ RLOGD("%s parameters number isn't enough", __FUNCTION__);
+ return -1;
+ }
+ int cid = atoi(argv[1]);
+ int operation = atoi(argv[2]);
+ android::Parcel p;
+ size_t pos = p.dataPosition();
+ p.writeInt32(2);
+ p.writeInt32(cid);
+ p.writeInt32(operation);
+ p.setDataPosition(pos);
+ pRI->pCI->dispatchFunction(p, pRI);
+ RLOGD("dispatchFunction done");
+ return 0;
+}
+
+int getIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+ if (argc < 2){
+ RLOGD("%s parameters number isn't enough", __FUNCTION__);
+ return -1;
+ }
+ RLOGD("%s,argc = %d,argv = %d", __FUNCTION__,argc,atoi(argv[1]));
+ int cid = atoi(argv[1]);
+ android::Parcel p;
+ size_t pos = p.dataPosition();
+ p.writeInt32(1);
+ p.writeInt32(cid);
+ p.setDataPosition(pos);
+ pRI->pCI->dispatchFunction(p, pRI);
+ RLOGD("dispatchFunction done");
+ return 0;
+}
+
+int delIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+ if (argc < 2){
+ RLOGD("%s parameters number isn't enough", __FUNCTION__);
+ return -1;
+ }
+ RLOGD("%s,argc = %d,argv = %d", __FUNCTION__,argc,atoi(argv[1]));
+ int cid = atoi(argv[1]);
+ android::Parcel p;
+ size_t pos = p.dataPosition();
+ p.writeInt32(1);
+ p.writeInt32(cid);
+ p.setDataPosition(pos);
+ pRI->pCI->dispatchFunction(p, pRI);
+ RLOGD("dispatchFunction done");
+ return 0;
+}
diff --git a/common_src/framework/lynq-ril-service/src/data/data.h b/common_src/framework/lynq-ril-service/src/data/data.h
index 657f8be..e526661 100755
--- a/common_src/framework/lynq-ril-service/src/data/data.h
+++ b/common_src/framework/lynq-ril-service/src/data/data.h
@@ -56,4 +56,12 @@
int syncDataSettings(RIL_SOCKET_ID socket_id);
int modifyApnRecord(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
int resetApnRecord(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+int setIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+int setIpFilterMode(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+int getIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+int delIpFilter(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+
+
+
+
#endif
diff --git a/common_src/framework/lynq-ril-service/src/mtk_ril_commands.h b/common_src/framework/lynq-ril-service/src/mtk_ril_commands.h
index 4b10fce..50cb474 100755
--- a/common_src/framework/lynq-ril-service/src/mtk_ril_commands.h
+++ b/common_src/framework/lynq-ril-service/src/mtk_ril_commands.h
@@ -97,3 +97,7 @@
{RIL_REQUEST_GSM_SET_BROADCAST_LANGUAGE, dispatchString, responseVoid },
{RIL_REQUEST_QUERY_SIM_RETRY_COUNT, dispatchVoid, responseInts },
{RIL_REQUEST_QUERY_EID, dispatchVoid, responseString },
+{RIL_REQUEST_SET_IP_TUPLE_FILTER, dispatchInts, responseVoid},
+{RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE, dispatchInts, responseVoid},
+{RIL_REQUEST_GET_IP_TUPLE_FILTER, dispatchInts, responseVoid},
+{RIL_REQUEST_DEL_IP_TUPLE_FILTER, dispatchInts, responseVoid},
\ No newline at end of file
diff --git a/common_src/framework/lynq-ril-service/src/ril.cpp b/common_src/framework/lynq-ril-service/src/ril.cpp
index 9ae636a..9b5fcc7 100755
--- a/common_src/framework/lynq-ril-service/src/ril.cpp
+++ b/common_src/framework/lynq-ril-service/src/ril.cpp
@@ -4441,6 +4441,17 @@
lynq_send_result_already();
break;
}
+ case RIL_REQUEST_GET_IP_TUPLE_FILTER:
+ {
+ int numInts = responselen / sizeof(int);
+ if(numInts > 0) {
+ int *p_int = (int *) response;
+ p.writeInt32(p_int[0]);
+ p.writeInt32(p_int[1]);
+ } else {
+ RLOGD("RIL_REQUEST_GET_IP_TUPLE_FILTER response numInts: %d", numInts);
+ }
+ }
default:
break;
}
@@ -5308,6 +5319,10 @@
case LYNQ_REQUEST_GET_RTP_PARAM:return "LYNQ_REQUEST_GET_RTP_PARAM";
case LYNQ_REQUEST_SET_CALL_RTP_SSRC:return "LYNQ_REQUEST_SET_CALL_RTP_SSRC";
case LYNQ_REQUEST_GET_CALL_RTP_SSRC:return "LYNQ_REQUEST_GET_CALL_RTP_SSRC";
+ case RIL_REQUEST_SET_IP_TUPLE_FILTER:return "RIL_REQUEST_SET_IP_TUPLE_FILTER";
+ case RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE:return "RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE";
+ case RIL_REQUEST_GET_IP_TUPLE_FILTER:return "RIL_REQUEST_GET_IP_TUPLE_FILTER";
+ case RIL_REQUEST_DEL_IP_TUPLE_FILTER:return "RIL_REQUEST_DEL_IP_TUPLE_FILTER";
/*warren add for t800 ril service 2022/1/22 end*/
default: return "<unknown request>";
}
@@ -5590,6 +5605,10 @@
case LYNQ_REQUEST_GET_RTP_PARAM:return "LYNQ_REQUEST_GET_RTP_PARAM";
case LYNQ_REQUEST_SET_CALL_RTP_SSRC:return "LYNQ_REQUEST_SET_CALL_RTP_SSRC";
case LYNQ_REQUEST_GET_CALL_RTP_SSRC:return "LYNQ_REQUEST_GET_CALL_RTP_SSRC";
+ case RIL_REQUEST_SET_IP_TUPLE_FILTER:return "RIL_REQUEST_SET_IP_TUPLE_FILTER";
+ case RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE:return "RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE";
+ case RIL_REQUEST_GET_IP_TUPLE_FILTER:return "RIL_REQUEST_GET_IP_TUPLE_FILTER";
+ case RIL_REQUEST_DEL_IP_TUPLE_FILTER:return "RIL_REQUEST_DEL_IP_TUPLE_FILTER";
/*warren add for t800 ril service 2022/1/22 end*/
default: return "<unknown request>";
}
diff --git a/common_src/framework/lynq-ril-service/src/ril_commands.h b/common_src/framework/lynq-ril-service/src/ril_commands.h
index d90c8ba..3d381f3 100755
--- a/common_src/framework/lynq-ril-service/src/ril_commands.h
+++ b/common_src/framework/lynq-ril-service/src/ril_commands.h
@@ -154,3 +154,7 @@
{RIL_REQUEST_STOP_LCE, dispatchVoid, responseLceStatus},
{RIL_REQUEST_PULL_LCEDATA, dispatchVoid, responseLceData},
{RIL_REQUEST_GET_ACTIVITY_INFO, dispatchVoid, responseActivityData},
+ {RIL_REQUEST_SET_IP_TUPLE_FILTER, dispatchInts, responseInts},
+ {RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE, dispatchInts, responseInts},
+ {RIL_REQUEST_GET_IP_TUPLE_FILTER, dispatchInts, responseInts},
+ {RIL_REQUEST_DEL_IP_TUPLE_FILTER, dispatchInts, responseInts},
diff --git a/common_src/lib/liblynq-data/include/libdata/lynq_data.h b/common_src/lib/liblynq-data/include/libdata/lynq_data.h
index fe1a7d1..983cae5 100755
--- a/common_src/lib/liblynq-data/include/libdata/lynq_data.h
+++ b/common_src/lib/liblynq-data/include/libdata/lynq_data.h
@@ -72,6 +72,10 @@
void decode_data_log(char str[], int n);
//xy.he@20240516 add for encode infomation end
+int lynq_set_ip_filter(int cid);
+int lynq_set_ip_filter_mode(int cid,int operation);
+int lynq_get_ip_filter(int cid,int *filter_count, int *filter_mode);
+int lynq_del_ip_filter(int cid);
#ifdef __cplusplus
}
#endif
diff --git a/common_src/lib/liblynq-data/lynq_data.cpp b/common_src/lib/liblynq-data/lynq_data.cpp
index d04533a..2a14545 100755
--- a/common_src/lib/liblynq-data/lynq_data.cpp
+++ b/common_src/lib/liblynq-data/lynq_data.cpp
@@ -2183,4 +2183,199 @@
RLOGD("decode_data_log: %s", str);
}
-//xy.he@20240524 modify for T8TSK-338 end
\ No newline at end of file
+//xy.he@20240524 modify for T8TSK-338 end
+
+
+int lynq_set_ip_filter(int cid)
+{
+ Parcel *p =NULL;
+ lynq_client_t client;
+ int resp_type = -1;
+ int token;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+
+ client.uToken = get_utoken();
+ client.request = LYNQ_SET_IP_TUPLE_FILTER;//RIL_REQUEST_SET_IP_TUPLE_FILTER 2195
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d",(cid / 100));
+ LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ //get_response(lynq_client_sockfd,p);
+ error = wait_response(lynq_client_sockfd,p,client.uToken);
+ if(error!=0)
+ {
+ LYERRLOG("wait_response fail,ret:%d",error);
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return error;
+ }
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ if(JumpHeader(p,&resp_type,&client.uToken,&request,&slot_id,&error)!=0)
+ {
+ LYERRLOG("JumpHeader fail");
+ return -1;
+ }
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,client.uToken,request,slot_id,error);
+ free_parcel(p);
+ return error;
+}
+
+int lynq_set_ip_filter_mode(int cid,int operation)
+{
+ Parcel *p =NULL;
+ lynq_client_t client;
+ int resp_type = -1;
+ int token;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+
+ client.uToken = get_utoken();
+ client.request = LYNQ_SET_IP_TUPLE_FILTER_MODE;//RIL_REQUEST_SET_IP_TUPLE_FILTER_MODE 2196
+ client.paramLen = 2;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d %d",(cid / 100),operation);
+
+ LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ //get_response(lynq_client_sockfd,p);
+ error = wait_response(lynq_client_sockfd,p,client.uToken);
+ if(error!=0)
+ {
+ LYERRLOG("wait_response fail,ret:%d",error);
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return error;
+ }
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ if(JumpHeader(p,&resp_type,&client.uToken,&request,&slot_id,&error)!=0)
+ {
+ LYERRLOG("JumpHeader fail");
+ return -1;
+ }
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,client.uToken,request,slot_id,error);
+ free_parcel(p);
+ return error;
+
+
+}
+
+int lynq_get_ip_filter(int cid,int *filter_count, int *filter_mode)
+{
+ Parcel *p =NULL;
+ lynq_client_t client;
+ int resp_type = -1;
+ int token;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+
+ client.uToken = get_utoken();
+ client.request = LYNQ_GET_IP_TUPLE_FILTER;//RIL_REQUEST_GET_IP_TUPLE_FILTER 2197
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d",(cid / 100));
+
+ LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ //get_response(lynq_client_sockfd,p);
+ error = wait_response(lynq_client_sockfd,p,client.uToken);
+ if(error!=0)
+ {
+ LYERRLOG("wait_response fail,ret:%d",error);
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return error;
+ }
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ if(JumpHeader(p,&resp_type,&client.uToken,&request,&slot_id,&error)!=0)
+ {
+ LYERRLOG("JumpHeader fail");
+ return -1;
+ }
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,client.uToken,request,slot_id,error);
+ if(error == 0)
+ {
+ p->readInt32(filter_count);
+ p->readInt32(filter_mode);
+ }
+ free_parcel(p);
+ return error;
+
+
+}
+
+int lynq_del_ip_filter(int cid)
+{
+ Parcel *p =NULL;
+ lynq_client_t client;
+ int resp_type = -1;
+ int token;
+ int request = -1;
+ int slot_id = -1;
+ int error = -1;
+ int version =0;
+ int num = 0;
+
+ client.uToken = get_utoken();
+ client.request = LYNQ_DEL_IP_TUPLE_FILTER;//RIL_REQUEST_DEL_IP_TUPLE_FILTER 2198
+ client.paramLen = 1;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ sprintf(client.param,"%d",(cid / 100));
+
+ LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request(lynq_client_sockfd,&client)==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ //get_response(lynq_client_sockfd,p);
+ error = wait_response(lynq_client_sockfd,p,client.uToken);
+ if(error!=0)
+ {
+ LYERRLOG("wait_response fail,ret:%d",error);
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return error;
+ }
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ if(JumpHeader(p,&resp_type,&client.uToken,&request,&slot_id,&error)!=0)
+ {
+ LYERRLOG("JumpHeader fail");
+ return -1;
+ }
+ LYINFLOG("resp_type=%d,uToken=%d,request=%d,slot_id=%d,error_code=%d",resp_type,client.uToken,request,slot_id,error);
+ free_parcel(p);
+ return error;
+
+
+}
\ No newline at end of file
diff --git a/common_src/lib/liblynq-data/lynq_data_urc.h b/common_src/lib/liblynq-data/lynq_data_urc.h
index 11aeb08..01edc34 100755
--- a/common_src/lib/liblynq-data/lynq_data_urc.h
+++ b/common_src/lib/liblynq-data/lynq_data_urc.h
@@ -22,6 +22,10 @@
#define LYNQ_URC_MODIFY_APNDB (LYNQ_URC_VENDOR_BASE+4)
#define LYNQ_URC_RESET_APNDB (LYNQ_URC_VENDOR_BASE+5)
#define LYNQ_TELEPHONY_RESTART 3113
+#define LYNQ_SET_IP_TUPLE_FILTER 2195
+#define LYNQ_SET_IP_TUPLE_FILTER_MODE 2196
+#define LYNQ_GET_IP_TUPLE_FILTER 2197
+#define LYNQ_DEL_IP_TUPLE_FILTER 2198
typedef struct{
int resp_type;