@@ -44,6 +44,7 @@ static struct nne_value md_iface_parse_cid(struct nne_modem *modem, struct md_if
4444static struct nne_value md_iface_parse_oper (struct nne_modem * modem , struct md_iface_event * mie );
4545static struct nne_value md_iface_parse_ipaddr (struct nne_modem * modem , struct md_iface_event * mie );
4646static struct nne_value md_iface_parse_dev_state (struct nne_modem * modem , struct md_iface_event * mie );
47+ static struct nne_value md_iface_parse_imsi (struct nne_modem * modem , struct md_iface_event * mie );
4748
4849static struct nne_metadata_descr NNE_METADATA_DESCR [] = {
4950 { NNE_IDX_MODE , "mode" , 0 , NNE_TYPE_UINT8 , IFACE_EVENT_MODE_CHANGE , md_iface_parse_mode },
@@ -57,7 +58,8 @@ static struct nne_metadata_descr NNE_METADATA_DESCR[] = {
5758 { NNE_IDX_CID , "cid" , 0 , NNE_TYPE_STRING , IFACE_EVENT_LOC_CHANGE , md_iface_parse_cid },
5859 { NNE_IDX_OPER , "oper" , 0 , NNE_TYPE_UINT32 , IFACE_EVENT_NW_MCCMNC_CHANGE , md_iface_parse_oper },
5960 { NNE_IDX_IPADDR , "ipaddr" , 0 , NNE_TYPE_STRING , IFACE_EVENT_IP_ADDR_CHANGE , md_iface_parse_ipaddr },
60- { NNE_IDX_DEV_STATE , "device_state" , 0 , NNE_TYPE_UINT8 , IFACE_EVENT_DEV_STATE , md_iface_parse_dev_state }
61+ { NNE_IDX_DEV_STATE , "device_state" , 0 , NNE_TYPE_UINT8 , IFACE_EVENT_DEV_STATE , md_iface_parse_dev_state },
62+ { NNE_IDX_IMSI , "imsi" , 0 , NNE_TYPE_STRING , 0 , md_iface_parse_imsi }
6163};
6264
6365#define NNE_METADATA_DESCR_LEN (sizeof(NNE_METADATA_DESCR) / sizeof(struct nne_metadata_descr))
@@ -269,6 +271,19 @@ static struct nne_value md_iface_parse_dev_state(struct nne_modem *modem, struct
269271 return value ;
270272}
271273
274+ static struct nne_value md_iface_parse_imsi (struct nne_modem * modem , struct md_iface_event * mie )
275+ {
276+ struct nne_value value ;
277+ value .type = NNE_TYPE_STRING ;
278+ if (mie -> imsi != NULL ) {
279+ value .u .v_str = strdup (mie -> imsi );
280+ }
281+ else {
282+ value .type = NNE_TYPE_NULL ;
283+ }
284+ return value ;
285+ }
286+
272287static uint8_t md_nne_handle_gps_event (struct md_writer_nne * mwn ,
273288 struct md_gps_event * mge )
274289{
@@ -659,6 +674,7 @@ static uint32_t md_find_network_id(uint32_t imsi_mccmnc, const char *iccid)
659674 }
660675 break ;
661676 case 26001 :
677+ case 26006 :
662678 network_id = 9 ;
663679 break ;
664680 }
@@ -686,6 +702,7 @@ static void md_nne_handle_iface_event(struct md_writer_nne *mwn,
686702 "ip_addr=%s, "
687703 "ifname=%s, "
688704 "iccid=%s, "
705+ "imsi=%s, "
689706 "imsi_mccmnc=%d, "
690707 "nw_mccmnc=%d, "
691708 "cid=%d, "
@@ -702,6 +719,7 @@ static void md_nne_handle_iface_event(struct md_writer_nne *mwn,
702719 mie -> ip_addr ,
703720 mie -> ifname ,
704721 mie -> iccid ,
722+ mie -> imsi ,
705723 mie -> imsi_mccmnc ,
706724 mie -> nw_mccmnc ,
707725 mie -> cid ,
@@ -775,7 +793,7 @@ static void md_nne_handle_iface_event(struct md_writer_nne *mwn,
775793
776794 // Process metadata; only related to this iface event
777795 for (i = 0 ; i < NNE_METADATA_DESCR_LEN ; i ++ ) {
778- if (mie -> event_param == NNE_METADATA_DESCR [i ].event ) {
796+ if (NNE_METADATA_DESCR [ i ]. event > 0 && mie -> event_param == NNE_METADATA_DESCR [i ].event ) {
779797 md_nne_process_iface_event (mwn , & (NNE_METADATA_DESCR [i ]), modem , mie , NNE_MESSAGE_SOURCE_REPORT );
780798 }
781799 }
0 commit comments