diff --git a/CHANGELOG.md b/CHANGELOG.md index bb6c5fa4..56d81fda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,17 @@ # 版本发布日志 -## 2.2409.1-20240925 +## 2.2409.4-20240927 -多租户修改如下: +- 新增 跟踪任务pcap文件获取接口 +- 优化 socket消息接收,跟踪任务推送ws +- 修复 历史告警同步判断存在错误 +- 优化 redis数据scan数调整1000 +- 修复 SMF在线订阅用户列表接口地址错误 +- 修复 多语言SMSC原因0表示未知 +- 新增 网元版本列表主动检查服务状态的版本 +- 更新 UDM用户数据表字段 -- ims在线用户显示异常 -- admin和tenant角色只能单选 - -合并主线版本修改如下: - ---## 2.2409.3-20240920 +## 2.2409.3-20240920 - 修复 字典多语言序号重复问题 - 更新 UDM用户数据表,SMSC参数配置属性,字典数据和跟踪相关表 diff --git a/config/etc/default/restconf.yaml b/config/etc/default/restconf.yaml index eee4d267..f17a2081 100644 --- a/config/etc/default/restconf.yaml +++ b/config/etc/default/restconf.yaml @@ -135,7 +135,8 @@ omc: # TLS Skip verify: true/false # email/sms # smProxy: sms(Short Message Service)/smsc(SMS Centre) -# dataCoding: 0:UCS2, 1:ASCII, 2:LATIN1 +# dataCoding: 0:GSM7BIT, 1:ASCII, 2:BINARY8BIT1, 3:LATIN1, +# 4:BINARY8BIT2, 6:CYRILLIC, 7:HEBREW, 8:UCS2 alarm: alarmEmailForward: enable: true diff --git a/config/param/omc_param_config.yaml b/config/param/omc_param_config.yaml index b2c96186..cddb3c1b 100644 --- a/config/param/omc_param_config.yaml +++ b/config/param/omc_param_config.yaml @@ -69,7 +69,7 @@ omc: access: "rw" filter: "" display: "Mobile List" - comment: "" + comment: "Multiple mobile separated by commas" - name: "smscAddr" type: "string" value: "" @@ -100,9 +100,9 @@ omc: comment: "" - name: "dataCoding" type: "enum" - value: "ASCII" + value: "GSM7BIT" access: "rw" - filter: '{"0":"UCS2","1":"ASCII","2":"LATIN1"}' + filter: '{"0":"GSM7BIT","1":"ASCII","2":"BINARY8BIT1","3":"LATIN1","4":"BINARY8BIT2","6":"CYRILLIC","7":"HEBREW","8":"UCS2"}' display: "Data Coding" comment: "Short message coding type" - name: "serviceNumber" @@ -111,4 +111,4 @@ omc: access: "rw" filter: "3~20" display: "Service Number" - comment: "It is the source address and length is between 3 and 20" \ No newline at end of file + comment: "It is the source address, the length is between 3 and 20" \ No newline at end of file diff --git a/database/common/ne_config.sql b/database/common/ne_config.sql index 20a5febb..de0d585e 100644 --- a/database/common/ne_config.sql +++ b/database/common/ne_config.sql @@ -112,7 +112,7 @@ INSERT INTO `ne_config` VALUES (82, 'CBC', 'mmeProfile', 'MME Profile', 'array', -- OMC parameter config INSERT INTO `ne_config` VALUES (83, 'OMC', 'alarmEmailForward', 'Alarm Email Forward Interface', 'list', '[{\"access\":\"rw\",\"comment\":\"Is it enabled forward alarm with Email interface\",\"display\":\"Enable\",\"filter\":\"true;false\",\"name\":\"enable\",\"type\":\"bool\",\"value\":\"true\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Email List\",\"filter\":\"\",\"name\":\"emailList\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"Email SMTP server\",\"display\":\"SMTP Server\",\"filter\":\"\",\"name\":\"smtp\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Port\",\"filter\":\"0~65535\",\"name\":\"port\",\"type\":\"int\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"User\",\"filter\":\"\",\"name\":\"user\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Password\",\"filter\":\"\",\"name\":\"password\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"If skip TLS verify (true/false)\",\"display\":\"TLS Skip Verify\",\"filter\":\"true;false\",\"name\":\"tlsSkipVerify\",\"type\":\"bool\",\"value\":\"true\"}]', 3, '', 1725505025649); -INSERT INTO `ne_config` VALUES (84, 'OMC', 'alarmSMSForward', 'Alarm SMS Forward Interface', 'list', '[{\"access\":\"rw\",\"comment\":\"Is it enabled forward alarm with SMS interface\",\"display\":\"Enable\",\"filter\":\"true;false\",\"name\":\"enable\",\"type\":\"bool\",\"value\":\"true\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Mobile List\",\"filter\":\"\",\"name\":\"mobileList\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"The SMSC SMPP Address\",\"display\":\"SMSC Address\",\"filter\":\"\",\"name\":\"smscAddr\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"System ID\",\"filter\":\"\",\"name\":\"systemID\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Password\",\"filter\":\"\",\"name\":\"password\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"System Type\",\"filter\":\"\",\"name\":\"systemType\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"Short message coding type\",\"display\":\"Data Coding\",\"filter\":\"{\\\"0\\\":\\\"UCS2\\\",\\\"1\\\":\\\"ASCII\\\",\\\"2\\\":\\\"LATIN1\\\"}\",\"name\":\"dataCoding\",\"type\":\"enum\",\"value\":\"ASCII\"},{\"access\":\"rw\",\"comment\":\"It is the source address and length between 3 and 20\",\"display\":\"Service Number\",\"filter\":\"3~20\",\"name\":\"serviceNumber\",\"type\":\"string\",\"value\":\"OMC\"}]', 4, '', 1726799142528); +INSERT INTO `ne_config` VALUES (84, 'OMC', 'alarmSMSForward', 'Alarm SMS Forward Interface', 'list', '[{\"access\":\"rw\",\"comment\":\"Is it enabled forward alarm with SMS interface\",\"display\":\"Enable\",\"filter\":\"true;false\",\"name\":\"enable\",\"type\":\"bool\",\"value\":\"true\"},{\"access\":\"rw\",\"comment\":\"Multiple mobile separated by commas\",\"display\":\"Mobile List\",\"filter\":\"\",\"name\":\"mobileList\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"The SMSC SMPP Address\",\"display\":\"SMSC Address\",\"filter\":\"\",\"name\":\"smscAddr\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"System ID\",\"filter\":\"\",\"name\":\"systemID\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"Password\",\"filter\":\"\",\"name\":\"password\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"\",\"display\":\"System Type\",\"filter\":\"\",\"name\":\"systemType\",\"type\":\"string\",\"value\":\"\"},{\"access\":\"rw\",\"comment\":\"Short message coding type\",\"display\":\"Data Coding\",\"filter\":\"{\\\"0\\\":\\\"GSM7BIT\\\",\\\"1\\\":\\\"ASCII\\\",\\\"2\\\":\\\"BINARY8BIT1\\\",\\\"3\\\":\\\"LATIN1\\\",\\\"4\\\":\\\"BINARY8BIT2\\\",\\\"6\\\":\\\"CYRILLIC\\\",\\\"7\\\":\\\"HEBREW\\\",\\\"8\\\":\\\"UCS2\\\"}\",\"name\":\"dataCoding\",\"type\":\"enum\",\"value\":\"GSM7BIT\"},{\"access\":\"rw\",\"comment\":\"It is the source address, the length is between 3 and 20\",\"display\":\"Service Number\",\"filter\":\"3~20\",\"name\":\"serviceNumber\",\"type\":\"string\",\"value\":\"OMC\"}]', 4, '', 1727664057261); -- 更新 SMSC 配置 20240920 INSERT INTO `ne_config` VALUES (90, 'SMSC', 'system', 'System', 'list', '[{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"CDR Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"cdrFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"SM Validity\",\"filter\":\"0-2147483647\",\"name\":\"smValidity\",\"type\":\"int\",\"value\":\"259200\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Log Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"logFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Enable or disable resend pending SMS to unattainable local users.\",\"display\":\"Local Polling Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"localPollingFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Enable or disable resend pending SMS to unattainable outbound roaming users.\",\"display\":\"Local Roaming Out Polling Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"localRoamingOutPollingFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Enable or disable resend pending SMS to unattainable inbound roaming users.\",\"display\":\"Visitor Roaming In Polling Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"visitorRoamingInPollingFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Enable or disable resend pending SMS to other unattainable users.\",\"display\":\"Other Polling Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"otherPollingFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Define the maximum port number that the queue of pending SMS may grow to.\",\"display\":\"Polling Number\",\"filter\":\"0-64\",\"name\":\"pollingNumber\",\"type\":\"int\",\"value\":\"64\"},{\"access\":\"read-write\",\"comment\":\"Specify the priority parameter of SM_RP_PRI. true = High; false = Low.\",\"display\":\"Priority Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"priorityFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"Enable or disable TP-Reply-Path parameter in the SMS-DELIVER data unit.\",\"display\":\"TP Reply Path Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"tpReplyPathFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"SMSC Domain\",\"filter\":\"0~16\",\"name\":\"smscDomain\",\"type\":\"string\",\"value\":\"0.0.0.0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"CSFB VoLTE Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"csfbVolteFlag\",\"type\":\"bool\",\"value\":\"1\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Camel Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"camelFlag\",\"type\":\"bool\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"SCF Address\",\"filter\":\"0~16\",\"name\":\"scfAddress\",\"type\":\"string\",\"value\":\"0.0.0.0\"},{\"access\":\"read-write\",\"comment\":\"If add plus then set false\",\"display\":\"MT Id Format Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"mtIdFormatFlag\",\"type\":\"bool\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"enable mcast sms\",\"display\":\"Mcast Flag\",\"filter\":\"{\\\"0\\\":\\\"false\\\",\\\"1\\\":\\\"true\\\"}\",\"name\":\"mcastFlag\",\"type\":\"bool\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Log Level\",\"filter\":\"{\\\"0\\\":\\\"none\\\",\\\"1\\\":\\\"error\\\",\\\"2\\\":\\\"debug\\\"}\",\"name\":\"logLevel\",\"type\":\"enum\",\"value\":\"0\"},{\"access\":\"read-write\",\"comment\":\"The MB sizeof log file\",\"display\":\"Log Size\",\"filter\":\"1-1000\",\"name\":\"logSize\",\"type\":\"int\",\"value\":\"200\"},{\"access\":\"read-write\",\"comment\":\"The number of log file\",\"display\":\"Log Number\",\"filter\":\"1-20\",\"name\":\"logNum\",\"type\":\"int\",\"value\":\"10\"},{\"access\":\"read-write\",\"comment\":\"\",\"display\":\"Log Directory\",\"filter\":\"0~128\",\"name\":\"logDir\",\"type\":\"string\",\"value\":\"/var/log/\"}]', 1, '', 1726802301029); diff --git a/database/install/sys_dict_data1_i18n_zh.sql b/database/install/sys_dict_data1_i18n_zh.sql index 5fb94e44..90f07fc7 100644 --- a/database/install/sys_dict_data1_i18n_zh.sql +++ b/database/install/sys_dict_data1_i18n_zh.sql @@ -78,8 +78,8 @@ INSERT INTO `sys_dict_data` VALUES (1070, 1070, 'menu.ueUser.onlineIMS', 'IMS在 INSERT INTO `sys_dict_data` VALUES (1071, 1071, 'menu.ueUser.onlineUE', 'UE在线信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1072, 1072, 'menu.ueUser.base5G', '基站信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1073, 1073, 'menu.trace', '跟踪', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -INSERT INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -INSERT INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '信令分析', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '网元跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '网元跟踪数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1076, 1076, 'menu.trace.pcap', '信令抓包', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1077, 1077, 'menu.fault', '监控', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1078, 1078, 'menu.config.backupManageRemark', '备份管理菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -254,9 +254,9 @@ INSERT INTO `sys_dict_data` VALUES (1520, 1520, 'dictType.sys_yes_no_remark', ' INSERT INTO `sys_dict_data` VALUES (1521, 1521, 'dictType.sys_oper_type_remark', '操作类型列表', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1522, 1522, 'dictType.sys_common_status_remark', '登录状态列表', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1523, 1523, 'dictType.trace_type_remark', '跟踪类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- INSERT INTO `sys_dict_data` VALUES (1524, 1524, 'dictType.operation_log_type_remark', '操作日志类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -INSERT INTO `sys_dict_data` VALUES (1525, 1525, 'dictType.alarm_status_remark', '告警日志状态类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- INSERT INTO `sys_dict_data` VALUES (1526, 1526, 'dictType.security_log_type_remark', '安全日志类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (1524, 1524, 'dictType.alarm_status_remark', '告警日志状态类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (1525, 1525, 'menu.trace.tshark', '信令分析', 'i18n_zh', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (1526, 1526, 'menu.trace.wireshark', '信令跟踪', 'i18n_zh', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (1527, 1527, 'dictType.ne_version_status_remark', '网元软件版本状态', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1528, 1528, 'dictType.i18n_en_remark', 'Internationalization - English', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (1529, 1529, 'dictType.i18n_zh_remark', 'Internationalization - Chinese', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -656,7 +656,7 @@ INSERT INTO `sys_dict_data` VALUES (2145, 2145, 'menu.system.user.editPost', ' INSERT INTO `sys_dict_data` VALUES (2146, 2146, 'menu.dashboard.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1717051745866, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2147, 2147, 'log.operate.title.smscCDR', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2148, 2148, 'menu.trace.pcapFile', '信令抓包文件', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); --- INSERT INTO `sys_dict_data` VALUES (2149, 2149, 'dictData.udm_sub_cn_type.2', '4G', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2149, 2149, 'menu.trace.taskAnalyze', '跟踪数据分析', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); -- INSERT INTO `sys_dict_data` VALUES (2150, 2150, 'dictData.udm_sub_cn_type.3', '5G&4G', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2151, 2151, 'menu.system.setting.doc', '系统使用文档', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2152, 2152, 'menu.system.setting.official', '官网链接', 'i18n_zh', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); @@ -673,9 +673,9 @@ INSERT INTO `sys_dict_data` VALUES (2162, 2162, 'table.cdr_event_smf', '数据 INSERT INTO `sys_dict_data` VALUES (2163, 2163, 'table.cdr_event_smsc', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2164, 2164, 'menu.log.exportFile', '导出文件管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2165, 2165, 'menu.perf.kpiCReport', '自定义指标数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -INSERT INTO `sys_dict_data` VALUES (2166, 2166, 'menu.trace.taskHLR', '跟踪任务 HLR', 'i18n_zh', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2166, 2166, 'menu.trace.taskHLR', 'HLR 跟踪任务', 'i18n_zh', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2167, 2167, 'dictType.cdr_cause_code', 'CDR 响应原因代码类别类型', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); -INSERT INTO `sys_dict_data` VALUES (2168, 2168, 'dictData.cdr_cause_code.0', '其他', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (2168, 2168, 'dictData.cdr_cause_code.0', '未知错误', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2169, 2169, 'dictData.cdr_cause_code.8', '运营者要求禁止', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2170, 2170, 'dictData.cdr_cause_code.10', '呼叫禁止', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (2171, 2171, 'dictData.cdr_cause_code.21', '短信传输拒绝', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); diff --git a/database/install/sys_dict_data2_i18n_en.sql b/database/install/sys_dict_data2_i18n_en.sql index d095a8b7..2b09acca 100644 --- a/database/install/sys_dict_data2_i18n_en.sql +++ b/database/install/sys_dict_data2_i18n_en.sql @@ -78,8 +78,8 @@ INSERT INTO `sys_dict_data` VALUES (3070, 3070, 'menu.ueUser.onlineIMS', 'IMS On INSERT INTO `sys_dict_data` VALUES (3071, 3071, 'menu.ueUser.onlineUE', 'UE Online Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3072, 3072, 'menu.ueUser.base5G', 'Radio Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3073, 3073, 'menu.trace', 'Trace', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -INSERT INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'Trace Tasks', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, ''); -INSERT INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'Signaling Analysis', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, ''); +INSERT INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'NE Trace Task', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, ''); +INSERT INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'NE Trace Task Data', 'i18n_en', '', '', '1', 'supervisor', 1700000000000, NULL, 0, ''); INSERT INTO `sys_dict_data` VALUES (3076, 3076, 'menu.trace.pcap', 'Signaling Capture', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3077, 3077, 'menu.fault', 'Monitor', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3078, 3078, 'menu.config.backupManageRemark', 'Backup Management Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -254,9 +254,9 @@ INSERT INTO `sys_dict_data` VALUES (3520, 3520, 'dictType.sys_yes_no_remark', 'S INSERT INTO `sys_dict_data` VALUES (3521, 3521, 'dictType.sys_oper_type_remark', 'Operation type list', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3522, 3522, 'dictType.sys_common_status_remark', 'Login Status List', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3523, 3523, 'dictType.trace_type_remark', 'Trace Types', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- INSERT INTO `sys_dict_data` VALUES (3524, 3524, 'dictType.operation_log_type_remark', 'Operation log type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -INSERT INTO `sys_dict_data` VALUES (3525, 3525, 'dictType.alarm_status_remark', 'Alarm Log Status Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- INSERT INTO `sys_dict_data` VALUES (3526, 3526, 'dictType.security_log_type_remark', 'Security Log Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (3524, 3524, 'dictType.alarm_status_remark', 'Alarm Log Status Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +INSERT INTO `sys_dict_data` VALUES (3525, 3525, 'menu.trace.tshark', 'Signaling Analysis', 'i18n_en', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (3526, 3526, 'menu.trace.wireshark', 'Signaling Trace', 'i18n_en', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (3527, 3527, 'dictType.ne_version_status_remark', 'Network element software version status', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3528, 3528, 'dictType.i18n_en_remark', 'Internationalization - English', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); INSERT INTO `sys_dict_data` VALUES (3529, 3529, 'dictType.i18n_en_remark', 'Internationalization - Chinese', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -656,7 +656,7 @@ INSERT INTO `sys_dict_data` VALUES (4145, 4145, 'menu.system.user.editPost', 'Mo INSERT INTO `sys_dict_data` VALUES (4146, 4146, 'menu.dashboard.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4147, 4147, 'log.operate.title.smscCDR', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4148, 4148, 'menu.trace.pcapFile', 'Signaling Capture File', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, ''); --- INSERT INTO `sys_dict_data` VALUES (4149, 4149, 'dictData.udm_sub_cn_type.2', '4G', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4149, 4149, 'menu.trace.taskAnalyze', 'Tracking Data Analysis', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, ''); -- INSERT INTO `sys_dict_data` VALUES (4150, 4150, 'dictData.udm_sub_cn_type.3', '5G&4G', 'i18n_en', '', '', '1', 'supervisor', 1718441035866, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4151, 4151, 'menu.system.setting.doc', 'System User Documentation', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4152, 4152, 'menu.system.setting.official', 'Official Website', 'i18n_en', '', '', '1', 'supervisor', 1705550000000, '', 0, ''); @@ -673,9 +673,9 @@ INSERT INTO `sys_dict_data` VALUES (4162, 4162, 'table.cdr_event_smf', 'Data CDR INSERT INTO `sys_dict_data` VALUES (4163, 4163, 'table.cdr_event_smsc', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4164, 4164, 'menu.log.exportFile', 'Exported File Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4165, 4165, 'menu.perf.kpiCReport', 'Custom Indicator Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -INSERT INTO `sys_dict_data` VALUES (4166, 4166, 'menu.trace.taskHLR', 'Tracking Tasks HLR', 'i18n_en', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4166, 4166, 'menu.trace.taskHLR', 'HLR Trace Task', 'i18n_en', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4167, 4167, 'dictType.cdr_cause_code', 'CDR Response Reason Code Category Type', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); -INSERT INTO `sys_dict_data` VALUES (4168, 4168, 'dictData.cdr_cause_code.0', 'Other', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); +INSERT INTO `sys_dict_data` VALUES (4168, 4168, 'dictData.cdr_cause_code.0', 'Unknown Error', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4169, 4169, 'dictData.cdr_cause_code.8', 'OPERATOR_DETERMINED_BARRING', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4170, 4170, 'dictData.cdr_cause_code.10', 'CALL_BARRED', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); INSERT INTO `sys_dict_data` VALUES (4171, 4171, 'dictData.cdr_cause_code.21', 'SM Trans Reject', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); diff --git a/database/install/sys_menu.sql b/database/install/sys_menu.sql index 11bd5d2e..54be6d07 100644 --- a/database/install/sys_menu.sql +++ b/database/install/sys_menu.sql @@ -130,8 +130,8 @@ INSERT INTO `sys_menu` VALUES (2081, 'menu.ueUser.onlineUE', 5, 6, 'ue', 'neUser INSERT INTO `sys_menu` VALUES (2082, 'menu.ueUser.base5G', 5, 7, 'base5G', 'neUser/base5G/index', '1', '0', 'M', '1', '1', 'neUser:base5G:index', 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.base5GRemark'); INSERT INTO `sys_menu` VALUES (2083, 'menu.trace', 2087, 30, 'traceManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.traceRemark'); INSERT INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '0', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1713176976458, 'menu.trace.taskRemark'); -INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 2, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark'); -INSERT INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 3, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark'); +INSERT INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 4, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark'); +INSERT INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 11, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark'); INSERT INTO `sys_menu` VALUES (2087, 'menu.fault', 0, 2, 'faultManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-jinggao', 'supervisor', 1700000000000, NULL, 0, 'menu.faultRemark'); INSERT INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active-alarm', 'faultManage/active-alarm/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', 'supervisor', 1700000000000, NULL, 0, 'menu.fault.activemRemark'); INSERT INTO `sys_menu` VALUES (2089, 'menu.log', 0, 9, 'logManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-fuzhidaima', 'supervisor', 1700000000000, NULL, 0, 'menu.logRemark'); @@ -196,10 +196,13 @@ INSERT INTO `sys_menu` VALUES (2154, 'menu.ne.neConfigBackup', 4, 29, 'neConfigB INSERT INTO `sys_menu` VALUES (2155, 'menu.common.delete', 2154, 1, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:remove', '#', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_menu` VALUES (2156, 'menu.common.edit', 2154, 2, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:edit', '#', 'supervisor', 1721902269805, '', 0, ''); INSERT INTO `sys_menu` VALUES (2157, 'menu.dashboard.smscCDR', 2140, 9, 'smscCDR', 'dashboard/smscCDR/index', '1', '0', 'M', '1', '1', 'dashboard:cdr:index', 'icon-paixu', 'supervisor', 1723107637982, 'supervisor', 1723107637982, ''); -INSERT INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 4, 'pcap/inline/file', 'traceManage/pcap/file', '1', '1', 'M', '0', '1', 'traceManage:pcap:index', '#', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 12, 'pcap/inline/file', 'traceManage/pcap/file', '1', '1', 'M', '0', '1', 'traceManage:pcap:index', '#', 'supervisor', 1724144595914, '', 0, ''); INSERT INTO `sys_menu` VALUES (2159, 'menu.log.exportFile', 2089, 100, 'exportFile', 'logManage/exportFile/index', '1', '1', 'M', '1', '1', 'logManage:exportFile:index', 'icon-wenjian', 'supervisor', 1724144595914, '', 0, ''); INSERT INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '1', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', 'supervisor', 1724144595914, '', 0, ''); -INSERT INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 10, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '1', '1', 'traceManage:taskHLR:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 6, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '1', '1', 'traceManage:taskHLR:index', 'icon-chexiao', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:taskAnalyze:index', '#', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 'traceManage/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); +INSERT INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 2083, 16, 'wireshark', 'traceManage/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); -- tenant management for admin user INSERT INTO `sys_menu` VALUES (10000, 'menu.security.tenant', 2113, 5, 'tenant', 'system/tenant/index', '1', '1', 'M', '1', '1', 'system:tenant:list', 'icon-yuzhanghao1', 'supervisor', 1700000000000, NULL, 0, 'menu.security.tenantRemark'); diff --git a/database/install/sys_role_menu.sql b/database/install/sys_role_menu.sql index 265b1614..9ddf5577 100644 --- a/database/install/sys_role_menu.sql +++ b/database/install/sys_role_menu.sql @@ -245,6 +245,13 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2148); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2160); + + INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 5); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112); @@ -295,6 +302,9 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2160); + + INSERT IGNORE INTO `sys_role_menu` VALUES (5, 1); INSERT IGNORE INTO `sys_role_menu` VALUES (5, 5); INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112); diff --git a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql index c7e02075..b14044d0 100644 --- a/database/upgrade/upg_sys_dict_data1_i18n_zh.sql +++ b/database/upgrade/upg_sys_dict_data1_i18n_zh.sql @@ -91,8 +91,8 @@ REPLACE INTO `sys_dict_data` VALUES (1070, 1070, 'menu.ueUser.onlineIMS', 'IMS REPLACE INTO `sys_dict_data` VALUES (1071, 1071, 'menu.ueUser.onlineUE', 'UE在线信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1072, 1072, 'menu.ueUser.base5G', '基站信息', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1073, 1073, 'menu.trace', '跟踪', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '信令分析', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1074, 1074, 'menu.trace.task', '网元跟踪任务', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1075, 1075, 'menu.trace.analysis', '网元跟踪数据', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1076, 1076, 'menu.trace.pcap', '信令抓包', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1077, 1077, 'menu.fault', '监控', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1078, 1078, 'menu.config.backupManageRemark', '备份管理菜单', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -261,9 +261,9 @@ REPLACE INTO `sys_dict_data` VALUES (1520, 1520, 'dictType.sys_yes_no_remark', ' REPLACE INTO `sys_dict_data` VALUES (1521, 1521, 'dictType.sys_oper_type_remark', '操作类型列表', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1522, 1522, 'dictType.sys_common_status_remark', '登录状态列表', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1523, 1523, 'dictType.trace_type_remark', '跟踪类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- REPLACE INTO `sys_dict_data` VALUES (1524, 1524, 'dictType.operation_log_type_remark', '操作日志类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (1525, 1525, 'dictType.alarm_status_remark', '告警日志状态类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- REPLACE INTO `sys_dict_data` VALUES (1526, 1526, 'dictType.security_log_type_remark', '安全日志类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1524, 1524, 'dictType.alarm_status_remark', '告警日志状态类型', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (1525, 1525, 'menu.trace.tshark', '信令分析', 'i18n_zh', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (1526, 1526, 'menu.trace.wireshark', '信令跟踪', 'i18n_zh', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (1527, 1527, 'dictType.ne_version_status_remark', '网元软件版本状态', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1528, 1528, 'dictType.i18n_en_remark', 'Internationalization - English', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (1529, 1529, 'dictType.i18n_zh_remark', 'Internationalization - Chinese', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -680,9 +680,9 @@ REPLACE INTO `sys_dict_data` VALUES (2162, 2162, 'table.cdr_event_smf', '数据 REPLACE INTO `sys_dict_data` VALUES (2163, 2163, 'table.cdr_event_smsc', '短信话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2164, 2164, 'menu.log.exportFile', '导出文件管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2165, 2165, 'menu.perf.kpiCReport', '自定义指标数据', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -REPLACE INTO `sys_dict_data` VALUES (2166, 2166, 'menu.trace.taskHLR', '跟踪任务 HLR', 'i18n_zh', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2166, 2166, 'menu.trace.taskHLR', 'HLR 跟踪任务', 'i18n_zh', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2167, 2167, 'dictType.cdr_cause_code', 'CDR 响应原因代码类别类型', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); -REPLACE INTO `sys_dict_data` VALUES (2168, 2168, 'dictData.cdr_cause_code.0', '其他', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (2168, 2168, 'dictData.cdr_cause_code.0', '未知错误', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2169, 2169, 'dictData.cdr_cause_code.8', '运营者要求禁止', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2170, 2170, 'dictData.cdr_cause_code.10', '呼叫禁止', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (2171, 2171, 'dictData.cdr_cause_code.21', '短信传输拒绝', 'i18n_zh', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); diff --git a/database/upgrade/upg_sys_dict_data2_i18n_en.sql b/database/upgrade/upg_sys_dict_data2_i18n_en.sql index c90d9861..7a17fce6 100644 --- a/database/upgrade/upg_sys_dict_data2_i18n_en.sql +++ b/database/upgrade/upg_sys_dict_data2_i18n_en.sql @@ -89,8 +89,8 @@ REPLACE INTO `sys_dict_data` VALUES (3070, 3070, 'menu.ueUser.onlineIMS', 'IMS O REPLACE INTO `sys_dict_data` VALUES (3071, 3071, 'menu.ueUser.onlineUE', 'UE Online Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3072, 3072, 'menu.ueUser.base5G', 'Radio Information', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3073, 3073, 'menu.trace', 'Trace', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'Trace Tasks', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'Signaling Analysis', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3074, 3074, 'menu.trace.task', 'NE Trace Task', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3075, 3075, 'menu.trace.analysis', 'NE Trace Task Data', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3076, 3076, 'menu.trace.pcap', 'Signaling Capture', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3077, 3077, 'menu.fault', 'Monitor', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3078, 3078, 'menu.config.backupManageRemark', 'Backup Management Menu', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -255,9 +255,9 @@ REPLACE INTO `sys_dict_data` VALUES (3520, 3520, 'dictType.sys_yes_no_remark', ' REPLACE INTO `sys_dict_data` VALUES (3521, 3521, 'dictType.sys_oper_type_remark', 'Operation type list', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3522, 3522, 'dictType.sys_common_status_remark', 'Login Status List', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3523, 3523, 'dictType.trace_type_remark', 'Trace Types', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- REPLACE INTO `sys_dict_data` VALUES (3524, 3524, 'dictType.operation_log_type_remark', 'Operation log type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); -REPLACE INTO `sys_dict_data` VALUES (3525, 3525, 'dictType.alarm_status_remark', 'Alarm Log Status Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); --- REPLACE INTO `sys_dict_data` VALUES (3526, 3526, 'dictType.security_log_type_remark', 'Security Log Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3524, 3524, 'dictType.alarm_status_remark', 'Alarm Log Status Type', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); +REPLACE INTO `sys_dict_data` VALUES (3525, 3525, 'menu.trace.tshark', 'Signaling Analysis', 'i18n_en', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (3526, 3526, 'menu.trace.wireshark', 'Signaling Trace', 'i18n_en', '', '', '1', 'supervisor', 1727085393370, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (3527, 3527, 'dictType.ne_version_status_remark', 'Network element software version status', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3528, 3528, 'dictType.i18n_en_remark', 'Internationalization - English', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); REPLACE INTO `sys_dict_data` VALUES (3529, 3529, 'dictType.i18n_zh_remark', 'Internationalization - Chinese', 'i18n_en', NULL, NULL, '1', 'supervisor', 1700000000000, NULL, 0, NULL); @@ -675,9 +675,9 @@ REPLACE INTO `sys_dict_data` VALUES (4162, 4162, 'table.cdr_event_smf', 'Data CD REPLACE INTO `sys_dict_data` VALUES (4163, 4163, 'table.cdr_event_smsc', 'SMS CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4164, 4164, 'menu.log.exportFile', 'Exported File Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4165, 4165, 'menu.perf.kpiCReport', 'Custom Indicator Data', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, ''); -REPLACE INTO `sys_dict_data` VALUES (4166, 4166, 'menu.trace.taskHLR', 'Tracking Tasks HLR', 'i18n_en', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4166, 4166, 'menu.trace.taskHLR', 'HLR Trace Task', 'i18n_en', '', '', '1', 'supervisor', 1726626822538, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4167, 4167, 'dictType.cdr_cause_code', 'CDR Response Reason Code Category Type', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); -REPLACE INTO `sys_dict_data` VALUES (4168, 4168, 'dictData.cdr_cause_code.0', 'Other', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); +REPLACE INTO `sys_dict_data` VALUES (4168, 4168, 'dictData.cdr_cause_code.0', 'Unknown Error', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4169, 4169, 'dictData.cdr_cause_code.8', 'OPERATOR_DETERMINED_BARRING', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4170, 4170, 'dictData.cdr_cause_code.10', 'CALL_BARRED', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); REPLACE INTO `sys_dict_data` VALUES (4171, 4171, 'dictData.cdr_cause_code.21', 'SM Trans Reject', 'i18n_en', '', '', '1', 'supervisor', 1725877564156, '', 0, ''); diff --git a/database/upgrade/upg_sys_menu.sql b/database/upgrade/upg_sys_menu.sql index 8969db30..ab76304a 100644 --- a/database/upgrade/upg_sys_menu.sql +++ b/database/upgrade/upg_sys_menu.sql @@ -113,8 +113,8 @@ REPLACE INTO `sys_menu` VALUES (2081, 'menu.ueUser.onlineUE', 5, 6, 'ue', 'neUse REPLACE INTO `sys_menu` VALUES (2082, 'menu.ueUser.base5G', 5, 7, 'base5G', 'neUser/base5G/index', '1', '0', 'M', '1', '1', 'neUser:base5G:index', 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.ueUser.base5GRemark'); REPLACE INTO `sys_menu` VALUES (2083, 'menu.trace', 2087, 30, 'traceManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-paixu', 'supervisor', 1700000000000, NULL, 0, 'menu.traceRemark'); REPLACE INTO `sys_menu` VALUES (2084, 'menu.trace.task', 2083, 1, 'task', 'traceManage/task/index', '1', '0', 'M', '0', '1', 'traceManage:task:index', 'icon-chexiao', 'supervisor', 1700000000000, 'admin', 1713176976458, 'menu.trace.taskRemark'); -REPLACE INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 2, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark'); -REPLACE INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 3, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark'); +REPLACE INTO `sys_menu` VALUES (2085, 'menu.trace.analysis', 2083, 4, 'analysis', 'traceManage/analysis/index', '1', '0', 'M', '0', '1', 'traceManage:analysis:index', 'icon-gongnengjieshao', 'supervisor', 1700000000000, 'admin', 1713176987835, 'menu.trace.analysisRemark'); +REPLACE INTO `sys_menu` VALUES (2086, 'menu.trace.pcap', 2083, 11, 'pcap', 'traceManage/pcap/index', '1', '1', 'M', '1', '1', 'traceManage:pcap:index', 'icon-soutubiao', 'supervisor', 1700000000000, NULL, 0, 'menu.trace.pcapRemark'); REPLACE INTO `sys_menu` VALUES (2087, 'menu.fault', 0, 2, 'faultManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-jinggao', 'supervisor', 1700000000000, NULL, 0, 'menu.faultRemark'); REPLACE INTO `sys_menu` VALUES (2088, 'menu.fault.active', 2129, 1, 'active-alarm', 'faultManage/active-alarm/index', '1', '1', 'M', '1', '1', 'faultManage:active-alarm:index', 'icon-wenjian', 'supervisor', 1700000000000, NULL, 0, 'menu.fault.activemRemark'); REPLACE INTO `sys_menu` VALUES (2089, 'menu.log', 0, 9, 'logManage', NULL, '1', '0', 'D', '1', '1', NULL, 'icon-fuzhidaima', 'supervisor', 1700000000000, NULL, 0, 'menu.logRemark'); @@ -179,10 +179,13 @@ REPLACE INTO `sys_menu` VALUES (2154, 'menu.ne.neConfigBackup', 4, 29, 'neConfig REPLACE INTO `sys_menu` VALUES (2155, 'menu.common.delete', 2154, 1, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:remove', '#', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_menu` VALUES (2156, 'menu.common.edit', 2154, 2, '#', '', '1', '1', 'B', '1', '1', 'ne:neConfigBackup:edit', '#', 'supervisor', 1721902269805, '', 0, ''); REPLACE INTO `sys_menu` VALUES (2157, 'menu.dashboard.smscCDR', 2140, 9, 'smscCDR', 'dashboard/smscCDR/index', '1', '0', 'M', '1', '1', 'dashboard:cdr:index', 'icon-paixu', 'supervisor', 1723107637982, 'supervisor', 1723107637982, ''); -REPLACE INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 4, 'pcap/inline/file', 'traceManage/pcap/file', '1', '1', 'M', '0', '1', 'traceManage:pcap:index', '#', 'supervisor', 1724144595914, '', 0, ''); +REPLACE INTO `sys_menu` VALUES (2158, 'menu.trace.pcapFile', 2083, 12, 'pcap/inline/file', 'traceManage/pcap/file', '1', '1', 'M', '0', '1', 'traceManage:pcap:index', '#', 'supervisor', 1724144595914, '', 0, ''); REPLACE INTO `sys_menu` VALUES (2159, 'menu.log.exportFile', 2089, 100, 'exportFile', 'logManage/exportFile/index', '1', '1', 'M', '1', '1', 'logManage:exportFile:index', 'icon-wenjian', 'supervisor', 1724144595914, '', 0, ''); REPLACE INTO `sys_menu` VALUES (2160, 'menu.perf.kpiCReport', 2099, 100, 'kpiCReport', 'perfManage/kpiCReport/index', '1', '1', 'M', '1', '1', 'perfManage:kpiCReport:index', 'icon-tubiaoku', 'supervisor', 1724144595914, '', 0, ''); -REPLACE INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 10, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '1', '1', 'traceManage:taskHLR:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); +REPLACE INTO `sys_menu` VALUES (2161, 'menu.trace.taskHLR', 2083, 6, 'taskHLR', 'traceManage/task-hlr/index', '1', '0', 'M', '1', '1', 'traceManage:taskHLR:index', 'icon-chexiao', 'supervisor', 1724144595914, '', 0, ''); +REPLACE INTO `sys_menu` VALUES (2162, 'menu.trace.taskAnalyze', 2083, 2, 'task/inline/analyze', 'traceManage/task/analyze', '1', '0', 'M', '0', '1', 'traceManage:taskAnalyze:index', '#', 'supervisor', 1724144595914, '', 0, ''); +REPLACE INTO `sys_menu` VALUES (2163, 'menu.trace.tshark', 2083, 14, 'tshark', 'traceManage/tshark/index', '1', '0', 'M', '1', '1', 'traceManage:tshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); +REPLACE INTO `sys_menu` VALUES (2164, 'menu.trace.wireshark', 2083, 16, 'wireshark', 'traceManage/wireshark/index', '1', '0', 'M', '1', '1', 'traceManage:wireshark:index', 'icon-gengduo', 'supervisor', 1724144595914, '', 0, ''); -- multi-tenancy diff --git a/database/upgrade/upg_sys_role_menu.sql b/database/upgrade/upg_sys_role_menu.sql index 265b1614..bb60ef97 100644 --- a/database/upgrade/upg_sys_role_menu.sql +++ b/database/upgrade/upg_sys_role_menu.sql @@ -245,6 +245,12 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2148); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152); INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157); +INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2160); + INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 5); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112); @@ -295,6 +301,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152); INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153); +INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2160); + INSERT IGNORE INTO `sys_role_menu` VALUES (5, 1); INSERT IGNORE INTO `sys_role_menu` VALUES (5, 5); INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112); diff --git a/features/cdr/cdrevent.go b/features/cdr/cdrevent.go index 56ae8fcc..a89cfa63 100644 --- a/features/cdr/cdrevent.go +++ b/features/cdr/cdrevent.go @@ -89,12 +89,12 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) { switch neInfo.NeType { case "IMS": if v, ok := cdrEvent.CDR["recordType"]; ok && (v == "MOC" || v == "MTSM") { - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_IMS_CDR+neInfo.NeId, cdrEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_IMS_CDR+neInfo.NeId, cdrEvent) } case "SMF": - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_SMF_CDR+neInfo.NeId, cdrEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_SMF_CDR+neInfo.NeId, cdrEvent) case "SMSC": - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_SMSC_CDR+neInfo.NeId, cdrEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_SMSC_CDR+neInfo.NeId, cdrEvent) } } diff --git a/features/event/event.go b/features/event/event.go index 03e92501..6e56ec89 100644 --- a/features/event/event.go +++ b/features/event/event.go @@ -85,7 +85,7 @@ func PostUEEventFromAMF(c *gin.Context) { // AMF没有RmUID,直接推送 // 推送到ws订阅组 - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_AMF_UE, ueEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_AMF_UE, ueEvent) services.ResponseStatusOK204NoContent(c.Writer) } @@ -124,7 +124,7 @@ func PostUEEvent(w http.ResponseWriter, r *http.Request) { if neInfo.RmUID == ueEvent.RmUID { // 推送到ws订阅组 if ueEvent.NeType == "MME" { - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_MME_UE+neInfo.NeId, ueEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_MME_UE+neInfo.NeId, ueEvent) } } diff --git a/features/fm/alarm.go b/features/fm/alarm.go index 7bb89ea8..e22eca17 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -595,7 +595,7 @@ func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) { exist, err := session.Table("alarm"). Where("ne_type=? and ne_id=? and alarm_id=? and alarm_status=1", alarmData.NeType, alarmData.NeId, alarmData.AlarmId). Exist() - if err == nil || !exist { + if err != nil || !exist { log.Infof("Not found active alarm: ne_id=%s, alarm_id=%s", alarmData.NeId, alarmData.AlarmId) continue } diff --git a/features/fm/smsforward.go b/features/fm/smsforward.go index 01f85d33..325c2108 100644 --- a/features/fm/smsforward.go +++ b/features/fm/smsforward.go @@ -202,15 +202,7 @@ func newSubmitSM(phoneNumber string, message string) (*pdu.SubmitSM, error) { submitSM := pdu.NewSubmitSM().(*pdu.SubmitSM) submitSM.SourceAddr = srcAddr submitSM.DestAddr = destAddr - dataCoding := data.UCS2 - switch smsForward.DataCoding { - case config.CODING_UCS2: - dataCoding = data.UCS2 - case config.CODING_ASCII: - dataCoding = data.ASCII - case config.CODING_LATIN1: - dataCoding = data.LATIN1 - } + dataCoding := data.FromDataCoding(smsForward.DataCoding) err = submitSM.Message.SetMessageWithEncoding(message, dataCoding) if err != nil { return nil, err @@ -222,3 +214,27 @@ func newSubmitSM(phoneNumber string, message string) (*pdu.SubmitSM, error) { return submitSM, nil } + +// const ( +// // Short message data coding type +// SMS_CODING_GSM7BIT byte = iota +// SMS_CODING_ASCII +// SMS_CODING_BINARY8BIT1 +// SMS_CODING_LATIN1 +// SMS_CODING_BINARY8BIT2 +// SMS_CODING_NODEF +// SMS_CODING_CYRILLIC +// SMS_CODING_HEBREW +// SMS_CODING_UCS2 +// ) + +// var codingMap = map[byte]data.Encoding{ +// SMS_CODING_GSM7BIT: data.GSM7BIT, +// SMS_CODING_ASCII: data.ASCII, +// SMS_CODING_BINARY8BIT1: data.BINARY8BIT1, +// SMS_CODING_LATIN1: data.LATIN1, +// SMS_CODING_BINARY8BIT2: data.BINARY8BIT2, +// SMS_CODING_CYRILLIC: data.CYRILLIC, +// SMS_CODING_HEBREW: data.HEBREW, +// SMS_CODING_UCS2: data.UCS2, +// } diff --git a/features/pm/performance.go b/features/pm/performance.go index a183d8a4..a11d27c3 100644 --- a/features/pm/performance.go +++ b/features/pm/performance.go @@ -330,13 +330,13 @@ func PostKPIReportFromNF(w http.ResponseWriter, r *http.Request) { if neInfo.RmUID == kpiData.RmUid { // 推送到ws订阅组 - wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent) + wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI, neInfo.NeType, neInfo.NeId), kpiEvent) // 推送自定义KPI到ws订阅组 - wsService.NewWSSendImpl.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent) + wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%s_%s", wsService.GROUP_KPI_C, neInfo.NeType, neInfo.NeId), kpiCEvent) if neInfo.NeType == "UPF" { - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent) - // 推送标识为:12_RMUID, exp: 12_4400HXUPF001 - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF+kpiReport.Task.NE.RmUID, kpiEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF+neInfo.NeId, kpiEvent) + // 推送标识为:12_RMUID, exp: 12_4400HXUPF001, for multi-tenancy + wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF+kpiReport.Task.NE.RmUID, kpiEvent) } } @@ -464,9 +464,9 @@ func PostGoldKPIFromNF(w http.ResponseWriter, r *http.Request) { } // 推送到ws订阅组 - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI, kpiEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI, kpiEvent) if goldKpi.NEType == "UPF" { - wsService.NewWSSendImpl.ByGroupID(wsService.GROUP_KPI_UPF, kpiEvent) + wsService.NewWSSend.ByGroupID(wsService.GROUP_KPI_UPF, kpiEvent) } services.ResponseStatusOK204NoContent(w) diff --git a/go.mod b/go.mod index 0f2568e5..80b40333 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/go-resty/resty/v2 v2.14.0 github.com/go-sql-driver/mysql v1.8.1 github.com/golang-jwt/jwt/v5 v5.2.1 + github.com/gopacket/gopacket v1.2.0 github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/gosnmp/gosnmp v1.38.0 @@ -45,11 +46,11 @@ require ( github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect github.com/shirou/gopsutil/v3 v3.23.11 // indirect github.com/sirupsen/logrus v1.4.2 // indirect - filippo.io/edwards25519 v1.1.0 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bytedance/sonic v1.12.1 // indirect - github.com/bytedance/sonic/loader v0.2.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect + filippo.io/edwards25519 v1.1.0 // indirect // indirect + github.com/beorn7/perks v1.0.1 // indirect // indirect + github.com/bytedance/sonic v1.12.1 // indirect // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect // indirect github.com/chenjiandongx/ginprom v0.0.0-20210617023641-6c809602c38a github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect @@ -73,10 +74,11 @@ require ( github.com/jinzhu/now v1.1.5 // indirect github.com/jonboulle/clockwork v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect - github.com/kr/fs v0.1.0 // indirect - github.com/leodido/go-urn v1.4.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect // indirect + github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect + github.com/kr/fs v0.1.0 // indirect // indirect + github.com/leodido/go-urn v1.4.0 // indirect // indirect github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570 // indirect github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 // indirect github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect @@ -101,13 +103,15 @@ require ( github.com/richardlehane/mscfb v1.0.4 // indirect github.com/richardlehane/msoleps v1.0.3 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect // indirect + github.com/shirou/gopsutil/v3 v3.23.11 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.7.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/syndtr/goleveldb v1.0.0 // indirect + github.com/sirupsen/logrus v1.4.2 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect // indirect + github.com/spf13/afero v1.11.0 // indirect // indirect + github.com/spf13/cast v1.7.0 // indirect // indirect + github.com/subosito/gotenv v1.6.0 // indirect // indirect + github.com/syndtr/goleveldb v1.0.0 // indirect // indirect github.com/tebeka/strftime v0.1.5 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect diff --git a/go.sum b/go.sum index 95ae1b43..714cab42 100644 --- a/go.sum +++ b/go.sum @@ -124,6 +124,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopacket/gopacket v1.2.0 h1:eXbzFad7f73P1n2EJHQlsKuvIMJjVXK5tXoSca78I3A= +github.com/gopacket/gopacket v1.2.0/go.mod h1:BrAKEy5EOGQ76LSqh7DMAr7z0NNPdczWm2GxCG7+I8M= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= @@ -350,6 +352,10 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2 github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg= +github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY= github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= diff --git a/restagent/config/config.go b/restagent/config/config.go index aad08afd..00c900f8 100644 --- a/restagent/config/config.go +++ b/restagent/config/config.go @@ -150,16 +150,6 @@ type DbConfig struct { Backup string `yaml:"backup"` } -//type codingType int - -const ( - // Short message data coding type - CODING_UCS2 int = iota - CODING_ASCII - CODING_LATIN1 - CODING_NODEF -) - type AlarmConfig struct { SplitEventAlarm bool `yaml:"splitEventAlarm"` //ForwardAlarm bool `yaml:"forwardAlarm"` @@ -180,7 +170,7 @@ type AlarmConfig struct { SystemID string `yaml:"systemID" json:"systemID"` Password string `yaml:"password" json:"password"` SystemType string `yaml:"systemType" json:"systemType"` - DataCoding int `yaml:"dataCoding" json:"dataCoding"` + DataCoding byte `yaml:"dataCoding" json:"dataCoding"` ServiceNumber string `yaml:"serviceNumber" json:"serviceNumber"` } `yaml:"alarmSMSForward"` SMS struct { @@ -399,8 +389,10 @@ func UpdateStructFromMap(s any, updates map[string]any) { if field.Tag.Get("json") == key { structField := v.FieldByName(field.Name) if structField.IsValid() && structField.CanSet() { - if structField.Type() == reflect.TypeOf(value) { - structField.Set(reflect.ValueOf(value)) + // Convert value to the appropriate type if necessary + convertedValue := reflect.ValueOf(value).Convert(structField.Type()) + if structField.Type() == convertedValue.Type() { + structField.Set(convertedValue) } } break diff --git a/restagent/etc/restconf.yaml b/restagent/etc/restconf.yaml index daddd30d..86dd8349 100644 --- a/restagent/etc/restconf.yaml +++ b/restagent/etc/restconf.yaml @@ -132,7 +132,8 @@ omc: # TLS Skip verify: true/false # email/sms # smProxy: sms(Short Message Service)/smsc(SMS Centre) -# dataCoding: 0:UCS2, 1:ASCII, 2:LATIN1 +# dataCoding: 0:GSM7BIT, 1:ASCII, 2:BINARY8BIT1, 3:LATIN1, +# 4:BINARY8BIT2, 6:CYRILLIC, 7:HEBREW, 8:UCS2 alarm: alarmEmailForward: enable: true @@ -144,10 +145,10 @@ alarm: tlsSkipVerify: true alarmSMSForward: enable: true - mobileList: - smscAddr: "192.168.13.114:2775" - systemID: "omc" - password: "omc123" + mobileList: "1006,1008" + smscAddr: "192.168.14.212:2775" + systemID: "123456" + password: "123456" systemType: "UTRAN" dataCoding: 0 serviceNumber: "OMC" diff --git a/src/framework/redis/redis.go b/src/framework/redis/redis.go index 32576f36..ef574de5 100644 --- a/src/framework/redis/redis.go +++ b/src/framework/redis/redis.go @@ -184,7 +184,7 @@ func GetKeys(source string, pattern string) ([]string, error) { // 循环遍历获取匹配的键 for { // 使用 SCAN 命令获取匹配的键 - batchKeys, nextCursor, err := rdb.Scan(ctx, cursor, pattern, 100).Result() + batchKeys, nextCursor, err := rdb.Scan(ctx, cursor, pattern, 1000).Result() if err != nil { logger.Errorf("Failed to scan keys: %v", err) return keys, err diff --git a/src/framework/socket/tcp_server.go b/src/framework/socket/tcp_server.go index 52a9b960..857af870 100644 --- a/src/framework/socket/tcp_server.go +++ b/src/framework/socket/tcp_server.go @@ -10,10 +10,10 @@ import ( // SocketTCP TCP服务端 type SocketTCP struct { - Addr string `json:"addr"` // 主机地址 - Port int64 `json:"port"` // 端口 - Listen *net.Listener `json:"listen"` - StopChan chan struct{} `json:"stop"` // 停止信号 + Addr string `json:"addr"` // 主机地址 + Port int64 `json:"port"` // 端口 + Listener *net.TCPListener `json:"listener"` + StopChan chan struct{} `json:"stop"` // 停止信号 } // New 创建TCP服务端 @@ -26,53 +26,52 @@ func (s *SocketTCP) New() (*SocketTCP, error) { } address := fmt.Sprintf("%s:%d", s.Addr, s.Port) - ln, err := net.Listen(proto, address) + // 解析 TCP 地址 + tcpAddr, err := net.ResolveTCPAddr(proto, address) if err != nil { return nil, err } - s.Listen = &ln + // 监听 TCP 地址 + listener, err := net.ListenTCP(proto, tcpAddr) + if err != nil { + return nil, err + } + + s.Listener = listener s.StopChan = make(chan struct{}, 1) return s, nil } // Close 关闭当前TCP服务端 func (s *SocketTCP) Close() { - if s.Listen != nil { + if s.Listener != nil { s.StopChan <- struct{}{} - (*s.Listen).Close() + (*s.Listener).Close() } } // Resolve 处理消息 -func (s *SocketTCP) Resolve(bufferSize int, callback func([]byte, int)) error { - if s.Listen == nil { +func (s *SocketTCP) Resolve(callback func(conn *net.Conn)) error { + if s.Listener == nil { return fmt.Errorf("tcp service not created") } - - ln := *s.Listen - buffer := make([]byte, bufferSize) + listener := *s.Listener for { select { case <-s.StopChan: return fmt.Errorf("udp service stop") default: - conn, err := ln.Accept() + conn, err := listener.Accept() if err != nil { logger.Errorf("Error accepting connection: %v ", err) continue } defer conn.Close() - // 读取数据 - n, err := conn.Read(buffer) - if err != nil { - fmt.Println("Error reading from TCP connection:", err) - continue - } - - callback(buffer, n) + // 处理连接 + callback(&conn) // 发送响应 if _, err = conn.Write([]byte("tcp>")); err != nil { diff --git a/src/framework/socket/udp_server.go b/src/framework/socket/udp_server.go index d54b957a..33a45a60 100644 --- a/src/framework/socket/udp_server.go +++ b/src/framework/socket/udp_server.go @@ -50,29 +50,20 @@ func (s *SocketUDP) Close() { } // Resolve 处理消息 -func (s *SocketUDP) Resolve(bufferSize int, callback func([]byte, int)) error { +func (s *SocketUDP) Resolve(callback func(*net.UDPConn)) error { if s.Conn == nil { return fmt.Errorf("udp service not created") } - buffer := make([]byte, bufferSize) - for { select { case <-s.StopChan: return fmt.Errorf("udp service stop") default: - // 读取数据 - n, addr, err := s.Conn.ReadFromUDP(buffer) - if err != nil { - fmt.Println("Error reading from UDP connection:", err) - continue - } - - callback(buffer, n) + callback(s.Conn) // 发送响应 - if _, err = s.Conn.WriteToUDP([]byte("udp>"), addr); err != nil { + if _, err := s.Conn.WriteTo([]byte("udp>"), s.Conn.RemoteAddr()); err != nil { fmt.Println("Error sending response:", err) } } diff --git a/src/modules/network_data/controller/smf.go b/src/modules/network_data/controller/smf.go index e0aaf0df..0dc48827 100644 --- a/src/modules/network_data/controller/smf.go +++ b/src/modules/network_data/controller/smf.go @@ -293,7 +293,7 @@ func (s *SMFController) SubUserList(c *gin.Context) { } // 网元直连 - data, err := neFetchlink.SMFSubInfo(neInfo, map[string]string{ + data, err := neFetchlink.SMFSubInfoList(neInfo, map[string]string{ "imsi": query.IMSI, "msisdn": query.MSISDN, "upstate": query.Upstate, @@ -306,24 +306,23 @@ func (s *SMFController) SubUserList(c *gin.Context) { // 对数据进行处理,去掉前缀,并加入imsi拓展信息 rows := data["rows"].([]any) - arr := &rows - for i := range *arr { - item := (*arr)[i].(map[string]any) - if v, ok := item["imsi"]; ok && v != nil { - imsiStr := v.(string) - imsiStr = strings.TrimPrefix(imsiStr, "imsi-") - item["imsi"] = imsiStr - // 查UDM拓展信息 - info := s.udmUserInfoService.SelectByIMSIAndNeID(imsiStr, "") - item["remark"] = info.Remark - } - if v, ok := item["msisdn"]; ok && v != nil { - item["msisdn"] = strings.TrimPrefix(v.(string), "msisdn-") + if len(rows) > 0 { + arr := &rows + for i := range *arr { + item := (*arr)[i].(map[string]any) + if v, ok := item["imsi"]; ok && v != nil { + imsiStr := v.(string) + imsiStr = strings.TrimPrefix(imsiStr, "imsi-") + item["imsi"] = imsiStr + // 查UDM拓展信息 + info := s.udmUserInfoService.SelectByIMSIAndNeID(imsiStr, "") + item["remark"] = info.Remark + } + if v, ok := item["msisdn"]; ok && v != nil { + item["msisdn"] = strings.TrimPrefix(v.(string), "msisdn-") + } } } - c.JSON(200, result.Ok(map[string]any{ - "total": data["total"], - "rows": data["rows"], - })) + c.JSON(200, result.Ok(data)) } diff --git a/src/modules/network_element/fetch_link/smf.go b/src/modules/network_element/fetch_link/smf.go index 09954625..bbbb0ee3 100644 --- a/src/modules/network_element/fetch_link/smf.go +++ b/src/modules/network_element/fetch_link/smf.go @@ -10,15 +10,13 @@ import ( "be.ems/src/modules/network_element/model" ) -// SMFSubInfo SMF在线订阅用户列表信息 +// SMFSubInfoList SMF在线订阅用户列表信息 // // 查询参数 {"imsi":"360000100000130","msisdn":"8612300000130","upstate":"Inactive","pageNum":"1"} // // 返回结果 {"rows":[],"total":0} -func SMFSubInfo(neInfo model.NeInfo, data map[string]string) (map[string]any, error) { - // neUrl := "http://127.0.0.1:4523/m1/3157310-1528434-82b449ee/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo?apifoxApiId=150640017" - neUrl := fmt.Sprintf("http://%s:%s/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo", "172.16.20.150", "33030") - // neUrl := fmt.Sprintf("http://%s:%d/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo", neInfo.IP, neInfo.Port) +func SMFSubInfoList(neInfo model.NeInfo, data map[string]string) (map[string]any, error) { + neUrl := fmt.Sprintf("http://%s:%d/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo", neInfo.IP, neInfo.Port) // 查询参数拼接 query := []string{} if v, ok := data["imsi"]; ok && v != "" { diff --git a/src/modules/trace/controller/packet.go b/src/modules/trace/controller/packet.go new file mode 100644 index 00000000..a89cacc6 --- /dev/null +++ b/src/modules/trace/controller/packet.go @@ -0,0 +1,111 @@ +package controller + +import ( + "be.ems/src/framework/i18n" + "be.ems/src/framework/utils/ctx" + "be.ems/src/framework/vo/result" + traceService "be.ems/src/modules/trace/service" + "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" +) + +// 实例化控制层 PacketController 结构体 +var NewPacket = &PacketController{ + packetService: traceService.NewPacket, +} + +// 信令跟踪 +// +// PATH /trace/packet +type PacketController struct { + packetService *traceService.Packet // 信令跟踪服务 +} + +// 网元跟踪网卡设备列表 +// +// GET /devices +func (s *PacketController) Devices(c *gin.Context) { + data := s.packetService.NetworkDevices() + c.JSON(200, result.OkData(data)) +} + +// 网元跟踪开始 +// +// POST /start +func (s *PacketController) Start(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var body struct { + Device string `json:"device" binding:"required"` // 网卡设备 + TaskNo string `json:"taskNo" binding:"required"` // 任务编号 + Output string `json:"output" ` // 输出PCAP文件路径,为空则不输出 + } + if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + + msg, err := s.packetService.LiveStart(body.TaskNo, body.Device, body.Output) + if err != nil { + c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) + return + } + c.JSON(200, result.OkData(msg)) +} + +// 网元跟踪结束 +// +// POST /stop +func (s *PacketController) Stop(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var body struct { + TaskNo string `json:"taskNo" binding:"required"` // 任务编号 + } + if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + + if err := s.packetService.LiveStop(body.TaskNo); err != nil { + c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) + return + } + c.JSON(200, result.Ok(nil)) +} + +// 网元跟踪过滤 +// +// PUT /filter +func (s *PacketController) Filter(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var body struct { + TaskNo string `json:"taskNo" binding:"required"` // 任务编号 + Expr string `json:"expr" binding:"required"` // 过滤表达式(port 33030 or 33040) + } + if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + + if err := s.packetService.LiveFilter(body.TaskNo, body.Expr); err != nil { + c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) + return + } + c.JSON(200, result.Ok(nil)) +} + +// 网元跟踪续期保活 +// +// PUT /keep-alive +func (s *PacketController) KeepAlive(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var body struct { + IntervalIn int `json:"intervalIn" ` // 服务续约的频率,默认设置为60秒 + Duration int `json:"duration" ` // 服务失效的时间,默认设置为120秒 + } + err := c.ShouldBindBodyWith(&body, binding.JSON) + if err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + c.JSON(200, result.Ok(nil)) +} diff --git a/src/modules/trace/controller/tcpdump.go b/src/modules/trace/controller/tcpdump.go index 0f0d7bd0..9ef6fa60 100644 --- a/src/modules/trace/controller/tcpdump.go +++ b/src/modules/trace/controller/tcpdump.go @@ -13,26 +13,24 @@ import ( "github.com/gin-gonic/gin/binding" ) -// 实例化控制层 TcpdumpController 结构体 -var NewTcpdump = &TcpdumpController{ - TcpdumpService: traceService.NewTCPdump, +// 实例化控制层 TCPdumpController 结构体 +var NewTCPdump = &TCPdumpController{ + tcpdumpService: traceService.NewTCPdump, neInfoService: neService.NewNeInfoImpl, } -// 信令抓包请求 +// 信令抓包 // // PATH /tcpdump -type TcpdumpController struct { - // 信令抓包服务 - TcpdumpService *traceService.TCPdump - // 网元信息服务 - neInfoService neService.INeInfo +type TCPdumpController struct { + tcpdumpService *traceService.TCPdump // 信令抓包服务 + neInfoService neService.INeInfo // 网元信息服务 } // 网元抓包PACP 开始 // // POST /start -func (s *TcpdumpController) DumpStart(c *gin.Context) { +func (s *TCPdumpController) DumpStart(c *gin.Context) { language := ctx.AcceptLanguage(c) var body struct { NeType string `json:"neType" binding:"required"` // 网元类型 @@ -45,7 +43,7 @@ func (s *TcpdumpController) DumpStart(c *gin.Context) { return } - taskCode, err := s.TcpdumpService.DumpStart(body.NeType, body.NeId, body.Cmd) + taskCode, err := s.tcpdumpService.DumpStart(body.NeType, body.NeId, body.Cmd) if err != nil { c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) return @@ -56,7 +54,7 @@ func (s *TcpdumpController) DumpStart(c *gin.Context) { // 网元抓包PACP 结束 // // POST /stop -func (s *TcpdumpController) DumpStop(c *gin.Context) { +func (s *TCPdumpController) DumpStop(c *gin.Context) { language := ctx.AcceptLanguage(c) var body struct { NeType string `json:"neType" binding:"required"` // 网元类型 @@ -69,7 +67,7 @@ func (s *TcpdumpController) DumpStop(c *gin.Context) { return } - taskLog, err := s.TcpdumpService.DumpStop(body.NeType, body.NeId, body.TaskCode) + taskLog, err := s.tcpdumpService.DumpStop(body.NeType, body.NeId, body.TaskCode) if err != nil { c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) return @@ -80,7 +78,7 @@ func (s *TcpdumpController) DumpStop(c *gin.Context) { // 网元抓包PACP 下载 // // GET /download -func (s *TcpdumpController) DumpDownload(c *gin.Context) { +func (s *TCPdumpController) DumpDownload(c *gin.Context) { language := ctx.AcceptLanguage(c) var query struct { NeType string `form:"neType" binding:"required"` // 网元类型 @@ -93,7 +91,7 @@ func (s *TcpdumpController) DumpDownload(c *gin.Context) { return } - zipFilePath, err := s.TcpdumpService.DumpDownload(query.NeType, query.NeID, query.TaskCode) + zipFilePath, err := s.tcpdumpService.DumpDownload(query.NeType, query.NeID, query.TaskCode) if err != nil { c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) return @@ -110,7 +108,7 @@ func (s *TcpdumpController) DumpDownload(c *gin.Context) { // UPF标准版内部抓包 // // POST /upf -func (s *TcpdumpController) UPFTrace(c *gin.Context) { +func (s *TCPdumpController) UPFTrace(c *gin.Context) { language := ctx.AcceptLanguage(c) var body struct { NeType string `json:"neType" binding:"required"` // 网元类型 @@ -123,7 +121,7 @@ func (s *TcpdumpController) UPFTrace(c *gin.Context) { return } - msg, err := s.TcpdumpService.UPFTrace(body.NeType, body.NeId, body.Cmd) + msg, err := s.tcpdumpService.UPFTrace(body.NeType, body.NeId, body.Cmd) if err != nil { c.JSON(200, result.ErrMsg(i18n.TKey(language, err.Error()))) return diff --git a/src/modules/trace/controller/trace_task.go b/src/modules/trace/controller/trace_task.go index 7598c567..fc912eab 100644 --- a/src/modules/trace/controller/trace_task.go +++ b/src/modules/trace/controller/trace_task.go @@ -1,6 +1,9 @@ package controller import ( + "fmt" + "path/filepath" + "runtime" "strings" "be.ems/src/framework/i18n" @@ -129,3 +132,24 @@ func (s *TraceTaskController) Remove(c *gin.Context) { msg := i18n.TTemplate(language, "app.common.deleteSuccess", map[string]any{"num": rows}) c.JSON(200, result.OkMsg(msg)) } + +// 跟踪任务文件 +// +// GET /filePull +func (s *TraceTaskController) FilePull(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var querys struct { + TraceId string `form:"traceId" binding:"required"` + } + if err := c.ShouldBindQuery(&querys); err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + + fileName := fmt.Sprintf("task_%s.pcap", querys.TraceId) + localFilePath := filepath.Join("/tmp/omc/trace", fileName) + if runtime.GOOS == "windows" { + localFilePath = fmt.Sprintf("C:%s", localFilePath) + } + c.FileAttachment(localFilePath, fileName) +} diff --git a/src/modules/trace/service/packet.go b/src/modules/trace/service/packet.go new file mode 100644 index 00000000..9b6e8f8a --- /dev/null +++ b/src/modules/trace/service/packet.go @@ -0,0 +1,191 @@ +package service + +import ( + "context" + "fmt" + "os" + "strings" + "sync" + "time" + + "be.ems/src/framework/logger" + "be.ems/src/framework/vo" + "github.com/gopacket/gopacket" + "github.com/gopacket/gopacket/pcap" + "github.com/gopacket/gopacket/pcapgo" +) + +// 实例化服务层 Packet 结构体 +var NewPacket = &Packet{ + taskMap: sync.Map{}, +} + +// 信令跟踪 服务层处理 +type Packet struct { + taskMap sync.Map // 捕获任务 +} + +// task 任务信息 +type task struct { + TaskNo string // 任务编号 + Handle *pcap.Handle // 捕获句柄 + File *os.File // 捕获信息输出文件句柄 + Writer *pcapgo.Writer // 捕获信息输出句柄 + Expire time.Time // 过期时间 + context context.Context // 上下文 控制完成结束 +} + +// NetworkDevices 获取网卡设备信息 +func (s *Packet) NetworkDevices() []vo.TreeSelect { + arr := make([]vo.TreeSelect, 0) + devices, err := pcap.FindAllDevs() + if err != nil { + logger.Errorf("interfaces find all devices err: %s", err.Error()) + return arr + } + + for _, device := range devices { + if len(device.Addresses) == 0 { + continue + } + + lable := device.Description + if lable == "" { + lable = device.Name + } + item := vo.TreeSelect{ + ID: device.Name, + Label: lable, + Children: []vo.TreeSelect{}, + } + + for _, address := range device.Addresses { + if address.IP != nil { + ip := address.IP.String() + item.Children = append(item.Children, vo.TreeSelect{ID: ip, Label: ip}) + } + } + arr = append(arr, item) + } + + return arr +} + +// verifyDevice 检查网卡设备是否存在 +func (s *Packet) verifyDevice(str string) (string, bool) { + devices, err := pcap.FindAllDevs() + if err != nil { + logger.Errorf("interfaces find all devices err: %s", err.Error()) + return "", false + } + for _, device := range devices { + if len(device.Addresses) == 0 { + continue + } + if device.Name == str { + return device.Name, true + } + for _, address := range device.Addresses { + if address.IP.String() == str { + return device.Name, true + } + } + } + return "", false +} + +// LiveStart 开始捕获数据 +func (s *Packet) LiveStart(taskNo, deviceName, outputFile string) (string, error) { + if _, ok := s.taskMap.Load(taskNo); ok { + return "", fmt.Errorf("task no. %s already exist", taskNo) + } + + // Verify the specified network interface exists + device, deviceOk := s.verifyDevice(deviceName) + if !deviceOk { + return "", fmt.Errorf("network device not exist: %s", deviceName) + } + + snapshotLength := 262144 + + // open device + handle, err := pcap.OpenLive(device, int32(snapshotLength), true, pcap.BlockForever) + if err != nil { + logger.Errorf("open live err: %s", err.Error()) + if strings.Contains(err.Error(), "operation not permitted") { + return "", fmt.Errorf("you don't have permission to capture on that/these device(s)") + } + return "", err + } + + // write a new file + var w *pcapgo.Writer + var f *os.File + if outputFile != "" { + f, err = os.Create(outputFile) + if err != nil { + return "", err + } + w = pcapgo.NewWriter(f) + w.WriteFileHeader(uint32(snapshotLength), handle.LinkType()) + } + + // capture packets + packetSource := gopacket.NewPacketSource(handle, handle.LinkType()) + packetSource.Lazy = false + packetSource.NoCopy = true + packetSource.DecodeStreamsAsDatagrams = true + + // save tasks + ctx := context.Background() + task := &task{ + TaskNo: taskNo, + Handle: handle, + File: f, + Writer: w, + Expire: time.Now().Add(time.Second * 120), + context: ctx, + } + s.taskMap.Store(taskNo, task) + + // start capture + go func() { + for packet := range packetSource.PacketsCtx(ctx) { + if packet == nil { + continue + } + if packet.Metadata().Timestamp.Before(time.Now()) { + continue + } + if w != nil { + w.WritePacket(packet.Metadata().CaptureInfo, packet.Data()) + } + fmt.Println(packet.Dump()) + } + }() + return "task initiated", nil +} + +// LiveFilter 捕获过滤 +func (s *Packet) LiveFilter(taskNo, expr string) error { + info, ok := s.taskMap.Load(taskNo) + if !ok { + return fmt.Errorf("task no. %s not exist", taskNo) + } + return info.(*task).Handle.SetBPFFilter(expr) +} + +// LiveStop 停止捕获数据 +func (s *Packet) LiveStop(taskNo string) error { + info, ok := s.taskMap.Load(taskNo) + if !ok { + return fmt.Errorf("task no. %s not exist", taskNo) + } + info.(*task).context.Done() + info.(*task).Handle.Close() + if info.(task).File != nil { + info.(task).File.Close() + } + s.taskMap.Delete(taskNo) + return nil +} diff --git a/src/modules/trace/service/trace_task.go b/src/modules/trace/service/trace_task.go index e9891b28..fbfb1643 100644 --- a/src/modules/trace/service/trace_task.go +++ b/src/modules/trace/service/trace_task.go @@ -1,8 +1,10 @@ package service import ( + "encoding/base64" "encoding/json" "fmt" + "net" "strings" "be.ems/src/framework/config" @@ -14,6 +16,7 @@ import ( neService "be.ems/src/modules/network_element/service" "be.ems/src/modules/trace/model" "be.ems/src/modules/trace/repository" + wsService "be.ems/src/modules/ws/service" ) // 实例化数据层 TraceTask 结构体 @@ -57,16 +60,27 @@ func (r *TraceTask) CreateUDP() error { } // 接收处理UDP数据 - go r.udpService.Resolve(2048, func(data []byte, n int) { - logger.Infof("socket UDP: %s", string(data)) - mData, err := UDPDataHandler(data, n) + go r.udpService.Resolve(func(conn *net.UDPConn) { + // 读取数据 + buf := make([]byte, 2048) + n, err := conn.Read(buf) + if err != nil { + logger.Errorf("error reading from UDP connection: %s", err.Error()) + return + } + + logger.Infof("socket UDP: %s", string(buf[:n])) + // logger.Infof("socket UDP Base64: %s", base64.StdEncoding.EncodeToString(buf[:n])) + mData, err := UDPDataHandler(buf, n) if err != nil { logger.Errorf("udp resolve data fail: %s", err.Error()) return } + taskId := parse.Number(mData["taskId"]) + // 插入数据库做记录 r.traceDataRepository.Insert(model.TraceData{ - TaskId: parse.Number(mData["taskId"]), + TaskId: taskId, IMSI: mData["imsi"].(string), SrcAddr: mData["srcAddr"].(string), DstAddr: mData["dstAddr"].(string), @@ -82,6 +96,7 @@ func (r *TraceTask) CreateUDP() error { // 推送文件 if v, ok := mData["pcapFile"]; ok && v != "" { logger.Infof("pcapFile: %s", v) + wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%d", wsService.GROUP_TRACE, taskId), taskId) } }) @@ -92,16 +107,29 @@ func (r *TraceTask) CreateUDP() error { return err } // 接收处理TCP数据 - go tcpService.Resolve(1024, func(data []byte, n int) { - logger.Infof("socket TCP: %s", string(data)) - mData, err := UDPDataHandler(data, n) + go tcpService.Resolve(func(conn *net.Conn) { + c := (*conn) + // 读取数据 + buf := make([]byte, 2048) + n, err := c.Read(buf) + if err != nil { + logger.Errorf("error reading from TCP connection: %s", err.Error()) + return + } + + logger.Infof("socket TCP: %s", string(buf[:n])) + deData, _ := base64.StdEncoding.DecodeString(string(buf[:n])) + logger.Infof("socket TCP Base64: %s", deData) + mData, err := UDPDataHandler(deData, len(deData)) if err != nil { logger.Errorf("tcp resolve data fail: %s", err.Error()) return } + taskId := parse.Number(mData["taskId"]) + // 插入数据库做记录 r.traceDataRepository.Insert(model.TraceData{ - TaskId: parse.Number(mData["taskId"]), + TaskId: taskId, IMSI: mData["imsi"].(string), SrcAddr: mData["srcAddr"].(string), DstAddr: mData["dstAddr"].(string), @@ -117,6 +145,7 @@ func (r *TraceTask) CreateUDP() error { // 推送文件 if v, ok := mData["pcapFile"]; ok && v != "" { logger.Infof("pcapFile: %s", v) + wsService.NewWSSend.ByGroupID(fmt.Sprintf("%s%d", wsService.GROUP_TRACE, taskId), taskId) } }) return nil diff --git a/src/modules/trace/service/trace_task_udp_data.go b/src/modules/trace/service/trace_task_udp_data.go index 057ddf41..2f007f38 100644 --- a/src/modules/trace/service/trace_task_udp_data.go +++ b/src/modules/trace/service/trace_task_udp_data.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "fmt" "os" + "path/filepath" "runtime" "strings" "time" @@ -264,6 +265,9 @@ const versionMinor = 4 func writeEmptyPcap(filename string, timeStamp int64, length int, data []byte) error { var err error var file *os.File + if err := os.MkdirAll(filepath.Dir(filename), 0775); err != nil { + return err + } if _, err = os.Stat(filename); os.IsNotExist(err) { file, err = os.Create(filename) // File Header @@ -318,7 +322,7 @@ func writeEmptyPcap(filename string, timeStamp int64, length int, data []byte) e // writePcap 写Pcap文件并返回文件路径 func writePcap(extHdr ExtHeader) string { - filePath := fmt.Sprintf("/tmp/trace_%d .pcap", extHdr.TaskId) + filePath := fmt.Sprintf("/tmp/omc/trace/task_%d.pcap", extHdr.TaskId) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) } diff --git a/src/modules/trace/trace.go b/src/modules/trace/trace.go index db3b777c..98ff72da 100644 --- a/src/modules/trace/trace.go +++ b/src/modules/trace/trace.go @@ -17,34 +17,61 @@ func Setup(router *gin.Engine) { // 启动时需要的初始参数 InitLoad() - traceGroup := router.Group("/trace") - // 信令抓包 - tcpdumpGroup := traceGroup.Group("/tcpdump") + tcpdumpGroup := router.Group("/trace/tcpdump") { tcpdumpGroup.POST("/start", middleware.PreAuthorize(nil), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.tcpdump", collectlogs.BUSINESS_TYPE_OTHER)), - controller.NewTcpdump.DumpStart, + controller.NewTCPdump.DumpStart, ) tcpdumpGroup.POST("/stop", middleware.PreAuthorize(nil), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.tcpdump", collectlogs.BUSINESS_TYPE_OTHER)), - controller.NewTcpdump.DumpStop, + controller.NewTCPdump.DumpStop, ) tcpdumpGroup.GET("/download", middleware.PreAuthorize(nil), - controller.NewTcpdump.DumpDownload, + controller.NewTCPdump.DumpDownload, ) tcpdumpGroup.POST("/upf", middleware.PreAuthorize(nil), collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.tcpdump", collectlogs.BUSINESS_TYPE_OTHER)), - controller.NewTcpdump.UPFTrace, + controller.NewTCPdump.UPFTrace, + ) + } + + // 信令跟踪 + packetGroup := router.Group("/trace/packet") + { + packetGroup.GET("/devices", + middleware.PreAuthorize(nil), + controller.NewPacket.Devices, + ) + packetGroup.POST("/start", + middleware.PreAuthorize(nil), + collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.packet", collectlogs.BUSINESS_TYPE_OTHER)), + controller.NewPacket.Start, + ) + packetGroup.POST("/stop", + middleware.PreAuthorize(nil), + collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.packet", collectlogs.BUSINESS_TYPE_OTHER)), + controller.NewPacket.Stop, + ) + packetGroup.PUT("/filter", + middleware.PreAuthorize(nil), + collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.packet", collectlogs.BUSINESS_TYPE_OTHER)), + controller.NewPacket.Filter, + ) + packetGroup.PUT("/keep-alive", + middleware.PreAuthorize(nil), + collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.packet", collectlogs.BUSINESS_TYPE_OTHER)), + controller.NewPacket.KeepAlive, ) } // 跟踪任务 网元HLR (免登录) - taskHLRGroup := traceGroup.Group("/task/hlr") + taskHLRGroup := router.Group("/trace/task/hlr") { taskHLRGroup.GET("/list", controller.NewTraceTaskHlr.List, @@ -67,7 +94,7 @@ func Setup(router *gin.Engine) { } // 跟踪任务 - taskGroup := traceGroup.Group("/task") + taskGroup := router.Group("/trace/task") { taskGroup.GET("/list", middleware.PreAuthorize(nil), @@ -92,10 +119,14 @@ func Setup(router *gin.Engine) { collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_DELETE)), controller.NewTraceTask.Remove, ) + taskGroup.GET("/filePull", + middleware.PreAuthorize(nil), + controller.NewTraceTask.FilePull, + ) } // 跟踪数据 - taskDataGroup := traceGroup.Group("/data") + taskDataGroup := router.Group("/trace/data") { taskDataGroup.GET("/list", middleware.PreAuthorize(nil), diff --git a/src/modules/ws/controller/ws.go b/src/modules/ws/controller/ws.go index 1b78ed73..c3da955a 100644 --- a/src/modules/ws/controller/ws.go +++ b/src/modules/ws/controller/ws.go @@ -21,8 +21,8 @@ import ( // NewWSController 实例化控制层 WSController 结构体 var NewWSController = &WSController{ - wsService: service.NewWSImpl, - wsSendService: service.NewWSSendImpl, + wsService: service.NewWS, + wsSendService: service.NewWSSend, neHostService: neService.NewNeHostImpl, neInfoService: neService.NewNeInfoImpl, } @@ -32,9 +32,9 @@ var NewWSController = &WSController{ // PATH /ws type WSController struct { // WebSocket 服务 - wsService service.IWS + wsService *service.WS // WebSocket消息发送 服务 - wsSendService service.IWSSend + wsSendService *service.WSSend // 网元主机连接服务 neHostService neService.INeHost // 网元信息服务 diff --git a/src/modules/ws/service/ws.go b/src/modules/ws/service/ws.go index 0026b589..58f2f870 100644 --- a/src/modules/ws/service/ws.go +++ b/src/modules/ws/service/ws.go @@ -1,32 +1,220 @@ package service import ( + "encoding/json" "net/http" + "sync" + "time" + "be.ems/src/framework/logger" + "be.ems/src/framework/utils/generate" + "be.ems/src/framework/vo/result" "be.ems/src/modules/ws/model" "github.com/gorilla/websocket" ) -// IWS WebSocket通信 服务层接口 -type IWS interface { - // UpgraderWs http升级ws请求 - UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn +var ( + wsClients sync.Map // ws客户端 [clientId: client] + wsUsers sync.Map // ws用户对应的多个客户端id [uid:clientIds] + wsGroup sync.Map // ws组对应的多个客户端id [groupId:clientIds] +) - // ClientCreate 客户端新建 - // - // uid 登录用户ID - // groupIDs 用户订阅组 - // conn ws连接实例 - // childConn 子连接实例 - ClientCreate(uid string, groupIDs []string, conn *websocket.Conn, childConn any) *model.WSClient +// NewWS 实例化服务层 WS 结构体 +var NewWS = &WS{} - // ClientClose 客户端关闭 - ClientClose(clientID string) +// WS WebSocket通信 服务层处理 +type WS struct{} - // ClientReadListen 客户端读取消息监听 - // receiveType 根据接收类型进行消息处理 - ClientReadListen(wsClient *model.WSClient, receiveType int) - - // ClientWriteListen 客户端写入消息监听 - ClientWriteListen(wsClient *model.WSClient) +// UpgraderWs http升级ws请求 +func (s *WS) UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn { + wsUpgrader := websocket.Upgrader{ + Subprotocols: []string{"omc-ws"}, + // 设置消息发送缓冲区大小(byte),如果这个值设置得太小,可能会导致服务端在发送大型消息时遇到问题 + WriteBufferSize: 1024, + // 消息包启用压缩 + EnableCompression: true, + // ws握手超时时间 + HandshakeTimeout: 5 * time.Second, + // ws握手过程中允许跨域 + CheckOrigin: func(r *http.Request) bool { + return true + }, + } + conn, err := wsUpgrader.Upgrade(w, r, nil) + if err != nil { + logger.Errorf("ws Upgrade err: %s", err.Error()) + } + return conn +} + +// ClientCreate 客户端新建 +// +// uid 登录用户ID +// groupIDs 用户订阅组 +// conn ws连接实例 +// childConn 子连接实例 +func (s *WS) ClientCreate(uid string, groupIDs []string, conn *websocket.Conn, childConn any) *model.WSClient { + // clientID也可以用其他方式生成,只要能保证在所有服务端中都能保证唯一即可 + clientID := generate.Code(16) + + wsClient := &model.WSClient{ + ID: clientID, + Conn: conn, + LastHeartbeat: time.Now().UnixMilli(), + BindUid: uid, + SubGroup: groupIDs, + MsgChan: make(chan []byte, 100), + StopChan: make(chan struct{}, 1), // 卡死循环标记 + ChildConn: childConn, + } + + // 存入客户端 + wsClients.Store(clientID, wsClient) + + // 存入用户持有客户端 + if uid != "" { + if v, ok := wsUsers.Load(uid); ok { + uidClientIds := v.(*[]string) + *uidClientIds = append(*uidClientIds, clientID) + } else { + wsUsers.Store(uid, &[]string{clientID}) + } + } + + // 存入用户订阅组 + if uid != "" && len(groupIDs) > 0 { + for _, groupID := range groupIDs { + if v, ok := wsGroup.Load(groupID); ok { + groupClientIds := v.(*[]string) + *groupClientIds = append(*groupClientIds, clientID) + } else { + wsGroup.Store(groupID, &[]string{clientID}) + } + } + } + + return wsClient +} + +// ClientClose 客户端关闭 +func (s *WS) ClientClose(clientID string) { + v, ok := wsClients.Load(clientID) + if !ok { + return + } + + client := v.(*model.WSClient) + defer func() { + client.MsgChan <- []byte("ws:close") + client.StopChan <- struct{}{} + client.Conn.Close() + wsClients.Delete(clientID) + }() + + // 客户端断线时自动踢出Uid绑定列表 + if client.BindUid != "" { + if v, ok := wsUsers.Load(client.BindUid); ok { + uidClientIds := v.(*[]string) + if len(*uidClientIds) > 0 { + tempClientIds := make([]string, 0, len(*uidClientIds)) + for _, v := range *uidClientIds { + if v != client.ID { + tempClientIds = append(tempClientIds, v) + } + } + *uidClientIds = tempClientIds + } + } + } + + // 客户端断线时自动踢出已加入的组 + if len(client.SubGroup) > 0 { + for _, groupID := range client.SubGroup { + v, ok := wsGroup.Load(groupID) + if !ok { + continue + } + groupClientIds := v.(*[]string) + if len(*groupClientIds) > 0 { + tempClientIds := make([]string, 0, len(*groupClientIds)) + for _, v := range *groupClientIds { + if v != client.ID { + tempClientIds = append(tempClientIds, v) + } + } + *groupClientIds = tempClientIds + } + } + } +} + +// ClientReadListen 客户端读取消息监听 +// receiveType 根据接收类型进行消息处理 +func (s *WS) ClientReadListen(wsClient *model.WSClient, receiveType int) { + defer func() { + if err := recover(); err != nil { + logger.Errorf("ws ReadMessage Panic Error: %v", err) + } + }() + for { + // 读取消息 + messageType, msg, err := wsClient.Conn.ReadMessage() + if err != nil { + logger.Warnf("ws ReadMessage UID %s err: %s", wsClient.BindUid, err.Error()) + s.ClientClose(wsClient.ID) + return + } + // fmt.Println(messageType, string(msg)) + + // 文本 只处理文本json + if messageType == websocket.TextMessage { + var reqMsg model.WSRequest + if err := json.Unmarshal(msg, &reqMsg); err != nil { + msgByte, _ := json.Marshal(result.ErrMsg("message format json error")) + wsClient.MsgChan <- msgByte + continue + } + // 接收器处理 + switch receiveType { + case ReceiveCommont: + go NewWSReceive.Commont(wsClient, reqMsg) + case ReceiveShell: + go NewWSReceive.Shell(wsClient, reqMsg) + case ReceiveShellView: + go NewWSReceive.ShellView(wsClient, reqMsg) + case ReceiveTelnet: + go NewWSReceive.Telnet(wsClient, reqMsg) + } + } + } +} + +// ClientWriteListen 客户端写入消息监听 +func (s *WS) ClientWriteListen(wsClient *model.WSClient) { + defer func() { + if err := recover(); err != nil { + logger.Errorf("ws WriteMessage Panic Error: %v", err) + } + }() + // 发客户端id确认是否连接 + msgByte, _ := json.Marshal(result.OkData(map[string]string{ + "clientId": wsClient.ID, + })) + wsClient.MsgChan <- msgByte + // 消息发送监听 + for msg := range wsClient.MsgChan { + // 关闭句柄 + if string(msg) == "ws:close" { + wsClient.Conn.WriteMessage(websocket.CloseMessage, []byte{}) + return + } + // 发送消息 + err := wsClient.Conn.WriteMessage(websocket.TextMessage, msg) + if err != nil { + logger.Warnf("ws WriteMessage UID %s err: %s", wsClient.BindUid, err.Error()) + s.ClientClose(wsClient.ID) + return + } + wsClient.LastHeartbeat = time.Now().UnixMilli() + } } diff --git a/src/modules/ws/service/ws.impl.go b/src/modules/ws/service/ws.impl.go deleted file mode 100644 index 33307ba2..00000000 --- a/src/modules/ws/service/ws.impl.go +++ /dev/null @@ -1,220 +0,0 @@ -package service - -import ( - "encoding/json" - "net/http" - "sync" - "time" - - "be.ems/src/framework/logger" - "be.ems/src/framework/utils/generate" - "be.ems/src/framework/vo/result" - "be.ems/src/modules/ws/model" - "github.com/gorilla/websocket" -) - -var ( - wsClients sync.Map // ws客户端 [clientId: client] - wsUsers sync.Map // ws用户对应的多个客户端id [uid:clientIds] - wsGroup sync.Map // ws组对应的多个客户端id [groupId:clientIds] -) - -// NewWSImpl 实例化服务层 WSImpl 结构体 -var NewWSImpl = &WSImpl{} - -// WSImpl WebSocket通信 服务层处理 -type WSImpl struct{} - -// UpgraderWs http升级ws请求 -func (s *WSImpl) UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn { - wsUpgrader := websocket.Upgrader{ - Subprotocols: []string{"omc-ws"}, - // 设置消息发送缓冲区大小(byte),如果这个值设置得太小,可能会导致服务端在发送大型消息时遇到问题 - WriteBufferSize: 1024, - // 消息包启用压缩 - EnableCompression: true, - // ws握手超时时间 - HandshakeTimeout: 5 * time.Second, - // ws握手过程中允许跨域 - CheckOrigin: func(r *http.Request) bool { - return true - }, - } - conn, err := wsUpgrader.Upgrade(w, r, nil) - if err != nil { - logger.Errorf("ws Upgrade err: %s", err.Error()) - } - return conn -} - -// ClientCreate 客户端新建 -// -// uid 登录用户ID -// groupIDs 用户订阅组 -// conn ws连接实例 -// childConn 子连接实例 -func (s *WSImpl) ClientCreate(uid string, groupIDs []string, conn *websocket.Conn, childConn any) *model.WSClient { - // clientID也可以用其他方式生成,只要能保证在所有服务端中都能保证唯一即可 - clientID := generate.Code(16) - - wsClient := &model.WSClient{ - ID: clientID, - Conn: conn, - LastHeartbeat: time.Now().UnixMilli(), - BindUid: uid, - SubGroup: groupIDs, - MsgChan: make(chan []byte, 100), - StopChan: make(chan struct{}, 1), // 卡死循环标记 - ChildConn: childConn, - } - - // 存入客户端 - wsClients.Store(clientID, wsClient) - - // 存入用户持有客户端 - if uid != "" { - if v, ok := wsUsers.Load(uid); ok { - uidClientIds := v.(*[]string) - *uidClientIds = append(*uidClientIds, clientID) - } else { - wsUsers.Store(uid, &[]string{clientID}) - } - } - - // 存入用户订阅组 - if uid != "" && len(groupIDs) > 0 { - for _, groupID := range groupIDs { - if v, ok := wsGroup.Load(groupID); ok { - groupClientIds := v.(*[]string) - *groupClientIds = append(*groupClientIds, clientID) - } else { - wsGroup.Store(groupID, &[]string{clientID}) - } - } - } - - return wsClient -} - -// ClientClose 客户端关闭 -func (s *WSImpl) ClientClose(clientID string) { - v, ok := wsClients.Load(clientID) - if !ok { - return - } - - client := v.(*model.WSClient) - defer func() { - client.MsgChan <- []byte("ws:close") - client.StopChan <- struct{}{} - client.Conn.Close() - wsClients.Delete(clientID) - }() - - // 客户端断线时自动踢出Uid绑定列表 - if client.BindUid != "" { - if v, ok := wsUsers.Load(client.BindUid); ok { - uidClientIds := v.(*[]string) - if len(*uidClientIds) > 0 { - tempClientIds := make([]string, 0, len(*uidClientIds)) - for _, v := range *uidClientIds { - if v != client.ID { - tempClientIds = append(tempClientIds, v) - } - } - *uidClientIds = tempClientIds - } - } - } - - // 客户端断线时自动踢出已加入的组 - if len(client.SubGroup) > 0 { - for _, groupID := range client.SubGroup { - v, ok := wsGroup.Load(groupID) - if !ok { - continue - } - groupClientIds := v.(*[]string) - if len(*groupClientIds) > 0 { - tempClientIds := make([]string, 0, len(*groupClientIds)) - for _, v := range *groupClientIds { - if v != client.ID { - tempClientIds = append(tempClientIds, v) - } - } - *groupClientIds = tempClientIds - } - } - } -} - -// ClientReadListen 客户端读取消息监听 -// receiveType 根据接收类型进行消息处理 -func (s *WSImpl) ClientReadListen(wsClient *model.WSClient, receiveType int) { - defer func() { - if err := recover(); err != nil { - logger.Errorf("ws ReadMessage Panic Error: %v", err) - } - }() - for { - // 读取消息 - messageType, msg, err := wsClient.Conn.ReadMessage() - if err != nil { - logger.Warnf("ws ReadMessage UID %s err: %s", wsClient.BindUid, err.Error()) - s.ClientClose(wsClient.ID) - return - } - // fmt.Println(messageType, string(msg)) - - // 文本 只处理文本json - if messageType == websocket.TextMessage { - var reqMsg model.WSRequest - if err := json.Unmarshal(msg, &reqMsg); err != nil { - msgByte, _ := json.Marshal(result.ErrMsg("message format json error")) - wsClient.MsgChan <- msgByte - continue - } - // 接收器处理 - switch receiveType { - case ReceiveCommont: - go NewWSReceiveImpl.Commont(wsClient, reqMsg) - case ReceiveShell: - go NewWSReceiveImpl.Shell(wsClient, reqMsg) - case ReceiveShellView: - go NewWSReceiveImpl.ShellView(wsClient, reqMsg) - case ReceiveTelnet: - go NewWSReceiveImpl.Telnet(wsClient, reqMsg) - } - } - } -} - -// ClientWriteListen 客户端写入消息监听 -func (s *WSImpl) ClientWriteListen(wsClient *model.WSClient) { - defer func() { - if err := recover(); err != nil { - logger.Errorf("ws WriteMessage Panic Error: %v", err) - } - }() - // 发客户端id确认是否连接 - msgByte, _ := json.Marshal(result.OkData(map[string]string{ - "clientId": wsClient.ID, - })) - wsClient.MsgChan <- msgByte - // 消息发送监听 - for msg := range wsClient.MsgChan { - // 关闭句柄 - if string(msg) == "ws:close" { - wsClient.Conn.WriteMessage(websocket.CloseMessage, []byte{}) - return - } - // 发送消息 - err := wsClient.Conn.WriteMessage(websocket.TextMessage, msg) - if err != nil { - logger.Warnf("ws WriteMessage UID %s err: %s", wsClient.BindUid, err.Error()) - s.ClientClose(wsClient.ID) - return - } - wsClient.LastHeartbeat = time.Now().UnixMilli() - } -} diff --git a/src/modules/ws/service/ws_receive.go b/src/modules/ws/service/ws_receive.go index 0372c39c..68ec9bdd 100644 --- a/src/modules/ws/service/ws_receive.go +++ b/src/modules/ws/service/ws_receive.go @@ -1,6 +1,18 @@ package service -import "be.ems/src/modules/ws/model" +import ( + "encoding/json" + "fmt" + "io" + "time" + + "be.ems/src/framework/logger" + "be.ems/src/framework/telnet" + "be.ems/src/framework/utils/ssh" + "be.ems/src/framework/vo/result" + "be.ems/src/modules/ws/model" + "be.ems/src/modules/ws/processor" +) const ( ReceiveCommont = iota // Commont 接收通用业务处理 @@ -9,17 +21,245 @@ const ( ReceiveTelnet // Telnet 接收终端交互业务处理 ) -// IWSReceive WebSocket消息接收处理 服务层接口 -type IWSReceive interface { - // Commont 接收通用业务处理 - Commont(client *model.WSClient, reqMsg model.WSRequest) +// 实例化服务层 WSReceive 结构体 +var NewWSReceive = &WSReceive{} - // Shell 接收终端交互业务处理 - Shell(client *model.WSClient, reqMsg model.WSRequest) +// WSReceive WebSocket消息接收处理 服务层处理 +type WSReceive struct{} - // ShellView 接收查看文件终端交互业务处理 - ShellView(client *model.WSClient, reqMsg model.WSRequest) - - // Telnet 接收终端交互业务处理 - Telnet(client *model.WSClient, reqMsg model.WSRequest) +// close 关闭服务连接 +func (s *WSReceive) close(client *model.WSClient) { + // 主动关闭 + resultByte, _ := json.Marshal(result.OkMsg("user initiated closure")) + client.MsgChan <- resultByte + // 等待1s后关闭连接 + time.Sleep(1 * time.Second) + NewWS.ClientClose(client.ID) +} + +// Commont 接收通用业务处理 +func (s *WSReceive) Commont(client *model.WSClient, reqMsg model.WSRequest) { + // 必传requestId确认消息 + if reqMsg.RequestID == "" { + msg := "message requestId is required" + logger.Infof("ws Commont UID %s err: %s", client.BindUid, msg) + msgByte, _ := json.Marshal(result.ErrMsg(msg)) + client.MsgChan <- msgByte + return + } + + var resByte []byte + var err error + + switch reqMsg.Type { + case "close": + s.close(client) + return + case "ps": + resByte, err = processor.GetProcessData(reqMsg.RequestID, reqMsg.Data) + case "net": + resByte, err = processor.GetNetConnections(reqMsg.RequestID, reqMsg.Data) + case "ims_cdr": + resByte, err = processor.GetCDRConnectByIMS(reqMsg.RequestID, reqMsg.Data) + case "smf_cdr": + resByte, err = processor.GetCDRConnectBySMF(reqMsg.RequestID, reqMsg.Data) + case "smsc_cdr": + resByte, err = processor.GetCDRConnectBySMSC(reqMsg.RequestID, reqMsg.Data) + case "amf_ue": + resByte, err = processor.GetUEConnectByAMF(reqMsg.RequestID, reqMsg.Data) + case "mme_ue": + resByte, err = processor.GetUEConnectByMME(reqMsg.RequestID, reqMsg.Data) + case "upf_tf": + resByte, err = processor.GetUPFTotalFlow(reqMsg.RequestID, reqMsg.Data) + case "ne_state": + resByte, err = processor.GetNeState(reqMsg.RequestID, reqMsg.Data) + default: + err = fmt.Errorf("message type %s not supported", reqMsg.Type) + } + + if err != nil { + logger.Warnf("ws Commont UID %s err: %s", client.BindUid, err.Error()) + msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) + client.MsgChan <- msgByte + return + } + if len(resByte) > 0 { + client.MsgChan <- resByte + } +} + +// Shell 接收终端交互业务处理 +func (s *WSReceive) Shell(client *model.WSClient, reqMsg model.WSRequest) { + // 必传requestId确认消息 + if reqMsg.RequestID == "" { + msg := "message requestId is required" + logger.Infof("ws Shell UID %s err: %s", client.BindUid, msg) + msgByte, _ := json.Marshal(result.ErrMsg(msg)) + client.MsgChan <- msgByte + return + } + + var resByte []byte + var err error + + switch reqMsg.Type { + case "close": + s.close(client) + return + case "ssh": + // SSH会话消息接收写入会话 + command := reqMsg.Data.(string) + sshClientSession := client.ChildConn.(*ssh.SSHClientSession) + _, err = sshClientSession.Write(command) + case "ssh_resize": + // SSH会话窗口重置 + msgByte, _ := json.Marshal(reqMsg.Data) + var data struct { + Cols int `json:"cols"` + Rows int `json:"rows"` + } + err = json.Unmarshal(msgByte, &data) + if err == nil { + sshClientSession := client.ChildConn.(*ssh.SSHClientSession) + err = sshClientSession.Session.WindowChange(data.Rows, data.Cols) + } + default: + err = fmt.Errorf("message type %s not supported", reqMsg.Type) + } + + if err != nil { + logger.Warnf("ws Shell UID %s err: %s", client.BindUid, err.Error()) + msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) + client.MsgChan <- msgByte + if err == io.EOF { + // 等待1s后关闭连接 + time.Sleep(1 * time.Second) + client.StopChan <- struct{}{} + } + return + } + if len(resByte) > 0 { + client.MsgChan <- resByte + } +} + +// ShellView 接收查看文件终端交互业务处理 +func (s *WSReceive) ShellView(client *model.WSClient, reqMsg model.WSRequest) { + // 必传requestId确认消息 + if reqMsg.RequestID == "" { + msg := "message requestId is required" + logger.Infof("ws ShellView UID %s err: %s", client.BindUid, msg) + msgByte, _ := json.Marshal(result.ErrMsg(msg)) + client.MsgChan <- msgByte + return + } + + var resByte []byte + var err error + + switch reqMsg.Type { + case "close": + s.close(client) + return + case "cat", "tail": + var command string + if reqMsg.Type == "cat" { + command, err = processor.ParseCat(reqMsg.Data) + } + if reqMsg.Type == "tail" { + command, err = processor.ParseTail(reqMsg.Data) + } + if command != "" && err == nil { + sshClientSession := client.ChildConn.(*ssh.SSHClientSession) + _, err = sshClientSession.Write(command) + } + case "ctrl-c": + // 模拟按下 Ctrl+C + sshClientSession := client.ChildConn.(*ssh.SSHClientSession) + _, err = sshClientSession.Write("\u0003\n") + case "resize": + // 会话窗口重置 + msgByte, _ := json.Marshal(reqMsg.Data) + var data struct { + Cols int `json:"cols"` + Rows int `json:"rows"` + } + err = json.Unmarshal(msgByte, &data) + if err == nil { + sshClientSession := client.ChildConn.(*ssh.SSHClientSession) + err = sshClientSession.Session.WindowChange(data.Rows, data.Cols) + } + default: + err = fmt.Errorf("message type %s not supported", reqMsg.Type) + } + + if err != nil { + logger.Warnf("ws ShellView UID %s err: %s", client.BindUid, err.Error()) + msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) + client.MsgChan <- msgByte + if err == io.EOF { + // 等待1s后关闭连接 + time.Sleep(1 * time.Second) + client.StopChan <- struct{}{} + } + return + } + if len(resByte) > 0 { + client.MsgChan <- resByte + } +} + +// Telnet 接收终端交互业务处理 +func (s *WSReceive) Telnet(client *model.WSClient, reqMsg model.WSRequest) { + // 必传requestId确认消息 + if reqMsg.RequestID == "" { + msg := "message requestId is required" + logger.Infof("ws Shell UID %s err: %s", client.BindUid, msg) + msgByte, _ := json.Marshal(result.ErrMsg(msg)) + client.MsgChan <- msgByte + return + } + + var resByte []byte + var err error + + switch reqMsg.Type { + case "close": + s.close(client) + return + case "telnet": + // Telnet会话消息接收写入会话 + command := reqMsg.Data.(string) + telnetClientSession := client.ChildConn.(*telnet.TelnetClientSession) + _, err = telnetClientSession.Write(command) + case "telnet_resize": + // Telnet会话窗口重置 + msgByte, _ := json.Marshal(reqMsg.Data) + var data struct { + Cols int `json:"cols"` + Rows int `json:"rows"` + } + err = json.Unmarshal(msgByte, &data) + if err == nil { + // telnetClientSession := client.ChildConn.(*telnet.TelnetClientSession) + // _ = telnetClientSession.WindowChange(data.Rows, data.Cols) + } + default: + err = fmt.Errorf("message type %s not supported", reqMsg.Type) + } + + if err != nil { + logger.Warnf("ws Shell UID %s err: %s", client.BindUid, err.Error()) + msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) + client.MsgChan <- msgByte + if err == io.EOF { + // 等待1s后关闭连接 + time.Sleep(1 * time.Second) + client.StopChan <- struct{}{} + } + return + } + if len(resByte) > 0 { + client.MsgChan <- resByte + } } diff --git a/src/modules/ws/service/ws_receive.impl.go b/src/modules/ws/service/ws_receive.impl.go deleted file mode 100644 index 918efcc5..00000000 --- a/src/modules/ws/service/ws_receive.impl.go +++ /dev/null @@ -1,258 +0,0 @@ -package service - -import ( - "encoding/json" - "fmt" - "io" - "time" - - "be.ems/src/framework/logger" - "be.ems/src/framework/telnet" - "be.ems/src/framework/utils/ssh" - "be.ems/src/framework/vo/result" - "be.ems/src/modules/ws/model" - "be.ems/src/modules/ws/processor" -) - -// 实例化服务层 WSReceiveImpl 结构体 -var NewWSReceiveImpl = &WSReceiveImpl{} - -// WSReceiveImpl WebSocket消息接收处理 服务层处理 -type WSReceiveImpl struct{} - -// Commont 接收通用业务处理 -func (s *WSReceiveImpl) close(client *model.WSClient) { - // 主动关闭 - resultByte, _ := json.Marshal(result.OkMsg("user initiated closure")) - client.MsgChan <- resultByte - // 等待1s后关闭连接 - time.Sleep(1 * time.Second) - NewWSImpl.ClientClose(client.ID) -} - -// Commont 接收通用业务处理 -func (s *WSReceiveImpl) Commont(client *model.WSClient, reqMsg model.WSRequest) { - // 必传requestId确认消息 - if reqMsg.RequestID == "" { - msg := "message requestId is required" - logger.Infof("ws Commont UID %s err: %s", client.BindUid, msg) - msgByte, _ := json.Marshal(result.ErrMsg(msg)) - client.MsgChan <- msgByte - return - } - - var resByte []byte - var err error - - switch reqMsg.Type { - case "close": - s.close(client) - return - case "ps": - resByte, err = processor.GetProcessData(reqMsg.RequestID, reqMsg.Data) - case "net": - resByte, err = processor.GetNetConnections(reqMsg.RequestID, reqMsg.Data) - case "ims_cdr": - resByte, err = processor.GetCDRConnectByIMS(reqMsg.RequestID, reqMsg.Data) - case "smf_cdr": - resByte, err = processor.GetCDRConnectBySMF(reqMsg.RequestID, reqMsg.Data) - case "smsc_cdr": - resByte, err = processor.GetCDRConnectBySMSC(reqMsg.RequestID, reqMsg.Data) - case "amf_ue": - resByte, err = processor.GetUEConnectByAMF(reqMsg.RequestID, reqMsg.Data) - case "mme_ue": - resByte, err = processor.GetUEConnectByMME(reqMsg.RequestID, reqMsg.Data) - case "upf_tf": - resByte, err = processor.GetUPFTotalFlow(reqMsg.RequestID, reqMsg.Data) - case "ne_state": - resByte, err = processor.GetNeState(reqMsg.RequestID, reqMsg.Data) - default: - err = fmt.Errorf("message type %s not supported", reqMsg.Type) - } - - if err != nil { - logger.Warnf("ws Commont UID %s err: %s", client.BindUid, err.Error()) - msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) - client.MsgChan <- msgByte - return - } - if len(resByte) > 0 { - client.MsgChan <- resByte - } -} - -// Shell 接收终端交互业务处理 -func (s *WSReceiveImpl) Shell(client *model.WSClient, reqMsg model.WSRequest) { - // 必传requestId确认消息 - if reqMsg.RequestID == "" { - msg := "message requestId is required" - logger.Infof("ws Shell UID %s err: %s", client.BindUid, msg) - msgByte, _ := json.Marshal(result.ErrMsg(msg)) - client.MsgChan <- msgByte - return - } - - var resByte []byte - var err error - - switch reqMsg.Type { - case "close": - s.close(client) - return - case "ssh": - // SSH会话消息接收写入会话 - command := reqMsg.Data.(string) - sshClientSession := client.ChildConn.(*ssh.SSHClientSession) - _, err = sshClientSession.Write(command) - case "ssh_resize": - // SSH会话窗口重置 - msgByte, _ := json.Marshal(reqMsg.Data) - var data struct { - Cols int `json:"cols"` - Rows int `json:"rows"` - } - err = json.Unmarshal(msgByte, &data) - if err == nil { - sshClientSession := client.ChildConn.(*ssh.SSHClientSession) - err = sshClientSession.Session.WindowChange(data.Rows, data.Cols) - } - default: - err = fmt.Errorf("message type %s not supported", reqMsg.Type) - } - - if err != nil { - logger.Warnf("ws Shell UID %s err: %s", client.BindUid, err.Error()) - msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) - client.MsgChan <- msgByte - if err == io.EOF { - // 等待1s后关闭连接 - time.Sleep(1 * time.Second) - client.StopChan <- struct{}{} - } - return - } - if len(resByte) > 0 { - client.MsgChan <- resByte - } -} - -// ShellView 接收查看文件终端交互业务处理 -func (s *WSReceiveImpl) ShellView(client *model.WSClient, reqMsg model.WSRequest) { - // 必传requestId确认消息 - if reqMsg.RequestID == "" { - msg := "message requestId is required" - logger.Infof("ws ShellView UID %s err: %s", client.BindUid, msg) - msgByte, _ := json.Marshal(result.ErrMsg(msg)) - client.MsgChan <- msgByte - return - } - - var resByte []byte - var err error - - switch reqMsg.Type { - case "close": - s.close(client) - return - case "cat", "tail": - var command string - if reqMsg.Type == "cat" { - command, err = processor.ParseCat(reqMsg.Data) - } - if reqMsg.Type == "tail" { - command, err = processor.ParseTail(reqMsg.Data) - } - if command != "" && err == nil { - sshClientSession := client.ChildConn.(*ssh.SSHClientSession) - _, err = sshClientSession.Write(command) - } - case "ctrl-c": - // 模拟按下 Ctrl+C - sshClientSession := client.ChildConn.(*ssh.SSHClientSession) - _, err = sshClientSession.Write("\u0003\n") - case "resize": - // 会话窗口重置 - msgByte, _ := json.Marshal(reqMsg.Data) - var data struct { - Cols int `json:"cols"` - Rows int `json:"rows"` - } - err = json.Unmarshal(msgByte, &data) - if err == nil { - sshClientSession := client.ChildConn.(*ssh.SSHClientSession) - err = sshClientSession.Session.WindowChange(data.Rows, data.Cols) - } - default: - err = fmt.Errorf("message type %s not supported", reqMsg.Type) - } - - if err != nil { - logger.Warnf("ws ShellView UID %s err: %s", client.BindUid, err.Error()) - msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) - client.MsgChan <- msgByte - if err == io.EOF { - // 等待1s后关闭连接 - time.Sleep(1 * time.Second) - client.StopChan <- struct{}{} - } - return - } - if len(resByte) > 0 { - client.MsgChan <- resByte - } -} - -// Telnet 接收终端交互业务处理 -func (s *WSReceiveImpl) Telnet(client *model.WSClient, reqMsg model.WSRequest) { - // 必传requestId确认消息 - if reqMsg.RequestID == "" { - msg := "message requestId is required" - logger.Infof("ws Shell UID %s err: %s", client.BindUid, msg) - msgByte, _ := json.Marshal(result.ErrMsg(msg)) - client.MsgChan <- msgByte - return - } - - var resByte []byte - var err error - - switch reqMsg.Type { - case "close": - s.close(client) - return - case "telnet": - // Telnet会话消息接收写入会话 - command := reqMsg.Data.(string) - telnetClientSession := client.ChildConn.(*telnet.TelnetClientSession) - _, err = telnetClientSession.Write(command) - case "telnet_resize": - // Telnet会话窗口重置 - msgByte, _ := json.Marshal(reqMsg.Data) - var data struct { - Cols int `json:"cols"` - Rows int `json:"rows"` - } - err = json.Unmarshal(msgByte, &data) - if err == nil { - // telnetClientSession := client.ChildConn.(*telnet.TelnetClientSession) - // _ = telnetClientSession.WindowChange(data.Rows, data.Cols) - } - default: - err = fmt.Errorf("message type %s not supported", reqMsg.Type) - } - - if err != nil { - logger.Warnf("ws Shell UID %s err: %s", client.BindUid, err.Error()) - msgByte, _ := json.Marshal(result.ErrMsg(err.Error())) - client.MsgChan <- msgByte - if err == io.EOF { - // 等待1s后关闭连接 - time.Sleep(1 * time.Second) - client.StopChan <- struct{}{} - } - return - } - if len(resByte) > 0 { - client.MsgChan <- resByte - } -} diff --git a/src/modules/ws/service/ws_send.go b/src/modules/ws/service/ws_send.go index 91e48b14..04fff1f9 100644 --- a/src/modules/ws/service/ws_send.go +++ b/src/modules/ws/service/ws_send.go @@ -1,10 +1,87 @@ package service -// IWSSend WebSocket消息发送处理 服务层接口 -type IWSSend interface { - // ByClientID 给已知客户端发消息 - ByClientID(clientID string, data any) error +import ( + "encoding/json" + "fmt" - // ByGroupID 给订阅组的客户端发送消息 - ByGroupID(gid string, data any) error + "be.ems/src/framework/vo/result" + "be.ems/src/modules/ws/model" +) + +// 订阅组指定编号为支持服务器向客户端主动推送数据 +const ( + // 组号-其他 + GROUP_OTHER = "0" + // 组号-跟踪任务数据变更 2_traceId + GROUP_TRACE = "2_" + // 组号-指标通用 10_neType_neId + GROUP_KPI = "10_" + // 组号-指标UPF 12_neId + GROUP_KPI_UPF = "12_" + // 组号-自定义KPI指标20_neType_neId + GROUP_KPI_C = "20_" + // 组号-IMS_CDR会话事件 1005_neId + GROUP_IMS_CDR = "1005_" + // 组号-SMF_CDR会话事件 1006_neId + GROUP_SMF_CDR = "1006_" + // 组号-SMSC_CDR会话事件 1007_neId + GROUP_SMSC_CDR = "1007_" + // 组号-AMF_UE会话事件 + GROUP_AMF_UE = "1010" + // 组号-MME_UE会话事件 1011_neId + GROUP_MME_UE = "1011_" +) + +// 实例化服务层 WSSend 结构体 +var NewWSSend = &WSSend{} + +// WSSend WebSocket消息发送处理 服务层处理 +type WSSend struct{} + +// ByClientID 给已知客户端发消息 +func (s *WSSend) ByClientID(clientID string, data any) error { + v, ok := wsClients.Load(clientID) + if !ok { + return fmt.Errorf("no fount client ID: %s", clientID) + } + + dataByte, err := json.Marshal(result.OkData(data)) + if err != nil { + return err + } + + client := v.(*model.WSClient) + if len(client.MsgChan) > 90 { + NewWS.ClientClose(client.ID) + return fmt.Errorf("msg chan over 90 will close client ID: %s", clientID) + } + client.MsgChan <- dataByte + return nil +} + +// ByGroupID 给订阅组的客户端发送消息 +func (s *WSSend) ByGroupID(groupID string, data any) error { + clientIds, ok := wsGroup.Load(groupID) + if !ok { + return fmt.Errorf("no fount Group ID: %s", groupID) + } + + // 检查组内是否有客户端 + ids := clientIds.(*[]string) + if len(*ids) == 0 { + return fmt.Errorf("no members in the group") + } + + // 遍历给客户端发消息 + for _, clientId := range *ids { + err := s.ByClientID(clientId, map[string]any{ + "groupId": groupID, + "data": data, + }) + if err != nil { + continue + } + } + + return nil } diff --git a/src/modules/ws/service/ws_send.impl.go b/src/modules/ws/service/ws_send.impl.go deleted file mode 100644 index ee440800..00000000 --- a/src/modules/ws/service/ws_send.impl.go +++ /dev/null @@ -1,85 +0,0 @@ -package service - -import ( - "encoding/json" - "fmt" - - "be.ems/src/framework/vo/result" - "be.ems/src/modules/ws/model" -) - -// 订阅组指定编号为支持服务器向客户端主动推送数据 -const ( - // 组号-其他 - GROUP_OTHER = "0" - // 组号-指标通用 10_neType_neId - GROUP_KPI = "10_" - // 组号-指标UPF 12_neId - GROUP_KPI_UPF = "12_" - // 组号-自定义KPI指标20_neType_neId - GROUP_KPI_C = "20_" - // 组号-IMS_CDR会话事件 1005_neId - GROUP_IMS_CDR = "1005_" - // 组号-SMF_CDR会话事件 1006_neId - GROUP_SMF_CDR = "1006_" - // 组号-SMSC_CDR会话事件 1007_neId - GROUP_SMSC_CDR = "1007_" - // 组号-AMF_UE会话事件 - GROUP_AMF_UE = "1010" - // 组号-MME_UE会话事件 1011_neId - GROUP_MME_UE = "1011_" -) - -// 实例化服务层 WSSendImpl 结构体 -var NewWSSendImpl = &WSSendImpl{} - -// IWSSend WebSocket消息发送处理 服务层处理 -type WSSendImpl struct{} - -// ByClientID 给已知客户端发消息 -func (s *WSSendImpl) ByClientID(clientID string, data any) error { - v, ok := wsClients.Load(clientID) - if !ok { - return fmt.Errorf("no fount client ID: %s", clientID) - } - - dataByte, err := json.Marshal(result.OkData(data)) - if err != nil { - return err - } - - client := v.(*model.WSClient) - if len(client.MsgChan) > 90 { - NewWSImpl.ClientClose(client.ID) - return fmt.Errorf("msg chan over 90 will close client ID: %s", clientID) - } - client.MsgChan <- dataByte - return nil -} - -// ByGroupID 给订阅组的客户端发送消息 -func (s *WSSendImpl) ByGroupID(groupID string, data any) error { - clientIds, ok := wsGroup.Load(groupID) - if !ok { - return fmt.Errorf("no fount Group ID: %s", groupID) - } - - // 检查组内是否有客户端 - ids := clientIds.(*[]string) - if len(*ids) == 0 { - return fmt.Errorf("no members in the group") - } - - // 遍历给客户端发消息 - for _, clientId := range *ids { - err := s.ByClientID(clientId, map[string]any{ - "groupId": groupID, - "data": data, - }) - if err != nil { - continue - } - } - - return nil -} diff --git a/sshsvc/mibs/CINTEL-HLR-MIB.my b/sshsvc/mibs/CINTEL-HLR-MIB.my new file mode 100644 index 00000000..7fcb47e9 --- /dev/null +++ b/sshsvc/mibs/CINTEL-HLR-MIB.my @@ -0,0 +1,7567 @@ +-- +-- CINTEL-SS-HLR-MIB.my +-- MIB generated by MG-SOFT Visual MIB Builder Version 7.0 Build 209 +-- Monday, September 13, 2010 at 17:22:53 +-- + + CINTEL-HLR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + cintelSS, RowStatus + FROM CINTEL-MIB + Opaque, OBJECT-TYPE, MODULE-IDENTITY + FROM SNMPv2-SMI; + + + -- 1.3.6.1.4.1.1379.2.3.3.3 + hlr MODULE-IDENTITY + LAST-UPDATED "201706291606Z" -- June 29, 2007 at 16:06 GMT + ORGANIZATION + "CINTEL" + CONTACT-INFO + "cintel + support@cintel.com.cn" + DESCRIPTION + "Description." + REVISION "201706051219Z" -- June 05, 2007 at 12:19 GMT + DESCRIPTION + "This is the first release version of the HLR MIB" + ::= { application 3 } + + + +-- +-- Type definitions +-- + + AvailStateChoices ::= INTEGER + { + inTest(0), + failed(1), + powerOff(2), + offLine(3), + onLine(4), + dependency(5), + degraded(6), + notInstalled(7) + } + + +-- +-- Node definitions +-- + +-- Node definitions +-- +-- The MIB module for ctcn. +-- 1.3.6.1.4.1.1379.1.3 + -- 1.3.6.1.4.1.1379.2.3 + ctcn OBJECT IDENTIFIER ::= { cintelSS 3 } + + +-- 1.3.6.1.4.1.1379.1.3.3 + -- 1.3.6.1.4.1.1379.2.3.3 + application OBJECT IDENTIFIER ::= { ctcn 3 } + + +-- 1.3.6.1.4.1.1379.1.3.3.2.2 + -- 1.3.6.1.4.1.1379.2.3.3.3.1 + management OBJECT IDENTIFIER ::= { hlr 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.1.1 + instance OBJECT IDENTIFIER ::= { management 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.1 + instName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instName + Remark:Instance Name" + ::= { instance 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.2 + instStatus OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instStatus + Remark:System status: Normal, Abnormal" + ::= { instance 2 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.3 + instDesc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instDesc + Remark:Instance Description" + ::= { instance 3 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.4 + instLocation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..12)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instLocation + Remark: Instance location" + ::= { instance 4 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.5 + instContact OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instContact + Remark:Instance contact." + ::= { instance 5 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.7 + instOpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:instOpTime + The value of instOpTime at the time of the most recent + change in state." + ::= { instance 7 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.1.9 + instService OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:instService + The instance service event state, 0: Normal, 1: Link Down, 2: Link Up, 3: Authentication Failure." + ::= { instance 9 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2 + parameter OBJECT IDENTIFIER ::= { hlr 2 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2 + system OBJECT IDENTIFIER ::= { parameter 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1 + cC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:CC + Remark:Country Code" + ::= { system 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.2 + nDC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:NDC + Remark:National Destination Code" + ::= { system 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.3 + startSN OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..12)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:SN Start + Remark:The beginning of the VLR SN range." + ::= { system 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.4 + endSN OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..12)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:SN End + Remark:The end of the VLR SN range." + ::= { system 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.5 + maxLicenses OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Max License + Remark:(Read Only) The maximum subscriber capacity of HLR determined by License Control." + ::= { system 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.6 + usedLicenses OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Used License + Remark:(Read Only) The number of registered HLR subscribers." + ::= { system 6 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.7 + provisionedSubs OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Provisioned Users + Remark:(Read Only) The number of service enabled HLR subscribers." + ::= { system 7 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.8 + registeredSubs OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Registered Users + Remark:(Read Only) The number of registered (both service enabled and disabled) HLR subscribers." + ::= { system 8 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.9 + roamingSubs OBJECT-TYPE + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Roaming Users + Remark:(Read Only) The number of provisioned HLR subscribers currently roaming to VPLMNs." + ::= { system 9 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.10 + softwareVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Software Version + Remark:(Read Only) Version of HLR software." + ::= { system 10 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.11 + dataVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name:Data Version + Remark:(Read Only) Version of HLR subscriber data structure." + ::= { system 11 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.12 + cDRFlag OBJECT-TYPE + SYNTAX INTEGER + { + off(0), + on(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:CDR Flag + Remark:Enable or disable CDR generation of HLR." + ::= { system 12 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.13 + reloadState OBJECT-TYPE + SYNTAX INTEGER + { + idle(0), + reload(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:Reload State + Remark:Select reload to load backup HLR subscriber data from HLR server hard disk." + ::= { system 13 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.14 + saveParamCommand OBJECT-TYPE + SYNTAX INTEGER { saveParameter(1) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Remark:Save the HLR parameters residing in memory to harddisk." + ::= { system 14 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.15 + saveDataCommand OBJECT-TYPE + SYNTAX INTEGER { saveData(1) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Remark:Save the HLR subscriber data to both HLR
harddisk and EMS database." + ::= { system 15 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.16 + saveUSSDParamCommand OBJECT-TYPE + SYNTAX INTEGER { saveUSSDParam(1) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Remark:Save the USSD parameters residing
in memory to harddisk." + ::= { system 16 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.17 + resetUSSDParamCommand OBJECT-TYPE + SYNTAX INTEGER { resetUSSDParam(1) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Remark:Reload and activate all USSD
parameters to default values." + ::= { system 17 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.18 + importSubs OBJECT-TYPE + SYNTAX Opaque (SIZE (7)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Hidden Flag:Yes + OPAQUE DECODE RULE: + [unit]Command[u]00.0-00.7[u]select + [v]0[opt]Idle + [v]1[opt]Sending Command + [v]2[opt]In Processing + [v]3[opt]Succeeded + [v]4[opt]Failed + [unit]Total Numbers[u]01.0-03.7[u]input + [v]toDec-high-0 + [unit]Success Numbers[u]04.0-06.7[u]input + [v]toDec-high-0" + ::= { system 18 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2 + vPLMN OBJECT IDENTIFIER ::= { parameter 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1 + vPLMNTable OBJECT-TYPE + SYNTAX SEQUENCE OF VPLMNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + ::= { vPLMN 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1 + vPLMNEntry OBJECT-TYPE + SYNTAX VPLMNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + INDEX { vplmnIndex } + ::= { vPLMNTable 1 } + + + VPLMNEntry ::= + SEQUENCE { + vplmnIndex + INTEGER, + vplmnCC + OCTET STRING, + vplmnNDC + OCTET STRING, + vplmnStartSN + OCTET STRING, + vplmnEndSN + OCTET STRING, + vplmnRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.1 + vplmnIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index + Remark:VPLMN index number ranges from 0 to 255." + ::= { vPLMNEntry 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.2 + vplmnCC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:CC + Remark:The Country Code of the VPLMN." + ::= { vPLMNEntry 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.3 + vplmnNDC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:NDC + Remark:The National Destination Code of the VPLMN." + ::= { vPLMNEntry 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.4 + vplmnStartSN OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..12)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:SN Start + Remark:The beginning of the VLR range in the VPLMN." + ::= { vPLMNEntry 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.5 + vplmnEndSN OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..12)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:SN End + Remark:The end of the VLR range in the VPLMN." + ::= { vPLMNEntry 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.2.1.1.6 + vplmnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { vPLMNEntry 6 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3 + cSRRList OBJECT IDENTIFIER ::= { parameter 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.1 + cSRR0 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 0(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.2 + cSRR1 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 1(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.3 + cSRR2 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 2(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.4 + cSRR3 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 3(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.5 + cSRR4 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 4(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.6 + cSRR5 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 5(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 6 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.7 + cSRR6 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 6(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 7 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.3.8 + cSRR7 OBJECT-TYPE + SYNTAX Opaque (SIZE (32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "OPAQUE DECODE RULE: + [unit]VPLMN0[u]00.0-00.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN1[u]00.1-00.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN2[u]00.2-00.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN3[u]00.3-00.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN4[u]00.4-00.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN5[u]00.5-00.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN6[u]00.6-00.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN7[u]00.7-00.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN8[u]01.0-01.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN9[u]01.1-01.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN10[u]01.2-01.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN11[u]01.3-01.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN12[u]01.4-01.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN13[u]01.5-01.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN14[u]01.6-01.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN15[u]01.7-01.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN16[u]02.0-02.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN17[u]02.1-02.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN18[u]02.2-02.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN19[u]02.3-02.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN20[u]02.4-02.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN21[u]02.5-02.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN22[u]02.6-02.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN23[u]02.7-02.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN24[u]03.0-03.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN25[u]03.1-03.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN26[u]03.2-03.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN27[u]03.3-03.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN28[u]03.4-03.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN29[u]03.5-03.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN30[u]03.6-03.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN31[u]03.7-03.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN32[u]04.0-04.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN33[u]04.1-04.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN34[u]04.2-04.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN35[u]04.3-04.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN36[u]04.4-04.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN37[u]04.5-04.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN38[u]04.6-04.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN39[u]04.7-04.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN40[u]05.0-05.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN41[u]05.1-05.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN42[u]05.2-05.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN43[u]05.3-05.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN44[u]05.4-05.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN45[u]05.5-05.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN46[u]05.6-05.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN47[u]05.7-05.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN48[u]06.0-06.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN49[u]06.1-06.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN50[u]06.2-06.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN51[u]06.3-06.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN52[u]06.4-06.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN53[u]06.5-06.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN54[u]06.6-06.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN55[u]06.7-06.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN56[u]07.0-07.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN57[u]07.1-07.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN58[u]07.2-07.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN59[u]07.3-07.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN60[u]07.4-07.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN61[u]07.5-07.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN62[u]07.6-07.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN63[u]07.7-07.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN64[u]08.0-08.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN65[u]08.1-08.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN66[u]08.2-08.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN67[u]08.3-08.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN68[u]08.4-08.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN69[u]08.5-08.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN70[u]08.6-08.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN71[u]08.7-08.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN72[u]09.0-09.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN73[u]09.1-09.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN74[u]09.2-09.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN75[u]09.3-09.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN76[u]09.4-09.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN77[u]09.5-09.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN78[u]09.6-09.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN79[u]09.7-09.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN80[u]10.0-10.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN81[u]10.1-10.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN82[u]10.2-10.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN83[u]10.3-10.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN84[u]10.4-10.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN85[u]10.5-10.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN86[u]10.6-10.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN87[u]10.7-10.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN88[u]11.0-11.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN89[u]11.1-11.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN90[u]11.2-11.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN91[u]11.3-11.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN92[u]11.4-11.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN93[u]11.5-11.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN94[u]11.6-11.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN95[u]11.7-11.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN96[u]12.0-12.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN97[u]12.1-12.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN98[u]12.2-12.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN99[u]12.3-12.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN100[u]12.4-12.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN101[u]12.5-12.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN102[u]12.6-12.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN103[u]12.7-12.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN104[u]13.0-13.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN105[u]13.1-13.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN106[u]13.2-13.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN107[u]13.3-13.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN108[u]13.4-13.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN109[u]13.5-13.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN110[u]13.6-13.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN111[u]13.7-13.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN112[u]14.0-14.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN113[u]14.1-14.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN114[u]14.2-14.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN115[u]14.3-14.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN116[u]14.4-14.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN117[u]14.5-14.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN118[u]14.6-14.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN119[u]14.7-14.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN120[u]15.0-15.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN121[u]15.1-15.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN122[u]15.2-15.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN123[u]15.3-15.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN124[u]15.4-15.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN125[u]15.5-15.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN126[u]15.6-15.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN127[u]15.7-15.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN128[u]16.0-16.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN129[u]16.1-16.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN130[u]16.2-16.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN131[u]16.3-16.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN132[u]16.4-16.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN133[u]16.5-16.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN134[u]16.6-16.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN135[u]16.7-16.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN136[u]17.0-17.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN137[u]17.1-17.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN138[u]17.2-17.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN139[u]17.3-17.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN140[u]17.4-17.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN141[u]17.5-17.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN142[u]17.6-17.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN143[u]17.7-17.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN144[u]18.0-18.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN145[u]18.1-18.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN146[u]18.2-18.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN147[u]18.3-18.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN148[u]18.4-18.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN149[u]18.5-18.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN150[u]18.6-18.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN151[u]18.7-18.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN152[u]19.0-19.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN153[u]19.1-19.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN154[u]19.2-19.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN155[u]19.3-19.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN156[u]19.4-19.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN157[u]19.5-19.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN158[u]19.6-19.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN159[u]19.7-19.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN160[u]20.0-20.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN161[u]20.1-20.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN162[u]20.2-20.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN163[u]20.3-20.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN164[u]20.4-20.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN165[u]20.5-20.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN166[u]20.6-20.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN167[u]20.7-20.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN168[u]21.0-21.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN169[u]21.1-21.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN170[u]21.2-21.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN171[u]21.3-21.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN172[u]21.4-21.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN173[u]21.5-21.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN174[u]21.6-21.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN175[u]21.7-21.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN176[u]22.0-22.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN177[u]22.1-22.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN178[u]22.2-22.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN179[u]22.3-22.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN180[u]22.4-22.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN181[u]22.5-22.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN182[u]22.6-22.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN183[u]22.7-22.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN184[u]23.0-23.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN185[u]23.1-23.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN186[u]23.2-23.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN187[u]23.3-23.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN188[u]23.4-23.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN189[u]23.5-23.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN190[u]23.6-23.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN191[u]23.7-23.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN192[u]24.0-24.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN193[u]24.1-24.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN194[u]24.2-24.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN195[u]24.3-24.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN196[u]24.4-24.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN197[u]24.5-24.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN198[u]24.6-24.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN199[u]24.7-24.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN200[u]25.0-25.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN201[u]25.1-25.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN202[u]25.2-25.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN203[u]25.3-25.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN204[u]25.4-25.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN205[u]25.5-25.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN206[u]25.6-25.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN207[u]25.7-25.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN208[u]26.0-26.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN209[u]26.1-26.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN210[u]26.2-26.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN211[u]26.3-26.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN212[u]26.4-26.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN213[u]26.5-26.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN214[u]26.6-26.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN215[u]26.7-26.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN216[u]27.0-27.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN217[u]27.1-27.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN218[u]27.2-27.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN219[u]27.3-27.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN220[u]27.4-27.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN221[u]27.5-27.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN222[u]27.6-27.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN223[u]27.7-27.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN224[u]28.0-28.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN225[u]28.1-28.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN226[u]28.2-28.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN227[u]28.3-28.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN228[u]28.4-28.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN229[u]28.5-28.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN230[u]28.6-28.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN231[u]28.7-28.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN232[u]29.0-29.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN233[u]29.1-29.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN234[u]29.2-29.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN235[u]29.3-29.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN236[u]29.4-29.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN237[u]29.5-29.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN238[u]29.6-29.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN239[u]29.7-29.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN240[u]30.0-30.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN241[u]30.1-30.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN242[u]30.2-30.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN243[u]30.3-30.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN244[u]30.4-30.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN245[u]30.5-30.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN246[u]30.6-30.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN247[u]30.7-30.7[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN248[u]31.0-31.0[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN249[u]31.1-31.1[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN250[u]31.2-31.2[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN251[u]31.3-31.3[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN252[u]31.4-31.4[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN253[u]31.5-31.5[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN254[u]31.6-31.6[u]select + [v]0[opt]N + [v]1[opt]Y + [unit]VPLMN255[u]31.7-31.7[u]select + [v]0[opt]N + [v]1[opt]Y + [remark]
Define CSRR 7(country specific roaming restriction) lists to confine the roaming range of a subscriber.
The CSRR list defines the roaming restriction for 256 VPLMN ranges.
" + ::= { cSRRList 8 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4 + rSZIList OBJECT IDENTIFIER ::= { parameter 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1 + rSZITable OBJECT-TYPE + SYNTAX SEQUENCE OF RSZIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + ::= { rSZIList 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1 + rSZIEntry OBJECT-TYPE + SYNTAX RSZIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + INDEX { rsziIndex } + ::= { rSZITable 1 } + + + RSZIEntry ::= + SEQUENCE { + rsziIndex + INTEGER, + rsziCC + OCTET STRING, + rsziNDC + OCTET STRING, + rsziZoneCode + INTEGER, + rsziRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1.1 + rsziIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index + Remark:RSZI (Regional Subscription Zone Identity) index number ranges from 0 to 255." + ::= { rSZIEntry 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1.2 + rsziCC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:CC + Remark:The Country Code of the regional subscription zone." + ::= { rSZIEntry 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1.3 + rsziNDC OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:NDC + Remark:The National Destination Code of the regional subscription zone." + ::= { rSZIEntry 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1.4 + rsziZoneCode OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Zone Code + Remark:The regional subscription zone code." + ::= { rSZIEntry 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.4.1.1.5 + rsziRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { rSZIEntry 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5 + faxGSMBC OBJECT IDENTIFIER ::= { parameter 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5.1 + faxGSMBCTable OBJECT-TYPE + SYNTAX SEQUENCE OF FaxGSMBCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + ::= { faxGSMBC 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5.1.1 + faxGSMBCEntry OBJECT-TYPE + SYNTAX FaxGSMBCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + INDEX { fgIndex } + ::= { faxGSMBCTable 1 } + + + FaxGSMBCEntry ::= + SEQUENCE { + fgIndex + INTEGER, + fgBearerCapability + OCTET STRING, + fgRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5.1.1.1 + fgIndex OBJECT-TYPE + SYNTAX INTEGER (0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index + Remark:Index number of this Fax GSM Bearer Capability entry." + ::= { faxGSMBCEntry 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5.1.1.2 + fgBearerCapability OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..14)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Bearer Capability + Remark:Define the GSM Bearer Capability for fax service.
- Default = A3B88120156380" + ::= { faxGSMBCEntry 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.5.1.1.3 + fgRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { faxGSMBCEntry 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6 + dataGSMBC OBJECT IDENTIFIER ::= { parameter 6 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6.1 + dataGSMBCTable OBJECT-TYPE + SYNTAX SEQUENCE OF DataGSMBCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + ::= { dataGSMBC 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6.1.1 + dataGSMBCEntry OBJECT-TYPE + SYNTAX DataGSMBCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Description." + INDEX { dgIndex } + ::= { dataGSMBCTable 1 } + + + DataGSMBCEntry ::= + SEQUENCE { + dgIndex + INTEGER, + dgBearerCapability + OCTET STRING, + dgRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6.1.1.1 + dgIndex OBJECT-TYPE + SYNTAX INTEGER (0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index + Remark:Index number of this Data GSM Bearer Capability entry." + ::= { dataGSMBCEntry 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6.1.1.2 + dgBearerCapability OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..14)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Bearer Capability + Remark:Define the GSM Bearer Capability for data service.
- Default = A28881211563A8" + ::= { dataGSMBCEntry 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.6.1.1.3 + dgRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { dataGSMBCEntry 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8 + uSSD OBJECT IDENTIFIER ::= { parameter 8 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.1 + uSSDFormatString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:USSD Format + Remark:The access code of USSD service. Start with 2-3 digits of '*' or '#' . End with '#'. Separate sections by '*'.
Contents can be added:

- C/c = Service Code
- R/r = Router Indicator
- B = Blank
- S = Supplement Info

For example: **C3B*S#" + ::= { uSSD 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.2 + uGCsiServiceCode0 OBJECT-TYPE + SYNTAX INTEGER (0..9999) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI Service Code 0 + Remark:Service code for UG-CSI (USSD General - CAMEL Subscription Information). Prepaid subscriber dials service code to apply different prepaid services.
For example: Service Code = 111, prepaid user dials **1215111*# to enquire account info." + ::= { uSSD 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.3 + uGCsiGSMSCFAddr0 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..18)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI SCF Address 0 + Remark:SCP address for UG-CSI (USSD General - CAMEL Subscription Information). The E.164 number of the SCP-MAP.
- Format = 91+CC+NDC+SN" + ::= { uSSD 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.4 + uGCsiServiceCode1 OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI Service Code 1 + Remark:Service code for UG-CSI (USSD General - CAMEL Subscription Information). Prepaid subscriber dials service code to apply different prepaid services." + ::= { uSSD 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.5 + uGCsiGSMSCFAddr1 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..18)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI SCF Address 1 + Remark:SCP address for UG-CSI (USSD General - CAMEL Subscription Information). The E.164 number of the SCP-MAP.
- Format = 91+CC+NDC+SN" + ::= { uSSD 5 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.6 + uGCsiServiceCode2 OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI Service Code 2 + Remark:Service code for UG-CSI (USSD General - CAMEL Subscription Information). Prepaid subscriber dials service code to apply different prepaid services." + ::= { uSSD 6 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.7 + uGCsiGSMSCFAddr2 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..18)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI SCF Address 2 + Remark:SCP address for UG-CSI (USSD General - CAMEL Subscription Information). The E.164 number of the SCP-MAP.
- Format = 91+CC+NDC+SN" + ::= { uSSD 7 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.8 + uGCsiServiceCode3 OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI Service Code 3 + Remark:Service code for UG-CSI (USSD General - CAMEL Subscription Information). Prepaid subscriber dials service code to apply different prepaid services." + ::= { uSSD 8 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.8.9 + uGCsiGSMSCFAddr3 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..18)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Name:UG-CSI SCF Address 3 + Remark:SCP address for UG-CSI (USSD General - CAMEL Subscription Information). The E.164 number of the SCP-MAP.
- Format = 91+CC+NDC+SN" + ::= { uSSD 9 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20 + ussdEAE OBJECT IDENTIFIER ::= { parameter 10 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1 + ussdEAETable OBJECT-TYPE + SYNTAX SEQUENCE OF UssdEAEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Name:USSD EAE" + ::= { ussdEAE 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1.1 + ussdEAEEntry OBJECT-TYPE + SYNTAX UssdEAEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "level:1 Name:USSD EAE" + INDEX { ueIndex } + ::= { ussdEAETable 1 } + + + UssdEAEEntry ::= + SEQUENCE { + ueIndex + INTEGER, + ueServiceCode + INTEGER, + ueServiceNum + OCTET STRING, + ueRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1.1.1 + ueIndex OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index + Remark:USSD EAE (Extended Application Entity) index number ranges from 0 to 127." + ::= { ussdEAEEntry 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1.1.2 + ueServiceCode OBJECT-TYPE + SYNTAX INTEGER (0..9999) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Service Code + Remark:Subscriber dials service code to access different USSD services." + ::= { ussdEAEEntry 2 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1.1.3 + ueServiceNum OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..9)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Service Number + Remark:Enter the identical Service Number as that set in SMPP configuration to connect with the third party USSD server." + ::= { ussdEAEEntry 3 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.20.1.1.4 + ueRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { ussdEAEEntry 4 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21 + epsAPN OBJECT IDENTIFIER ::= { parameter 11 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1 + epsAPNTable OBJECT-TYPE + SYNTAX SEQUENCE OF EpsAPNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Name:EPS APN" + ::= { epsAPN 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1 + epsAPNEntry OBJECT-TYPE + SYNTAX EpsAPNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "level:1 Name:EPS APN" + INDEX { apnIndex } + ::= { epsAPNTable 1 } + + + EpsAPNEntry ::= + SEQUENCE { + apnIndex + INTEGER, + apnContextId + INTEGER, + apnPDNType + INTEGER, + apnQOSClassId + INTEGER, + apnVPLMNAllowed + INTEGER, + apnVisitedNetworkId + OCTET STRING, + apnPDNGWAllocationType + INTEGER, + apnPDNGWIdentity + OCTET STRING, + apnAMBRUL + INTEGER, + apnAMBRDL + INTEGER, + apnChargingCharacteristics + OCTET STRING, + apnServiceSelection + OCTET STRING, + apnOIReplacement + OCTET STRING, + apnRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.1 + apnIndex OBJECT-TYPE + SYNTAX INTEGER (0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index" + ::= { epsAPNEntry 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.2 + apnContextId OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Context Id" + ::= { epsAPNEntry 2 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.3 + apnPDNType OBJECT-TYPE + SYNTAX INTEGER + { + IPv4(0), + IPv6(1), + IPv4v6(2), + IPv4orIPv6(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:PDN Type" + DEFVAL { IPv4 } + ::= { epsAPNEntry 3 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.4 + apnQOSClassId OBJECT-TYPE + SYNTAX INTEGER (0..16) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Qos Class Id" + ::= { epsAPNEntry 4 } + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.5 + apnVPLMNAllowed OBJECT-TYPE + SYNTAX INTEGER + { + NOTALLOWED(0), + ALLOWED(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + DEFVAL { ALLOWED } + ::= { epsAPNEntry 5 } + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.6 + apnVisitedNetworkId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + ::= { epsAPNEntry 6 } + + apnPDNGWAllocationType OBJECT-TYPE + SYNTAX INTEGER + { + STATIC(0), + DYNAMIC(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + DEFVAL { DYNAMIC } + ::= { epsAPNEntry 7 } + + apnPDNGWIdentity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + ::= { epsAPNEntry 8 } + + apnAMBRUL OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:AMBR UL" + ::= { epsAPNEntry 9 } + + apnAMBRDL OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:AMBR DL" + ::= { epsAPNEntry 10 } + + apnChargingCharacteristics OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + ::= { epsAPNEntry 11 } + + apnServiceSelection OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Service Selection" + ::= { epsAPNEntry 12 } + + apnOIReplacement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter" + ::= { epsAPNEntry 13 } + + apnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { epsAPNEntry 14 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.22 + epsQOS OBJECT IDENTIFIER ::= { parameter 12 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.22.1 + epsQOSTable OBJECT-TYPE + SYNTAX SEQUENCE OF EpsQOSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Name:EPS QOS" + ::= { epsQOS 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.22.1.1 + epsQOSEntry OBJECT-TYPE + SYNTAX EpsQOSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "level:1 Name:EPS QOS" + INDEX { qosIndex } + ::= { epsQOSTable 1 } + + + EpsQOSEntry ::= + SEQUENCE { + qosIndex + INTEGER, + qosQosClassId + INTEGER, + qosPriorityLevel + INTEGER, + qosPreEmptionCapability + INTEGER, + qosPreEmptionVulnerability + INTEGER, + qosRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.22.1.1.1 + qosIndex OBJECT-TYPE + SYNTAX INTEGER (0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index" + ::= { epsQOSEntry 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.21.1.1.2 + qosQosClassId OBJECT-TYPE + SYNTAX INTEGER (0..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Qos Class Id" + ::= { epsQOSEntry 2 } + + qosPriorityLevel OBJECT-TYPE + SYNTAX INTEGER (0..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Priority Level" + ::= { epsQOSEntry 3 } + + qosPreEmptionCapability OBJECT-TYPE + SYNTAX INTEGER + { + Disable(0), + Enable(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:PreEmptionCapability" + DEFVAL { Disable } + ::= { epsQOSEntry 4 } + + qosPreEmptionVulnerability OBJECT-TYPE + SYNTAX INTEGER + { + Disable(0), + Enable(1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:PreEmptionVulnerability" + DEFVAL { Disable } + ::= { epsQOSEntry 5 } + + qosRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { epsQOSEntry 6 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.23 + epsTPL OBJECT IDENTIFIER ::= { parameter 13 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.23.1 + epsTPLTable OBJECT-TYPE + SYNTAX SEQUENCE OF EpsTPLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Name:EPS TPL" + ::= { epsTPL 1 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.23.1.1 + epsTPLEntry OBJECT-TYPE + SYNTAX EpsTPLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "level:1 Name:EPS TPL" + INDEX { tplIndex } + ::= { epsTPLTable 1 } + + + EpsTPLEntry ::= + SEQUENCE { + tplIndex + INTEGER, + tplName + OCTET STRING, + tplUeAmbrUL + INTEGER, + tplUeAmbrDL + INTEGER, + tplUeApnOiReplacement + OCTET STRING, + tplRfsp + INTEGER, + tplRauTauTimer + INTEGER, + tplChargingCharacteristic + OCTET STRING, + tplRowStatus + RowStatus + } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.23.1.1.1 + tplIndex OBJECT-TYPE + SYNTAX INTEGER (0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Index" + ::= { epsTPLEntry 1 } + + -- 1.3.6.1.4.1.1379.2.3.3.3.2.23.1.1.2 + tplName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:Template name" + ::= { epsTPLEntry 2 } + + tplUeAmbrUL OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:UE AMBR UL" + ::= { epsTPLEntry 3 } + + tplUeAmbrDL OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes Name:UE AMBR DL" + ::= { epsTPLEntry 4 } + + tplUeApnOiReplacement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { epsTPLEntry 5 } + + tplRfsp OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { epsTPLEntry 6 } + + tplRauTauTimer OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { epsTPLEntry 7 } + + tplChargingCharacteristic OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { epsTPLEntry 8 } + + tplRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Key Parameter:Yes" + ::= { epsTPLEntry 9 } + + + -- 1.3.6.1.4.1.1379.2.3.3.3.3 + hlrtraps OBJECT IDENTIFIER ::= { hlr 3 } + + -- Severity Object Definition + severity OBJECT-TYPE + SYNTAX INTEGER { + critical(1), + major(2), + minor(3), + warning(4), + event(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The severity level of the trap." + ::= { hlr 4 } + + linkDown NOTIFICATION-TYPE + OBJECTS { severity } + STATUS current + DESCRIPTION + "A trap indicating that a link is down." + ::= { hlrtraps 1 } + + linkUp NOTIFICATION-TYPE + OBJECTS { severity } + STATUS current + DESCRIPTION + "A trap indicating that a link is up." + ::= { hlrtraps 2 } + + authenticationFailure NOTIFICATION-TYPE + OBJECTS { severity } + STATUS current + DESCRIPTION + "A trap indicating an authentication failure." + ::= { hlrtraps 3 } + +END +-- +-- CINTEL-HLR-MIB.my +-- diff --git a/sshsvc/mibs/CINTEL-HLR-MIB.smidb b/sshsvc/mibs/CINTEL-HLR-MIB.smidb new file mode 100644 index 00000000..411ce61a Binary files /dev/null and b/sshsvc/mibs/CINTEL-HLR-MIB.smidb differ diff --git a/sshsvc/mibs/CINTEL-MIB.my b/sshsvc/mibs/CINTEL-MIB.my new file mode 100644 index 00000000..378eedd3 --- /dev/null +++ b/sshsvc/mibs/CINTEL-MIB.my @@ -0,0 +1,656 @@ +-- +-- CINTEL-MIB.my +-- MIB generated by MG-SOFT Visual MIB Builder Version 7.0 Build 209 +-- Friday, December 16, 2011 at 15:52:13 +-- + + CINTEL-MIB DEFINITIONS ::= BEGIN + + IMPORTS + enterprises, TimeTicks, MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + + -- 1.3.6.1.4.1.1379.2 + cintelSS MODULE-IDENTITY + LAST-UPDATED "201706041222Z" -- June 04, 2017 at 12:22 GMT + ORGANIZATION + "CINTEL" + CONTACT-INFO + "cintel + support@cintel.com.cn" + DESCRIPTION + "The MIB module for cintel's Softswitch products." + REVISION "201706041223Z" -- June 04, 2017 at 12:23 GMT + DESCRIPTION + "This is the first release version of the MIB" + ::= { cintelNS 2 } + + + +-- +-- Type definitions +-- + + AdminStateChoices ::= INTEGER + { + locked(0), + unlocked(1), + shutDown(2) + } + + OperStateChoices ::= INTEGER + { + disable(0), + enable(1) + } + + AvailStateChoices ::= INTEGER + { + inTest(0), + failed(1), + powerOff(2), + offLine(3), + onLine(4), + dependency(5), + degraded(6), + notInstalled(7) + } + + +-- +-- Textual conventions +-- + +-- TEXTUAL-CONVENTION MACRO ::= +-- BEGIN +-- TYPE NOTATION ::= +-- DisplayPart +-- "STATUS" Status +-- "DESCRIPTION" Text +-- ReferPart +-- "SYNTAX" Syntax +-- +-- VALUE NOTATION ::= +-- value(VALUE Syntax) +-- +-- DisplayPart ::= +-- "DISPLAY-HINT" Text +-- | empty +-- +-- Status ::= +-- "current" +-- | "deprecated" +-- | "obsolete" +-- +-- ReferPart ::= +-- "REFERENCE" Text +-- | empty +-- +-- -- -- uses the NVT ASCII character set +-- Text ::= """" string """" +-- +-- Syntax ::= +-- type(ObjectSyntax) +-- | "BITS" "{" Kibbles "}" +-- Kibbles ::= +-- Kibble +-- | Kibbles "," Kibble +-- Kibble ::= +-- identifier "(" nonNegativeNumber ")" +-- END + DisplayString8 ::= TEXTUAL-CONVENTION + DISPLAY-HINT + "8a" + STATUS current + DESCRIPTION + "Represents textual information taken from the NVT ASCII + character set, as defined in pages 4, 10-11 of RFC 854. + + To summarize RFC 854, the NVT ASCII repertoire specifies: + + - the use of character codes 0-127 (decimal) + + - the graphics characters (32-126) are interpreted as + US ASCII + + - NUL, LF, CR, BEL, BS, HT, VT and FF have the special + meanings specified in RFC 854 + + - the other 25 codes have no standard interpretation + + - the sequence 'CR LF' means newline + + - the sequence 'CR NUL' means carriage-return + + - an 'LF' not preceded by a 'CR' means moving to the + same column on the next line. + + - the sequence 'CR x' for any x other than LF or NUL is + illegal. (Note that this also means that a string may + end with either 'CR LF' or 'CR NUL', but not with CR.) + + Any object defined using this syntax may not exceed 255 + characters in length." + SYNTAX OCTET STRING (SIZE (0..8)) + + DisplayString16 ::= TEXTUAL-CONVENTION + DISPLAY-HINT + "16a" + STATUS current + DESCRIPTION + "A version of DisplayString that contains only 16 characters most." + SYNTAX OCTET STRING (SIZE (0..16)) + + DisplayString32 ::= TEXTUAL-CONVENTION + DISPLAY-HINT + "32a" + STATUS current + DESCRIPTION + "A version of DisplayString that contains only 32 characters most." + SYNTAX OCTET STRING (SIZE (0..32)) + + DisplayString64 ::= TEXTUAL-CONVENTION + DISPLAY-HINT + "64a" + STATUS current + DESCRIPTION + "A version of DisplayString that contains only 64 characters most." + SYNTAX OCTET STRING (SIZE (0..64)) + + DisplayString ::= TEXTUAL-CONVENTION + DISPLAY-HINT + "255a" + STATUS current + DESCRIPTION + "A version of DisplayString that contains only 255 characters most." + SYNTAX OCTET STRING (SIZE (0..255)) + + RowStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The RowStatus textual convention is used to manage the + creation and deletion of conceptual rows, and is used as the + value of the SYNTAX clause for the status column of a + conceptual row (as described in Section 7.7.1 of [2].) + + The status column has six defined values: + + - `active', which indicates that the conceptual row is + available for use by the managed device; + + - `notInService', which indicates that the conceptual + row exists in the agent, but is unavailable for use by + the managed device (see NOTE below); + + - `notReady', which indicates that the conceptual row + exists in the agent, but is missing information + necessary in order to be available for use by the + managed device; + + - `createAndGo', which is supplied by a management + station wishing to create a new instance of a + conceptual row and to have its status automatically set + to active, making it available for use by the managed + device; + + - `createAndWait', which is supplied by a management + station wishing to create a new instance of a + conceptual row (but not make it available for use by + the managed device); and, + + - `destroy', which is supplied by a management station + wishing to delete all of the instances associated with + an existing conceptual row. + + Whereas five of the six values (all except `notReady') may + be specified in a management protocol set operation, only + three values will be returned in response to a management + protocol retrieval operation: `notReady', `notInService' or + `active'. That is, when queried, an existing conceptual row + has only three states: it is either available for use by + the managed device (the status column has value `active'); + it is not available for use by the managed device, though + the agent has sufficient information to make it so (the + status column has value `notInService'); or, it is not + available for use by the managed device, and an attempt to + make it so would fail because the agent has insufficient + information (the state column has value `notReady'). + + NOTE WELL + + This textual convention may be used for a MIB table, + irrespective of whether the values of that table's + conceptual rows are able to be modified while it is + active, or whether its conceptual rows must be taken + out of service in order to be modified. That is, it is + the responsibility of the DESCRIPTION clause of the + status column to specify whether the status column must + not be `active' in order for the value of some other + column of the same conceptual row to be modified. If + such a specification is made, affected columns may be + changed by an SNMP set PDU if the RowStatus would not + be equal to `active' either immediately before or after + processing the PDU. In other words, if the PDU also + contained a varbind that would change the RowStatus + value, the column in question may be changed if the + RowStatus was not equal to `active' as the PDU was + received, or if the varbind sets the status to a value + other than 'active'. + + + Also note that whenever any elements of a row exist, the + RowStatus column must also exist. + + To summarize the effect of having a conceptual row with a + status column having a SYNTAX clause value of RowStatus, + consider the following state diagram: + + + STATE + +--------------+-----------+-------------+------------- + | A | B | C | D + | |status col.|status column| + |status column | is | is |status column + ACTION |does not exist| notReady | notInService| is active + --------------+--------------+-----------+-------------+------------- + set status |noError ->D|inconsist- |inconsistent-|inconsistent- + column to | or | entValue| Value| Value + createAndGo |inconsistent- | | | + | Value| | | + --------------+--------------+-----------+-------------+------------- + set status |noError see 1|inconsist- |inconsistent-|inconsistent- + column to | or | entValue| Value| Value + createAndWait |wrongValue | | | + --------------+--------------+-----------+-------------+------------- + set status |inconsistent- |inconsist- |noError |noError + column to | Value| entValue| | + active | | | | + | | or | | + | | | | + | |see 2 ->D| ->D| ->D + --------------+--------------+-----------+-------------+------------- + set status |inconsistent- |inconsist- |noError |noError ->C + column to | Value| entValue| | + notInService | | | | + | | or | | or + | | | | + | |see 3 ->C| ->C|wrongValue + --------------+--------------+-----------+-------------+------------- + set status |noError |noError |noError |noError + column to | | | | + destroy | ->A| ->A| ->A| ->A + --------------+--------------+-----------+-------------+------------- + set any other |see 4 |noError |noError |see 5 + column to some| | | | + value | | see 1| ->C| ->D + --------------+--------------+-----------+-------------+------------- + + (1) goto B or C, depending on information available to the + agent. + + (2) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto D. + + (3) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto C. + + (4) at the discretion of the agent, the return value may be + either: + + inconsistentName: because the agent does not choose to + create such an instance when the corresponding + RowStatus instance does not exist, or + + inconsistentValue: if the supplied value is + inconsistent with the state of some other MIB object's + value, or + + noError: because the agent chooses to create the + instance. + + If noError is returned, then the instance of the status + column must also be created, and the new state is B or C, + depending on the information available to the agent. If + inconsistentName or inconsistentValue is returned, the row + remains in state A. + + (5) depending on the MIB definition for the column/table, + either noError or inconsistentValue may be returned. + + NOTE: Other processing of the set request may result in a + response other than noError being returned, e.g., + wrongValue, noCreation, etc. + + + Conceptual Row Creation + + There are four potential interactions when creating a + conceptual row: selecting an instance-identifier which is + not in use; creating the conceptual row; initializing any + objects for which the agent does not supply a default; and, + making the conceptual row available for use by the managed + device. + + Interaction 1: Selecting an Instance-Identifier + + The algorithm used to select an instance-identifier varies + for each conceptual row. In some cases, the instance- + identifier is semantically significant, e.g., the + destination address of a route, and a management station + selects the instance-identifier according to the semantics. + + In other cases, the instance-identifier is used solely to + distinguish conceptual rows, and a management station + without specific knowledge of the conceptual row might + examine the instances present in order to determine an + unused instance-identifier. (This approach may be used, but + it is often highly sub-optimal; however, it is also a + questionable practice for a naive management station to + attempt conceptual row creation.) + + Alternately, the MIB module which defines the conceptual row + might provide one or more objects which provide assistance + in determining an unused instance-identifier. For example, + if the conceptual row is indexed by an integer-value, then + an object having an integer-valued SYNTAX clause might be + defined for such a purpose, allowing a management station to + issue a management protocol retrieval operation. In order + to avoid unnecessary collisions between competing management + stations, `adjacent' retrievals of this object should be + different. + + Finally, the management station could select a pseudo-random + number to use as the index. In the event that this index + was already in use and an inconsistentValue was returned in + response to the management protocol set operation, the + management station should simply select a new pseudo-random + number and retry the operation. + + A MIB designer should choose between the two latter + algorithms based on the size of the table (and therefore the + efficiency of each algorithm). For tables in which a large + number of entries are expected, it is recommended that a MIB + object be defined that returns an acceptable index for + creation. For tables with small numbers of entries, it is + recommended that the latter pseudo-random index mechanism be + used. + + + Interaction 2: Creating the Conceptual Row + + Once an unused instance-identifier has been selected, the + management station determines if it wishes to create and + activate the conceptual row in one transaction or in a + negotiated set of interactions. + + Interaction 2a: Creating and Activating the Conceptual Row + + The management station must first determine the column + requirements, i.e., it must determine those columns for + which it must or must not provide values. Depending on the + complexity of the table and the management station's + knowledge of the agent's capabilities, this determination + can be made locally by the management station. Alternately, + the management station issues a management protocol get + operation to examine all columns in the conceptual row that + it wishes to create. In response, for each column, there + are three possible outcomes: + + - a value is returned, indicating that some other + management station has already created this conceptual + row. We return to interaction 1. + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. For those + columns to which the agent provides read-create access, + the `noSuchInstance' exception tells the management + station that it should supply a value for this column + when the conceptual row is to be created. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + Once the column requirements have been determined, a + management protocol set operation is accordingly issued. + This operation also sets the new instance of the status + column to `createAndGo'. + + When the agent processes the set operation, it verifies that + it has sufficient information to make the conceptual row + available for use by the managed device. The information + available to the agent is provided by two sources: the + management protocol set operation which creates the + conceptual row, and, implementation-specific defaults + supplied by the agent (note that an agent must provide + implementation-specific defaults for at least those objects + which it implements as read-only). If there is sufficient + information available, then the conceptual row is created, a + `noError' response is returned, the status column is set to + `active', and no further interactions are necessary (i.e., + interactions 3 and 4 are skipped). If there is insufficient + information, then the conceptual row is not created, and the + set operation fails with an error of `inconsistentValue'. + On this error, the management station can issue a management + protocol retrieval operation to determine if this was + because it failed to specify a value for a required column, + or, because the selected instance of the status column + already existed. In the latter case, we return to + interaction 1. In the former case, the management station + can re-issue the set operation with the additional + information, or begin interaction 2 again using + `createAndWait' in order to negotiate creation of the + conceptual row. + + NOTE WELL + + Regardless of the method used to determine the column + requirements, it is possible that the management + station might deem a column necessary when, in fact, + the agent will not allow that particular columnar + instance to be created or written. In this case, the + management protocol set operation will fail with an + error such as `noCreation' or `notWritable'. In this + case, the management station decides whether it needs + to be able to set a value for that particular columnar + instance. If not, the management station re-issues the + management protocol set operation, but without setting + a value for that particular columnar instance; + otherwise, the management station aborts the row + creation algorithm. + + Interaction 2b: Negotiating the Creation of the Conceptual + Row + + The management station issues a management protocol set + operation which sets the desired instance of the status + column to `createAndWait'. If the agent is unwilling to + process a request of this sort, the set operation fails with + an error of `wrongValue'. (As a consequence, such an agent + must be prepared to accept a single management protocol set + operation, i.e., interaction 2a above, containing all of the + columns indicated by its column requirements.) Otherwise, + the conceptual row is created, a `noError' response is + returned, and the status column is immediately set to either + `notInService' or `notReady', depending on whether it has + sufficient information to make the conceptual row available + for use by the managed device. If there is sufficient + information available, then the status column is set to + `notInService'; otherwise, if there is insufficient + information, then the status column is set to `notReady'. + Regardless, we proceed to interaction 3. + + Interaction 3: Initializing non-defaulted Objects + + The management station must now determine the column + requirements. It issues a management protocol get operation + to examine all columns in the created conceptual row. In + the response, for each column, there are three possible + outcomes: + + - a value is returned, indicating that the agent + implements the object-type associated with this column + and had sufficient information to provide a value. For + those columns to which the agent provides read-create + access (and for which the agent allows their values to + be changed after their creation), a value return tells + the management station that it may issue additional + management protocol set operations, if it desires, in + order to change the value associated with this column. + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. However, + the agent does not have sufficient information to + provide a value, and until a value is provided, the + conceptual row may not be made available for use by the + managed device. For those columns to which the agent + provides read-create access, the `noSuchInstance' + exception tells the management station that it must + issue additional management protocol set operations, in + order to provide a value associated with this column. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + If the value associated with the status column is + `notReady', then the management station must first deal with + all `noSuchInstance' columns, if any. Having done so, the + value of the status column becomes `notInService', and we + proceed to interaction 4. + + Interaction 4: Making the Conceptual Row Available + + Once the management station is satisfied with the values + associated with the columns of the conceptual row, it issues + a management protocol set operation to set the status column + to `active'. If the agent has sufficient information to + make the conceptual row available for use by the managed + device, the management protocol set operation succeeds (a + `noError' response is returned). Otherwise, the management + protocol set operation fails with an error of + `inconsistentValue'. + + + NOTE WELL + + A conceptual row having a status column with value + `notInService' or `notReady' is unavailable to the + managed device. As such, it is possible for the + managed device to create its own instances during the + time between the management protocol set operation + which sets the status column to `createAndWait' and the + management protocol set operation which sets the status + column to `active'. In this case, when the management + protocol set operation is issued to set the status + column to `active', the values held in the agent + supersede those used by the managed device. + + If the management station is prevented from setting the + status column to `active' (e.g., due to management station + or network failure) the conceptual row will be left in the + `notInService' or `notReady' state, consuming resources + indefinitely. The agent must detect conceptual rows that + have been in either state for an abnormally long period of + time and remove them. It is the responsibility of the + DESCRIPTION clause of the status column to indicate what an + abnormally long period of time would be. This period of + time should be long enough to allow for human response time + (including `think time') between the creation of the + conceptual row and the setting of the status to `active'. + In the absense of such information in the DESCRIPTION + clause, it is suggested that this period be approximately 5 + minutes in length. This removal action applies not only to + newly-created rows, but also to previously active rows which + are set to, and left in, the notInService state for a + prolonged period exceeding that which is considered normal + for such a conceptual row. + + + Conceptual Row Suspension + + When a conceptual row is `active', the management station + may issue a management protocol set operation which sets the + instance of the status column to `notInService'. If the + agent is unwilling to do so, the set operation fails with an + error of `wrongValue'. Otherwise, the conceptual row is + taken out of service, and a `noError' response is returned. + It is the responsibility of the DESCRIPTION clause of the + status column to indicate under what circumstances the + status column should be taken out of service (e.g., in order + for the value of some other column of the same conceptual + row to be modified). + + + Conceptual Row Deletion + + For deletion of conceptual rows, a management protocol set + operation is issued which sets the instance of the status + column to `destroy'. This request may be made regardless of + the current value of the status column (e.g., it is possible + to delete conceptual rows which are either `notReady', + `notInService' or `active'.) If the operation succeeds, + then all instances associated with the conceptual row are + immediately removed." + SYNTAX INTEGER + { + active(1), + notInService(2), + notReady(3), + createAndGo(4), + createAndWait(5), + destroy(6) + } + +-- the following two values are states: +-- these values may be read or written +-- the following value is a state: +-- this value may be read, but not written +-- the following three values are +-- actions: these values may be written, +-- but are never read + TimeStamp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the sysUpTime object at which a specific + occurrence happened. The specific occurrence must be + defined in the description of any object defined using this + type." + SYNTAX TimeTicks + + +-- +-- Node definitions +-- + + -- 1.3.6.1.4.1.1379 + cintelNS OBJECT IDENTIFIER ::= { enterprises 1379 } + + + + END + +-- +-- CINTEL-MIB.my +-- diff --git a/sshsvc/mibs/CINTEL-MIB.smidb b/sshsvc/mibs/CINTEL-MIB.smidb new file mode 100644 index 00000000..7ff6e9b4 Binary files /dev/null and b/sshsvc/mibs/CINTEL-MIB.smidb differ