From 4c304d9f9a834a1c45c383dce9f7abe06f201fc6 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 20 Sep 2024 19:03:15 +0800 Subject: [PATCH 1/9] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=202.2409.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 8 ++++++++ captrace/makefile | 2 +- crontask/makefile | 2 +- data2html/makefile | 2 +- makefile | 2 +- mkpkg.sh | 2 +- restagent/makefile | 2 +- src/framework/config/config/config.default.yaml | 2 +- sshsvc/makefile | 2 +- 9 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c718a4bb..4a6dc4a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # 版本发布日志 +## 2.2409.3-20240920 + +- 修复 字典多语言序号重复问题 +- 更新 UDM用户数据表,SMSC参数配置属性,字典数据和跟踪相关表 +- 新增 跟踪任务HLR免登录接口 +- 新增 跟踪任务相关接口初始化,跟踪任务新增非201/400时接收信息 +- 修复 抓包文件下载zip时目录同名导致删除压缩无内容 + ## 2.2409.1-20240909 - 新增 告警前转的两个接口email前转和短信前转的系统参数,采用了和网元统一的参数配置方式, diff --git a/captrace/makefile b/captrace/makefile index 9b7ded71..13059799 100644 --- a/captrace/makefile +++ b/captrace/makefile @@ -1,7 +1,7 @@ # Makefile for rest agent project PROJECT = OMC -VERSION = 2.2409.1 +VERSION = 2.2409.3 PLATFORM = amd64 ARMPLATFORM = aarch64 BUILDDIR = ../../build diff --git a/crontask/makefile b/crontask/makefile index a1d52818..c066c402 100644 --- a/crontask/makefile +++ b/crontask/makefile @@ -1,7 +1,7 @@ # Makefile for OMC-OMC-crontask project PROJECT = OMC -VERSION = 2.2409.1 +VERSION = 2.2409.3 LIBDIR = be.ems/lib BINNAME = crontask diff --git a/data2html/makefile b/data2html/makefile index 62aeb265..9218ce11 100644 --- a/data2html/makefile +++ b/data2html/makefile @@ -1,7 +1,7 @@ # Makefile for rest agent project PROJECT = OMC -VERSION = 2.2409.1 +VERSION = 2.2409.3 RelDate = `date +%Y%m%d` Release = $(RelDate) RelVer = $(VERSION)-$(RelDate) diff --git a/makefile b/makefile index 1d2bdcaf..0ef01ac4 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ ProjectL = omc ProjectU = OMC PROJECT = $(ProjectL) -VERSION = 2.2409.1 +VERSION = 2.2409.3 RelDate = `date +%Y%m%d` Release = $(RelDate) RelVer = $(VERSION)-$(RelDate) diff --git a/mkpkg.sh b/mkpkg.sh index 4e490773..310beeb1 100644 --- a/mkpkg.sh +++ b/mkpkg.sh @@ -2,7 +2,7 @@ ProcList="restagent crontask sshsvc captrace data2html" ProjectL=omc -VERSION=2.2409.1 +VERSION=2.2409.3 RelDate=`date +%Y%m%d` Release=${RelDate} RelVer=${VERSION}-${RelDate} diff --git a/restagent/makefile b/restagent/makefile index 92c2f410..10016cd3 100644 --- a/restagent/makefile +++ b/restagent/makefile @@ -1,7 +1,7 @@ # Makefile for rest agent project PROJECT = OMC -VERSION = 2.2409.1 +VERSION = 2.2409.3 PLATFORM = amd64 ARMPLATFORM = aarch64 BUILDDIR = ../../build diff --git a/src/framework/config/config/config.default.yaml b/src/framework/config/config/config.default.yaml index b42ed73e..1344060d 100644 --- a/src/framework/config/config/config.default.yaml +++ b/src/framework/config/config/config.default.yaml @@ -1,7 +1,7 @@ # 项目信息 framework: name: "OMC" - version: "2.2409.1" + version: "2.2409.3" # 应用服务配置 server: diff --git a/sshsvc/makefile b/sshsvc/makefile index 7e1ef871..9f6b2f77 100644 --- a/sshsvc/makefile +++ b/sshsvc/makefile @@ -1,7 +1,7 @@ # Makefile for OMC-OMC-crontask project PROJECT = OMC -VERSION = 2.2409.1 +VERSION = 2.2409.3 LIBDIR = be.ems/lib BINNAME = sshsvc From 91a264769da13d3506f1c437248040d5e8f1d36c Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Fri, 20 Sep 2024 20:21:13 +0800 Subject: [PATCH 2/9] add: snmpV3 with ipv6 --- sshsvc/etc/sshsvc.yaml | 4 +- sshsvc/setHLRServiceState | 22 ++++++ sshsvc/snmp/snmp.go | 154 +++++++++++++++++++++++++++++++------- sshsvc/sshsvc.go | 12 ++- 4 files changed, 160 insertions(+), 32 deletions(-) create mode 100644 sshsvc/setHLRServiceState diff --git a/sshsvc/etc/sshsvc.yaml b/sshsvc/etc/sshsvc.yaml index ed3bacf9..7a8435ab 100644 --- a/sshsvc/etc/sshsvc.yaml +++ b/sshsvc/etc/sshsvc.yaml @@ -61,8 +61,8 @@ snmpServer: #engineID: "800007db03360102101101" engineID: "8000000004323030313a6462383a3a39313636" trapPort: 34958 - trapListen: true - trapBool: true + trapListen: false + trapBool: false trapTick: 60 timeOut: 5 trapTarget: "2001:db8::9219" diff --git a/sshsvc/setHLRServiceState b/sshsvc/setHLRServiceState new file mode 100644 index 00000000..bd97f113 --- /dev/null +++ b/sshsvc/setHLRServiceState @@ -0,0 +1,22 @@ +#!/bin/bash + +case "$1" in + 1) + echo -n "Set HLR state link down ... " + snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 1 >/dev/null + echo "done" + ;; + 2) + echo -n "Set HLR state link up ... " + snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 2 >/dev/null + echo "done" + ;; + 3) + echo -n "Set HLR state authentication failure ... " + snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 3 >/dev/null + echo "done" + ;; + *) + echo "Unknown state ($1)" + ;; +esac \ No newline at end of file diff --git a/sshsvc/snmp/snmp.go b/sshsvc/snmp/snmp.go index 26cf2c9d..db40c3b0 100644 --- a/sshsvc/snmp/snmp.go +++ b/sshsvc/snmp/snmp.go @@ -10,6 +10,7 @@ import ( "strings" "time" + "github.com/gosnmp/gosnmp" g "github.com/gosnmp/gosnmp" "github.com/slayercat/GoSNMPServer" "github.com/slayercat/GoSNMPServer/mibImps" @@ -33,8 +34,13 @@ type SNMPService struct { ListenHost string TrapHost string - SysDescr string - SysService int + + SysName string + SysDescr string + SysLocation string + SysContact string + SysStatus string + SysService int } func (s *SNMPService) getAuthProto() g.SnmpV3AuthProtocol { @@ -135,7 +141,39 @@ func (s *SNMPService) StartSNMPServer() { func (s *SNMPService) handleOIDs() []*GoSNMPServer.PDUValueControlItem { customOIDs := []*GoSNMPServer.PDUValueControlItem{ { - OID: "1.3.6.1.2.1.1.1.0", + OID: "1.3.6.1.4.1.1379.2.3.3.3.1.1.1.0", + Type: g.OctetString, + OnGet: func() (value interface{}, err error) { + return s.SysName, nil + }, + OnSet: func(value interface{}) error { + // 将[]uint8转换为string + if v, ok := value.([]uint8); ok { + s.SysName = string(v) + log.Printf("Set request for OID 1.3.6.1.4.1.1379.2.3.3.3.1.1.1.0 with value %v", s.SysName) + return nil + } + return nil + }, + }, + { + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.2.0", + Type: g.OctetString, + OnGet: func() (value interface{}, err error) { + return s.SysStatus, nil + }, + OnSet: func(value interface{}) error { + // 将[]uint8转换为string + if v, ok := value.([]uint8); ok { + s.SysStatus = string(v) + log.Printf("Set request for OID 1.3.6.1.4.1.1379.2.3.3.3.1.1.2.0 with value %v", s.SysStatus) + return nil + } + return nil + }, + }, + { + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.3.0", Type: g.OctetString, OnGet: func() (value interface{}, err error) { return s.SysDescr, nil @@ -144,30 +182,61 @@ func (s *SNMPService) handleOIDs() []*GoSNMPServer.PDUValueControlItem { // 将[]uint8转换为string if v, ok := value.([]uint8); ok { s.SysDescr = string(v) - log.Printf("Set request for OID 1.3.6.1.2.1.1.1.0 with value %v", s.SysDescr) + log.Printf("Set request for OID .1.3.6.1.4.1.1379.2.3.3.3.1.1.3.0 with value %v", s.SysDescr) return nil } return nil }, }, { - OID: "1.3.6.1.2.1.1.3.0", + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.4.0", + Type: g.OctetString, + OnGet: func() (value interface{}, err error) { + return s.SysLocation, nil + }, + OnSet: func(value interface{}) error { + // 将[]uint8转换为string + if v, ok := value.([]uint8); ok { + s.SysLocation = string(v) + log.Printf("Set request for OID .1.3.6.1.4.1.1379.2.3.3.3.1.1.4.0 with value %v", s.SysLocation) + return nil + } + return nil + }, + }, + { + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.5.0", + Type: g.OctetString, + OnGet: func() (value interface{}, err error) { + return s.SysContact, nil + }, + OnSet: func(value interface{}) error { + // 将[]uint8转换为string + if v, ok := value.([]uint8); ok { + s.SysContact = string(v) + log.Printf("Set request for OID .1.3.6.1.4.1.1379.2.3.3.3.1.1.5.0 with value %v", s.SysContact) + return nil + } + return nil + }, + }, + { + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.7.0", Type: g.TimeTicks, OnGet: func() (value interface{}, err error) { return uint32(time.Now().Unix()), nil }, }, { - OID: "1.3.6.1.2.1.1.7.0", + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0", Type: g.Integer, OnGet: func() (value interface{}, err error) { return s.SysService, nil }, OnSet: func(value interface{}) error { - // 将[]uint8转换为string if v, ok := value.(int); ok { s.SysService = v - log.Printf("Set request for OID 1.3.6.1.2.1.1.7.0 with value %v", s.SysService) + log.Printf("Set request for OID .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 with value %v", s.SysService) return nil } return nil @@ -311,27 +380,38 @@ func (s *SNMPService) SendPeriodicTraps(gs *g.GoSNMP) { // 1. 设备链路连接失败时发送Trap (LinkDown) func (s *SNMPService) sendLinkDownTrap(gs *g.GoSNMP, ifIndex int, ifDescr string) { + err := gs.Connect() + if err != nil { + log.Fatalf("Connect() err: %v", err) + } + defer gs.Conn.Close() + trap := g.SnmpTrap{ Variables: []g.SnmpPDU{ { - Name: ".1.3.6.1.2.1.2.2.1.1", // ifIndex + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.1", // linkDown + Type: g.OctetString, + Value: ".1.3.6.1.4.1.1379.2.3.3.3.3.1", + }, + { + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.1.1", // ifIndex Type: g.Integer, Value: ifIndex, }, { - Name: ".1.3.6.1.2.1.2.2.1.2", // ifDescr + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.1.2", // ifDescr Type: g.OctetString, Value: ifDescr, }, { - Name: ".1.3.6.1.6.3.1.1.5.3", // linkDown - Type: g.ObjectIdentifier, - Value: ".1.3.6.1.6.3.1.1.5.3", + Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID + Type: gosnmp.Integer, + Value: 2, // event }, }, } - _, err := gs.SendTrap(trap) + _, err = gs.SendTrap(trap) if err != nil { log.Printf("error sending LinkDown trap: %s", err) } else { @@ -341,27 +421,38 @@ func (s *SNMPService) sendLinkDownTrap(gs *g.GoSNMP, ifIndex int, ifDescr string // 2. 设备链路恢复正常时发送Trap (LinkUp) func (s *SNMPService) sendLinkUpTrap(gs *g.GoSNMP, ifIndex int, ifDescr string) { + err := gs.Connect() + if err != nil { + log.Fatalf("Connect() err: %v", err) + } + defer gs.Conn.Close() + trap := g.SnmpTrap{ Variables: []g.SnmpPDU{ { - Name: ".1.3.6.1.2.1.2.2.1.1", // ifIndex + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.2", // linkUp + Type: g.OctetString, + Value: ".1.3.6.1.4.1.1379.2.3.3.3.3.2", + }, + { + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.2.1", // ifIndex Type: g.Integer, Value: ifIndex, }, { - Name: ".1.3.6.1.2.1.2.2.1.2", // ifDescr + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.2.2", // ifDescr Type: g.OctetString, Value: ifDescr, }, { - Name: ".1.3.6.1.6.3.1.1.5.4", // linkUp - Type: g.ObjectIdentifier, - Value: ".1.3.6.1.6.3.1.1.5.4", + Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID + Type: gosnmp.Integer, + Value: 5, // event }, }, } - _, err := gs.SendTrap(trap) + _, err = gs.SendTrap(trap) if err != nil { log.Printf("error sending LinkUp trap: %s", err) } else { @@ -371,27 +462,38 @@ func (s *SNMPService) sendLinkUpTrap(gs *g.GoSNMP, ifIndex int, ifDescr string) // 3. 设备鉴权失败时发送Trap (AuthenticationFailure) func (s *SNMPService) sendAuthFailureTrap(gs *g.GoSNMP, username, descr string) { + err := gs.Connect() + if err != nil { + log.Fatalf("Connect() err: %v", err) + } + defer gs.Conn.Close() + trap := g.SnmpTrap{ Variables: []g.SnmpPDU{ { - Name: ".1.3.6.1.6.3.1.1.5.5", // authenticationFailure - Type: g.ObjectIdentifier, - Value: ".1.3.6.1.6.3.1.1.5.5", + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.3", // authenticationFailure + Type: g.OctetString, + Value: ".1.3.6.1.4.1.1379.2.3.3.3.3.3", }, { - Name: ".1.3.6.1.4.1.2021.251.1", // 自定义OID,用于记录失败的用户名 + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.3.1", // 自定义OID,用于记录失败的用户名 Type: g.OctetString, Value: username, }, { - Name: ".1.3.6.1.4.1.2021.252.1", // 自定义OID,用于记录描述 + Name: ".1.3.6.1.4.1.1379.2.3.3.3.3.3.2", // 自定义OID,用于记录描述 Type: g.OctetString, Value: descr, }, + { + Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID + Type: gosnmp.Integer, + Value: 4, // event + }, }, } - _, err := gs.SendTrap(trap) + _, err = gs.SendTrap(trap) if err != nil { log.Printf("error sending AuthenticationFailure trap: %s", err) } else { diff --git a/sshsvc/sshsvc.go b/sshsvc/sshsvc.go index 5964e062..4989ae8a 100644 --- a/sshsvc/sshsvc.go +++ b/sshsvc/sshsvc.go @@ -155,10 +155,14 @@ func main() { TimeOut: conf.SNMPServer.TimeOut, TrapTarget: conf.SNMPServer.TrapTarget, - ListenHost: conf.SNMPServer.ListenAddr + ":" + strconv.Itoa(int(conf.SNMPServer.ListenPort)), - TrapHost: conf.SNMPServer.ListenAddr + ":" + strconv.Itoa(int(conf.SNMPServer.TrapPort)), - SysDescr: "HLR server", - SysService: 0, + ListenHost: conf.SNMPServer.ListenAddr + ":" + strconv.Itoa(int(conf.SNMPServer.ListenPort)), + TrapHost: conf.SNMPServer.ListenAddr + ":" + strconv.Itoa(int(conf.SNMPServer.TrapPort)), + SysName: "HLR-0", + SysStatus: "Normal", + SysDescr: "HLR server(sysNO=0)", + SysLocation: "Shanghai", + SysContact: "", + SysService: 0, } go snmpSvc.StartSNMPServer() From 3e7bd7b4153159cbb9814a3f0050f5c53db77dc4 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 21 Sep 2024 11:38:42 +0800 Subject: [PATCH 3/9] =?UTF-8?q?sql:=20=E5=91=8A=E8=AD=A6=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E8=A1=A8=E8=AF=AD=E5=8F=A5=EF=BC=8C=E7=A7=BB=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E8=A1=A8=E5=AD=97=E6=AE=B5=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/install/alarm_event.sql | 70 +++++++------- database/upgrade/upg_alarm_event.sql | 140 +++++++++++++-------------- database/upgrade/zupgrade.sql | 20 ---- 3 files changed, 105 insertions(+), 125 deletions(-) diff --git a/database/install/alarm_event.sql b/database/install/alarm_event.sql index 53e499b6..fff32946 100644 --- a/database/install/alarm_event.sql +++ b/database/install/alarm_event.sql @@ -21,43 +21,43 @@ SET FOREIGN_KEY_CHECKS = 0; -- Table structure for alarm_event -- ---------------------------- DROP TABLE IF EXISTS `alarm_event`; -CREATE TABLE `alarm_event` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `alarm_seq` int(11) NULL DEFAULT NULL, +CREATE TABLE `alarm_event` ( + `id` int NOT NULL AUTO_INCREMENT, + `alarm_seq` int DEFAULT NULL, `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `alarm_code` int(11) NULL DEFAULT NULL, - `event_time` datetime NULL DEFAULT NULL, - `alarm_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', - `orig_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Minor' COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', - `perceived_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', - `pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `object_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `object_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0', - `object_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `location_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `alarm_status` int(11) NOT NULL DEFAULT 1 COMMENT '0:clear, 1:active', - `specific_problem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `specific_problem_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `add_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `counter` int(11) NULL DEFAULT 0, - `latest_event_time` datetime NULL DEFAULT NULL, - `ack_state` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unacked, 1: Acked', - `ack_time` datetime NULL DEFAULT NULL, - `ack_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `clear_type` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unclear, 1: AutoClear, 2: ManualClear', - `clear_time` datetime NULL DEFAULT NULL, - `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP, + `alarm_code` int DEFAULT NULL, + `event_time` datetime DEFAULT NULL, + `alarm_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '', + `orig_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'Minor' COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `perceived_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `object_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `object_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0', + `object_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `location_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `alarm_status` int NOT NULL DEFAULT '1' COMMENT '0:clear, 1:active', + `specific_problem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `specific_problem_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `add_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `counter` int DEFAULT '0', + `latest_event_time` datetime DEFAULT NULL, + `ack_state` tinyint DEFAULT '0' COMMENT '0: Unacked, 1: Acked', + `ack_time` datetime DEFAULT NULL, + `ack_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `clear_type` tinyint DEFAULT '0' COMMENT '0: Unclear, 1: AutoClear, 2: ManualClear', + `clear_time` datetime DEFAULT NULL, + `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `timestamp` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `idx_pk_id`(`id`) USING BTREE, - UNIQUE INDEX `idx_uni_aid_ne_aseq`(`ne_type`, `ne_id`, `alarm_id`, `alarm_seq`) USING BTREE, - INDEX `idx_event_time`(`event_time`) USING BTREE, - INDEX `idx_severity_status`(`alarm_status`, `orig_severity`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 228788 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + UNIQUE KEY `idx_pk_id` (`id`) USING BTREE, + UNIQUE KEY `idx_uni_aid_ne_aseq` (`ne_type`,`ne_id`,`alarm_id`,`alarm_seq`) USING BTREE, + KEY `idx_event_time` (`event_time`) USING BTREE, + KEY `idx_severity_status` (`alarm_status`,`orig_severity`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_alarm_event.sql b/database/upgrade/upg_alarm_event.sql index 7a72e790..f66fa213 100644 --- a/database/upgrade/upg_alarm_event.sql +++ b/database/upgrade/upg_alarm_event.sql @@ -60,80 +60,80 @@ CREATE TABLE IF NOT EXISTS `alarm_event` ( ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; -- Move event alarm from table alarm to alarm_event -START TRANSACTION; +-- START TRANSACTION; -INSERT INTO `alarm_event` ( - `alarm_seq`, - `alarm_id`, - `alarm_title`, - `ne_type`, - `ne_id`, - `alarm_code`, - `event_time`, - `alarm_type`, - `orig_severity`, - `perceived_severity`, - `pv_flag`, - `ne_name`, - `object_uid`, - `object_name`, - `object_type`, - `location_info`, - `province`, - `alarm_status`, - `specific_problem`, - `specific_problem_id`, - `add_info`, - `counter`, - `latest_event_time`, - `ack_state`, - `ack_time`, - `ack_user`, - `clear_type`, - `clear_time`, - `clear_user`, - `timestamp` - ) -SELECT - `alarm_seq`, - `alarm_id`, - `alarm_title`, - `ne_type`, - `ne_id`, - `alarm_code`, - `event_time`, - `alarm_type`, - `orig_severity`, - `perceived_severity`, - `pv_flag`, - `ne_name`, - `object_uid`, - `object_name`, - `object_type`, - `location_info`, - `province`, - `alarm_status`, - `specific_problem`, - `specific_problem_id`, - `add_info`, - `counter`, - `latest_event_time`, - `ack_state`, - `ack_time`, - `ack_user`, - `clear_type`, - `clear_time`, - `clear_user`, - `timestamp` -FROM `alarm` -WHERE - `orig_severity` = 'Event'; +-- INSERT INTO `alarm_event` ( +-- `alarm_seq`, +-- `alarm_id`, +-- `alarm_title`, +-- `ne_type`, +-- `ne_id`, +-- `alarm_code`, +-- `event_time`, +-- `alarm_type`, +-- `orig_severity`, +-- `perceived_severity`, +-- `pv_flag`, +-- `ne_name`, +-- `object_uid`, +-- `object_name`, +-- `object_type`, +-- `location_info`, +-- `province`, +-- `alarm_status`, +-- `specific_problem`, +-- `specific_problem_id`, +-- `add_info`, +-- `counter`, +-- `latest_event_time`, +-- `ack_state`, +-- `ack_time`, +-- `ack_user`, +-- `clear_type`, +-- `clear_time`, +-- `clear_user`, +-- `timestamp` +-- ) +-- SELECT +-- `alarm_seq`, +-- `alarm_id`, +-- `alarm_title`, +-- `ne_type`, +-- `ne_id`, +-- `alarm_code`, +-- `event_time`, +-- `alarm_type`, +-- `orig_severity`, +-- `perceived_severity`, +-- `pv_flag`, +-- `ne_name`, +-- `object_uid`, +-- `object_name`, +-- `object_type`, +-- `location_info`, +-- `province`, +-- `alarm_status`, +-- `specific_problem`, +-- `specific_problem_id`, +-- `add_info`, +-- `counter`, +-- `latest_event_time`, +-- `ack_state`, +-- `ack_time`, +-- `ack_user`, +-- `clear_type`, +-- `clear_time`, +-- `clear_user`, +-- `timestamp` +-- FROM `alarm` +-- WHERE +-- `orig_severity` = 'Event'; -DELETE FROM `alarm` WHERE `orig_severity` = 'Event'; +-- DELETE FROM `alarm` WHERE `orig_severity` = 'Event'; -COMMIT; +-- COMMIT; -DELETE FROM alarm_event WHERE id NOT IN (SELECT MIN(id) FROM alarm_event GROUP BY `ne_type`, `ne_id`, `alarm_id`, `event_time`); +-- DELETE FROM alarm_event WHERE id NOT IN (SELECT MIN(id) FROM alarm_event GROUP BY `ne_type`, `ne_id`, `alarm_id`, `event_time`); ALTER TABLE `alarm_event` ADD UNIQUE INDEX IF NOT EXISTS `idx_uni_aid_ne_time`(`ne_type`, `ne_id`, `alarm_id`, `event_time`) USING BTREE; diff --git a/database/upgrade/zupgrade.sql b/database/upgrade/zupgrade.sql index f1ae3e39..c52bdb92 100644 --- a/database/upgrade/zupgrade.sql +++ b/database/upgrade/zupgrade.sql @@ -1,10 +1,5 @@ DROP TRIGGER IF EXISTS `tg_account_menu`; -ALTER TABLE `gold_kpi` -MODIFY COLUMN `value` bigint NULL DEFAULT 0 AFTER `kpi_id`; - -ALTER TABLE `ne_link` DROP INDEX IF EXISTS `idx_netype_neid`; - ALTER TABLE `nbi_operation_log` MODIFY COLUMN `created_at` datetime NULL DEFAULT NULL AFTER `log_time`; @@ -23,21 +18,6 @@ ALTER TABLE `measure_task` ADD COLUMN IF NOT EXISTS `account_id` varchar(32) NULL AFTER `status`, ADD COLUMN IF NOT EXISTS `comment` varchar(255) NULL AFTER `account_id`; -ALTER TABLE `trace_task` -ADD COLUMN IF NOT EXISTS `account_id` varchar(32) NULL AFTER `status`, -ADD COLUMN IF NOT EXISTS `comment` varchar(255) NULL AFTER `account_id`; - -DELETE FROM trace_data WHERE timestamp LIKE '2023-%'; -ALTER TABLE `trace_data` -MODIFY COLUMN `timestamp` bigint NULL DEFAULT NULL AFTER `msg_direct`; - -ALTER TABLE `trace_data` -ADD COLUMN IF NOT EXISTS `length` int NULL AFTER `msg_direct`; - -ALTER TABLE `ne_backup` -ADD - COLUMN IF NOT EXISTS `comment` varchar(255) NULL AFTER `md5_sum`; - ALTER TABLE `mml_command` ADD COLUMN IF NOT EXISTS `status` enum('Active', 'Inactive') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Active' COMMENT '激活: Active 未激活: Inactive' AFTER `param_json`; From 3b7f992425a2b3284187011afb13fd47b367f875 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Sat, 21 Sep 2024 13:54:14 +0800 Subject: [PATCH 4/9] fix: snmpv3 in ipv6 --- sshsvc/config/config.go | 4 ++-- sshsvc/setHLRServiceState | 9 ++++++--- sshsvc/snmp/snmp.go | 20 ++++++++++++++++---- sshsvc/sshsvc.go | 17 ++++++++++++++--- sshsvc/telnet/telnet.go | 13 ++++++++----- 5 files changed, 46 insertions(+), 17 deletions(-) diff --git a/sshsvc/config/config.go b/sshsvc/config/config.go index 591d7fdf..ab4b0ed2 100644 --- a/sshsvc/config/config.go +++ b/sshsvc/config/config.go @@ -44,7 +44,7 @@ type YamlConfig struct { ListenAddr string `yaml:"listenAddr"` ListenPort uint16 `yaml:"listenPort"` PrivateKey string `yaml:"privateKey"` - MaxConnNum uint8 `yaml:"maxConnNum"` + MaxConnNum int `yaml:"maxConnNum"` Timeout uint16 `yaml:"timeout"` Session string `yaml:"session"` MmlHome string `yaml:"mmlHome"` @@ -57,7 +57,7 @@ type YamlConfig struct { TelnetServer struct { ListenAddr string `yaml:"listenAddr"` ListenPort uint16 `yaml:"listenPort"` - MaxConnNum uint8 `yaml:"maxConnNum"` + MaxConnNum int `yaml:"maxConnNum"` Timeout uint16 `yaml:"timeout"` Session string `yaml:"session"` MmlHome string `yaml:"mmlHome"` diff --git a/sshsvc/setHLRServiceState b/sshsvc/setHLRServiceState index bd97f113..c792036b 100644 --- a/sshsvc/setHLRServiceState +++ b/sshsvc/setHLRServiceState @@ -1,19 +1,22 @@ #!/bin/bash +TargetIP="[2001:db8::9166]" +PORT="34957" + case "$1" in 1) echo -n "Set HLR state link down ... " - snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 1 >/dev/null + snmpset -v3 -l noAuthNoPriv -u manager ${TargetIP}:${PORT} .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 1 >/dev/null echo "done" ;; 2) echo -n "Set HLR state link up ... " - snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 2 >/dev/null + snmpset -v3 -l noAuthNoPriv -u manager ${TargetIP}:${PORT} .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 2 >/dev/null echo "done" ;; 3) echo -n "Set HLR state authentication failure ... " - snmpset -v3 -l noAuthNoPriv -u manager 192.168.2.219:34957 .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 3 >/dev/null + snmpset -v3 -l noAuthNoPriv -u manager ${TargetIP}:${PORT} .1.3.6.1.4.1.1379.2.3.3.3.1.1.9.0 i 3 >/dev/null echo "done" ;; *) diff --git a/sshsvc/snmp/snmp.go b/sshsvc/snmp/snmp.go index db40c3b0..613dcd8e 100644 --- a/sshsvc/snmp/snmp.go +++ b/sshsvc/snmp/snmp.go @@ -10,7 +10,6 @@ import ( "strings" "time" - "github.com/gosnmp/gosnmp" g "github.com/gosnmp/gosnmp" "github.com/slayercat/GoSNMPServer" "github.com/slayercat/GoSNMPServer/mibImps" @@ -243,6 +242,19 @@ func (s *SNMPService) handleOIDs() []*GoSNMPServer.PDUValueControlItem { }, }, } + // 为 GETBULK 新增处理 OIDs + bulkOIDs := &GoSNMPServer.PDUValueControlItem{ + OID: ".1.3.6.1.4.1.1379.2.3.3.3.1.1", // 这里是您想要支持 GETBULK 的 OID 前缀 + Type: g.OctetString, + OnGet: func() (value interface{}, err error) { + // 假设我们返回一百度值,您可以根据您的实现进行调整 + values := []interface{}{s.SysName, s.SysStatus, s.SysDescr, s.SysLocation, s.SysContact, uint32(time.Now().Unix()), s.SysService} // 可以从其他结构中获取真实值 + return values, nil + }, + } + + customOIDs = append(customOIDs, bulkOIDs) + // 获取mibImps.All()返回的OID列表 mibOIDs := mibImps.All() @@ -405,7 +417,7 @@ func (s *SNMPService) sendLinkDownTrap(gs *g.GoSNMP, ifIndex int, ifDescr string }, { Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID - Type: gosnmp.Integer, + Type: g.Integer, Value: 2, // event }, }, @@ -446,7 +458,7 @@ func (s *SNMPService) sendLinkUpTrap(gs *g.GoSNMP, ifIndex int, ifDescr string) }, { Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID - Type: gosnmp.Integer, + Type: g.Integer, Value: 5, // event }, }, @@ -487,7 +499,7 @@ func (s *SNMPService) sendAuthFailureTrap(gs *g.GoSNMP, username, descr string) }, { Name: ".1.3.6.1.4.1.1379.2.3.3.3.4", // severity OID - Type: gosnmp.Integer, + Type: g.Integer, Value: 4, // event }, }, diff --git a/sshsvc/sshsvc.go b/sshsvc/sshsvc.go index 4989ae8a..c8efe92a 100644 --- a/sshsvc/sshsvc.go +++ b/sshsvc/sshsvc.go @@ -379,7 +379,7 @@ func handleSSHConnection(conn net.Conn, serverConfig *ssh.ServerConfig) { if sshCC > int(conf.Sshd.MaxConnNum) { sshMu.Unlock() log.Error("Maximum number of connections exceeded") - //conn.Write([]byte("Reach max connections")) + channel.Write([]byte(fmt.Sprintf("Connection limit reached (limit=%d). Try again later.\r\n", conf.Sshd.MaxConnNum))) conn.Close() continue } @@ -446,15 +446,19 @@ func handleSSHShell(sshConn *ssh.ServerConn, channel ssh.Channel) { Version: global.Version, Output: mmlp.DefaultFormatType, MmlHome: conf.Sshd.MmlHome, - Limit: 50, + Limit: conf.Sshd.MaxConnNum, User: sshConn.User(), SessionToken: fmt.Sprintf("%x", sshConn.SessionID()), HttpUri: conf.OMC.HttpUri, UserAgent: config.GetDefaultUserAgent(), TagNE: conf.Sshd.TagNE, } - term := term.NewTerminal(channel, fmt.Sprintf("[%s@%s]> ", omcMmlVar.User, omcMmlVar.TagNE)) + msg := fmt.Sprintf("\r\nWelcome to the %s server!\r\n", strings.ToUpper(omcMmlVar.TagNE)) + term.Write([]byte(msg)) + msg = fmt.Sprintf("Last login: %s from %s \r\n\r\n", time.Now().Format(time.RFC1123), sshConn.RemoteAddr()) + term.Write([]byte(msg)) + // 启动交互式shell会话 for { line, err := term.ReadLine() @@ -472,6 +476,13 @@ func handleSSHShell(sshConn *ssh.ServerConn, channel ssh.Channel) { } var response string switch cmdline { + case "hello": + term.Write([]byte("Hello, world!\r\n")) + goto continueLoop + case "time": + response = fmt.Sprintf("Current time: %s\r\n", time.Now().Format(time.RFC1123)) + term.Write([]byte(response)) + goto continueLoop case "exit", "quit": goto exitLoop case "": diff --git a/sshsvc/telnet/telnet.go b/sshsvc/telnet/telnet.go index 28622b44..ce28993d 100644 --- a/sshsvc/telnet/telnet.go +++ b/sshsvc/telnet/telnet.go @@ -18,7 +18,7 @@ type TelnetHandler struct { UserName string Password string AuthType string - MaxConnNum uint8 + MaxConnNum int TagNE string ListenHost string @@ -65,7 +65,8 @@ func (t *TelnetHandler) StartTelnetServer() { t.mu.Lock() if t.connCount >= int(t.MaxConnNum) { t.mu.Unlock() - io.WriteString(conn, "Connection limit reached. Try again later.\r\n") + msg := fmt.Sprintf("Connection limit reached (limit=%d). Try again later.\r\n", t.MaxConnNum) + io.WriteString(conn, msg) conn.Close() continue } @@ -88,7 +89,8 @@ func (t *TelnetHandler) handleTelnetConnection(conn net.Conn) { writer := bufio.NewWriter(conn) // 发送欢迎信息 - writer.WriteString("Welcome to the Telnet server!\r\n") + + writer.WriteString(fmt.Sprintf("\r\nWelcome to the %s server!\r\n", strings.ToUpper(t.TagNE))) writer.Flush() // 请求用户名 @@ -129,7 +131,8 @@ func (t *TelnetHandler) handleTelnetConnection(conn net.Conn) { writer.Flush() if t.handleTelnetAuth(t.AuthType, user, pass) { - writer.WriteString("\r\nAuthentication successful!\r\n") + msg := fmt.Sprintf("\r\n\r\nLast login: %s from %s \r\n\r\n", time.Now().Format(time.RFC1123), conn.RemoteAddr()) + writer.WriteString(msg) writer.Flush() t.HandleCommands(user, t.TagNE, reader, writer) } else { @@ -181,7 +184,7 @@ func (t *TelnetHandler) HandleCommands(user, tag string, reader *bufio.Reader, w case "time": writer.WriteString(fmt.Sprintf("\r\nCurrent time: %s\r\n", time.Now().Format(time.RFC1123))) case "exit", "quit": - writer.WriteString("\r\nGoodbye!\r\n") + writer.WriteString("\r\n\r\nGoodbye!\r\n") writer.Flush() return case "": From 90ec72b28074ef59574b450e879e212e765c059c Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 21 Sep 2024 14:52:47 +0800 Subject: [PATCH 5/9] =?UTF-8?q?sql:=20=E6=9B=B4=E6=96=B0UDM=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E8=A1=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/upgrade/upg_u_auth_user.sql | 11 ++++++++++- database/upgrade/upg_u_sub_user.sql | 24 +++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/database/upgrade/upg_u_auth_user.sql b/database/upgrade/upg_u_auth_user.sql index e73125d2..48143e8c 100644 --- a/database/upgrade/upg_u_auth_user.sql +++ b/database/upgrade/upg_u_auth_user.sql @@ -1,7 +1,7 @@ -- -- Table structure for table `u_auth_user` -- -DROP TABLE IF EXISTS `u_auth_user`; +-- DROP TABLE IF EXISTS `u_auth_user`; CREATE TABLE IF NOT EXISTS `u_auth_user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID', @@ -16,3 +16,12 @@ CREATE TABLE IF NOT EXISTS `u_auth_user` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM鉴权用户'; -- Dump completed on 2024-03-06 17:26:59 + +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `imsi`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AMF' AFTER `ne_id`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '状态' AFTER `amf`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ki' AFTER `status`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'algoIndex' AFTER `ki`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'OPC' AFTER `algo_index`; +ALTER TABLE `u_auth_user` DROP COLUMN IF NOT EXISTS `msisdn`; diff --git a/database/upgrade/upg_u_sub_user.sql b/database/upgrade/upg_u_sub_user.sql index 8646a08c..d212cf4a 100644 --- a/database/upgrade/upg_u_sub_user.sql +++ b/database/upgrade/upg_u_sub_user.sql @@ -1,7 +1,7 @@ -- -- Table structure for table `u_sub_user` -- -DROP TABLE IF EXISTS `u_sub_user`; +-- DROP TABLE IF EXISTS `u_sub_user`; CREATE TABLE IF NOT EXISTS `u_sub_user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID', @@ -30,3 +30,25 @@ CREATE TABLE IF NOT EXISTS `u_sub_user` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UDM签约用户'; -- Dump completed on 2024-03-06 17:26:59 + +ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'CAG' AFTER `static_ip`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户电话号码' AFTER `imsi`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `msisdn`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubUeAMBRTemp' AFTER `ne_id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubSNSSAITemp' AFTER `ambr`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR' AFTER `nssai`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'forbiddenAreasTemp' AFTER `rat`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'serviceAreaRestrictTemp' AFTER `arfb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'cnType EPC|5GC' AFTER `sar`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smData' AFTER `cn`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smfSel' AFTER `sm_data`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Eps' AFTER `smf_sel`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsFlag' AFTER `eps_dat`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsOdb' AFTER `eps_flag`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'hplmnOdb' AFTER `eps_odb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Ard' AFTER `hplmn_odb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Epstpl' AFTER `ard`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ContextId' AFTER `epstpl`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'apnContext' AFTER `context_id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP,没有可不带此字段名' AFTER `apn_context`; From f597f36bbe882f0e2db04efe0dd7d75a093ceb60 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 21 Sep 2024 15:50:55 +0800 Subject: [PATCH 6/9] =?UTF-8?q?fix:=20=E7=BD=91=E5=85=83=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=B8=BB=E5=8A=A8=E6=A3=80=E6=9F=A5=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E7=9A=84=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/controller/ne_info.go | 8 +- .../network_element/controller/ne_version.go | 6 +- .../network_element/repository/ne_version.go | 341 ++++++++- .../repository/ne_version.impl.go | 329 -------- .../network_element/service/ne_info.impl.go | 4 +- .../service/ne_software.impl.go | 14 +- .../network_element/service/ne_version.go | 719 +++++++++++++++++- .../service/ne_version.impl.go | 650 ---------------- 8 files changed, 1033 insertions(+), 1038 deletions(-) delete mode 100644 src/modules/network_element/repository/ne_version.impl.go delete mode 100644 src/modules/network_element/service/ne_version.impl.go diff --git a/src/modules/network_element/controller/ne_info.go b/src/modules/network_element/controller/ne_info.go index 45e0c4ed..001b778a 100644 --- a/src/modules/network_element/controller/ne_info.go +++ b/src/modules/network_element/controller/ne_info.go @@ -20,7 +20,7 @@ import ( var NewNeInfo = &NeInfoController{ neInfoService: neService.NewNeInfoImpl, neLicenseService: neService.NewNeLicenseImpl, - neVersionService: neService.NewNeVersionImpl, + neVersionService: neService.NewNeVersion, } // 网元信息请求 @@ -32,7 +32,7 @@ type NeInfoController struct { // 网元授权激活信息服务 neLicenseService neService.INeLicense // 网元版本信息服务 - neVersionService neService.INeVersion + neVersionService *neService.NeVersion } // neStateCacheMap 网元状态缓存最后一次成功的信息 @@ -318,6 +318,8 @@ func (s *NeInfoController) Add(c *gin.Context) { // 已有网元可获取的信息 if body.ServerState != nil { if v, ok := body.ServerState["version"]; ok && v != nil { + neVersion.Name = "-" + neVersion.Path = "-" neVersion.Version = v.(string) } if v, ok := body.ServerState["sn"]; ok && v != nil { @@ -397,6 +399,8 @@ func (s *NeInfoController) Edit(c *gin.Context) { // 已有网元可获取的信息 if body.ServerState != nil { if v, ok := body.ServerState["version"]; ok && v != nil { + neVersion.Name = "-" + neVersion.Path = "-" neVersion.Version = v.(string) neVersion.UpdateBy = loginUserName } diff --git a/src/modules/network_element/controller/ne_version.go b/src/modules/network_element/controller/ne_version.go index 8df9b017..366e30c2 100644 --- a/src/modules/network_element/controller/ne_version.go +++ b/src/modules/network_element/controller/ne_version.go @@ -11,7 +11,7 @@ import ( // 实例化控制层 NeVersionController 结构体 var NewNeVersion = &NeVersionController{ - neVersionService: neService.NewNeVersionImpl, + neVersionService: neService.NewNeVersion, } // 网元版本请求 @@ -19,7 +19,7 @@ var NewNeVersion = &NeVersionController{ // PATH /version type NeVersionController struct { // 网元版本服务 - neVersionService neService.INeVersion + neVersionService *neService.NeVersion } // 网元版本列表 @@ -27,7 +27,7 @@ type NeVersionController struct { // GET /list func (s *NeVersionController) List(c *gin.Context) { querys := ctx.QueryMap(c) - data := s.neVersionService.SelectPage(querys) + data := s.neVersionService.SelectPage(querys, true) c.JSON(200, result.Ok(data)) } diff --git a/src/modules/network_element/repository/ne_version.go b/src/modules/network_element/repository/ne_version.go index 6da08cc8..e02466b2 100644 --- a/src/modules/network_element/repository/ne_version.go +++ b/src/modules/network_element/repository/ne_version.go @@ -1,24 +1,329 @@ package repository -import "be.ems/src/modules/network_element/model" +import ( + "strings" + "time" -// INeVersion 网元版本信息 数据层接口 -type INeVersion interface { - // SelectPage 根据条件分页查询字典类型 - SelectPage(query map[string]any) map[string]any + "be.ems/src/framework/datasource" + "be.ems/src/framework/logger" + "be.ems/src/framework/utils/parse" + "be.ems/src/framework/utils/repo" + "be.ems/src/modules/network_element/model" +) - // SelectList 根据实体查询 - SelectList(neVersion model.NeVersion) []model.NeVersion +// 实例化数据层 NeVersion 结构体 +var NewNeVersion = &NeVersion{ + selectSql: `select + id, ne_type, ne_id, name, version, path, pre_name, pre_version, pre_path, new_name, new_version, new_path, status, create_by, create_time, update_by, update_time + from ne_version`, - // SelectByIds 通过ID查询 - SelectByIds(ids []string) []model.NeVersion - - // Insert 新增信息 - Insert(neVersion model.NeVersion) string - - // Update 修改信息 - Update(neVersion model.NeVersion) int64 - - // DeleteByIds 批量删除信息 - DeleteByIds(ids []string) int64 + resultMap: map[string]string{ + "id": "ID", + "ne_type": "NeType", + "ne_id": "NeId", + "name": "name", + "version": "Version", + "path": "Path", + "pre_name": "preName", + "pre_version": "PreVersion", + "pre_path": "PrePath", + "new_name": "NewName", + "new_version": "NewVersion", + "new_path": "NewPath", + "status": "Status", + "create_by": "CreateBy", + "create_time": "CreateTime", + "update_by": "UpdateBy", + "update_time": "UpdateTime", + }, +} + +// NeVersion 网元版本信息 数据层处理 +type NeVersion struct { + // 查询视图对象SQL + selectSql string + // 结果字段与实体映射 + resultMap map[string]string +} + +// convertResultRows 将结果记录转实体结果组 +func (r *NeVersion) convertResultRows(rows []map[string]any) []model.NeVersion { + arr := make([]model.NeVersion, 0) + for _, row := range rows { + item := model.NeVersion{} + for key, value := range row { + if keyMapper, ok := r.resultMap[key]; ok { + repo.SetFieldValue(&item, keyMapper, value) + } + } + arr = append(arr, item) + } + return arr +} + +// SelectPage 根据条件分页查询字典类型 +func (r *NeVersion) SelectPage(query map[string]any) map[string]any { + // 查询条件拼接 + var conditions []string + var params []any + if v, ok := query["neType"]; ok && v != "" { + conditions = append(conditions, "ne_type = ?") + params = append(params, strings.Trim(v.(string), " ")) + } + if v, ok := query["neId"]; ok && v != "" { + conditions = append(conditions, "ne_id = ?") + params = append(params, strings.Trim(v.(string), " ")) + } + if v, ok := query["version"]; ok && v != "" { + conditions = append(conditions, "version like concat(?, '%')") + params = append(params, strings.Trim(v.(string), " ")) + } + if v, ok := query["path"]; ok && v != "" { + conditions = append(conditions, "path like concat(?, '%')") + params = append(params, strings.Trim(v.(string), " ")) + } + + // 构建查询条件语句 + whereSql := "" + if len(conditions) > 0 { + whereSql += " where " + strings.Join(conditions, " and ") + } + + result := map[string]any{ + "total": 0, + "rows": []model.NeHost{}, + } + + // 查询数量 长度为0直接返回 + totalSql := "select count(1) as 'total' from ne_version" + totalRows, err := datasource.RawDB("", totalSql+whereSql, params) + if err != nil { + logger.Errorf("total err => %v", err) + return result + } + total := parse.Number(totalRows[0]["total"]) + if total == 0 { + return result + } else { + result["total"] = total + } + + // 分页 + pageNum, pageSize := repo.PageNumSize(query["pageNum"], query["pageSize"]) + pageSql := " order by update_time desc limit ?,? " + params = append(params, pageNum*pageSize) + params = append(params, pageSize) + + // 查询数据 + querySql := r.selectSql + whereSql + pageSql + results, err := datasource.RawDB("", querySql, params) + if err != nil { + logger.Errorf("query err => %v", err) + return result + } + + // 转换实体 + result["rows"] = r.convertResultRows(results) + return result +} + +// SelectList 根据实体查询 +func (r *NeVersion) SelectList(neVersion model.NeVersion) []model.NeVersion { + // 查询条件拼接 + var conditions []string + var params []any + if neVersion.NeType != "" { + conditions = append(conditions, "ne_type = ?") + params = append(params, neVersion.NeType) + } + if neVersion.NeId != "" { + conditions = append(conditions, "ne_id = ?") + params = append(params, neVersion.NeId) + } + if neVersion.Version != "" { + conditions = append(conditions, "version like concat(?, '%')") + params = append(params, neVersion.Version) + } + if neVersion.Path != "" { + conditions = append(conditions, "path like concat(?, '%')") + params = append(params, neVersion.Path) + } + if neVersion.Status != "" { + conditions = append(conditions, "status = ?") + params = append(params, neVersion.Status) + } + + // 构建查询条件语句 + whereSql := "" + if len(conditions) > 0 { + whereSql += " where " + strings.Join(conditions, " and ") + } + + // 查询数据 + querySql := r.selectSql + whereSql + " order by id asc " + results, err := datasource.RawDB("", querySql, params) + if err != nil { + logger.Errorf("query err => %v", err) + } + + // 转换实体 + return r.convertResultRows(results) +} + +// SelectByIds 通过ID查询 +func (r *NeVersion) SelectByIds(cmdIds []string) []model.NeVersion { + placeholder := repo.KeyPlaceholderByQuery(len(cmdIds)) + querySql := r.selectSql + " where id in (" + placeholder + ")" + parameters := repo.ConvertIdsSlice(cmdIds) + results, err := datasource.RawDB("", querySql, parameters) + if err != nil { + logger.Errorf("query err => %v", err) + return []model.NeVersion{} + } + // 转换实体 + return r.convertResultRows(results) +} + +// Insert 新增信息 +func (r *NeVersion) Insert(neVersion model.NeVersion) string { + // 参数拼接 + params := make(map[string]any) + if neVersion.NeType != "" { + params["ne_type"] = neVersion.NeType + } + if neVersion.NeId != "" { + params["ne_id"] = neVersion.NeId + } + if neVersion.Name != "" { + params["name"] = neVersion.Name + } + if neVersion.Version != "" { + params["version"] = neVersion.Version + } + if neVersion.Path != "" { + params["path"] = neVersion.Path + } + if neVersion.PreName != "" { + params["pre_name"] = neVersion.PreName + } + if neVersion.PreVersion != "" { + params["pre_version"] = neVersion.PreVersion + } + if neVersion.PrePath != "" { + params["pre_path"] = neVersion.PrePath + } + if neVersion.NewName != "" { + params["new_name"] = neVersion.NewName + } + if neVersion.NewVersion != "" { + params["new_version"] = neVersion.NewVersion + } + if neVersion.NewPath != "" { + params["new_path"] = neVersion.NewPath + } + if neVersion.Status != "" { + params["status"] = neVersion.Status + } + if neVersion.CreateBy != "" { + params["create_by"] = neVersion.CreateBy + params["create_time"] = time.Now().UnixMilli() + } + + // 构建执行语句 + keys, placeholder, values := repo.KeyPlaceholderValueByInsert(params) + sql := "insert into ne_version (" + strings.Join(keys, ",") + ")values(" + placeholder + ")" + + db := datasource.DefaultDB() + // 开启事务 + tx := db.Begin() + // 执行插入 + err := tx.Exec(sql, values...).Error + if err != nil { + logger.Errorf("insert row : %v", err.Error()) + tx.Rollback() + return "" + } + // 获取生成的自增 ID + var insertedID string + err = tx.Raw("select last_insert_id()").Row().Scan(&insertedID) + if err != nil { + logger.Errorf("insert last id : %v", err.Error()) + tx.Rollback() + return "" + } + // 提交事务 + tx.Commit() + return insertedID +} + +// Update 修改信息 +func (r *NeVersion) Update(neVersion model.NeVersion) int64 { + // 参数拼接 + params := make(map[string]any) + if neVersion.NeType != "" { + params["ne_type"] = neVersion.NeType + } + if neVersion.NeId != "" { + params["ne_id"] = neVersion.NeId + } + if neVersion.Name != "" { + params["name"] = neVersion.Name + } + if neVersion.Version != "" { + params["version"] = neVersion.Version + } + if neVersion.Path != "" { + params["path"] = neVersion.Path + } + if neVersion.PreName != "" { + params["pre_name"] = neVersion.PreName + } + if neVersion.PreVersion != "" { + params["pre_version"] = neVersion.PreVersion + } + if neVersion.PrePath != "" { + params["pre_path"] = neVersion.PrePath + } + if neVersion.NewName != "" { + params["new_name"] = neVersion.NewName + } + if neVersion.NewVersion != "" { + params["new_version"] = neVersion.NewVersion + } + if neVersion.NewPath != "" { + params["new_path"] = neVersion.NewPath + } + if neVersion.Status != "" { + params["status"] = neVersion.Status + } + if neVersion.UpdateBy != "" { + params["update_by"] = neVersion.UpdateBy + params["update_time"] = time.Now().UnixMilli() + } + + // 构建执行语句 + keys, values := repo.KeyValueByUpdate(params) + sql := "update ne_version set " + strings.Join(keys, ",") + " where id = ?" + + // 执行更新 + values = append(values, neVersion.ID) + rows, err := datasource.ExecDB("", sql, values) + if err != nil { + logger.Errorf("update row : %v", err.Error()) + return 0 + } + return rows +} + +// DeleteByIds 批量删除信息 +func (r *NeVersion) DeleteByIds(cmdIds []string) int64 { + placeholder := repo.KeyPlaceholderByQuery(len(cmdIds)) + sql := "delete from ne_version where id in (" + placeholder + ")" + parameters := repo.ConvertIdsSlice(cmdIds) + results, err := datasource.ExecDB("", sql, parameters) + if err != nil { + logger.Errorf("delete err => %v", err) + return 0 + } + return results } diff --git a/src/modules/network_element/repository/ne_version.impl.go b/src/modules/network_element/repository/ne_version.impl.go deleted file mode 100644 index ad2c1440..00000000 --- a/src/modules/network_element/repository/ne_version.impl.go +++ /dev/null @@ -1,329 +0,0 @@ -package repository - -import ( - "strings" - "time" - - "be.ems/src/framework/datasource" - "be.ems/src/framework/logger" - "be.ems/src/framework/utils/parse" - "be.ems/src/framework/utils/repo" - "be.ems/src/modules/network_element/model" -) - -// 实例化数据层 NewNeVersion 结构体 -var NewNeVersionImpl = &NeVersionImpl{ - selectSql: `select - id, ne_type, ne_id, name, version, path, pre_name, pre_version, pre_path, new_name, new_version, new_path, status, create_by, create_time, update_by, update_time - from ne_version`, - - resultMap: map[string]string{ - "id": "ID", - "ne_type": "NeType", - "ne_id": "NeId", - "name": "name", - "version": "Version", - "path": "Path", - "pre_name": "preName", - "pre_version": "PreVersion", - "pre_path": "PrePath", - "new_name": "NewName", - "new_version": "NewVersion", - "new_path": "NewPath", - "status": "Status", - "create_by": "CreateBy", - "create_time": "CreateTime", - "update_by": "UpdateBy", - "update_time": "UpdateTime", - }, -} - -// NeVersionImpl 网元版本信息 数据层处理 -type NeVersionImpl struct { - // 查询视图对象SQL - selectSql string - // 结果字段与实体映射 - resultMap map[string]string -} - -// convertResultRows 将结果记录转实体结果组 -func (r *NeVersionImpl) convertResultRows(rows []map[string]any) []model.NeVersion { - arr := make([]model.NeVersion, 0) - for _, row := range rows { - item := model.NeVersion{} - for key, value := range row { - if keyMapper, ok := r.resultMap[key]; ok { - repo.SetFieldValue(&item, keyMapper, value) - } - } - arr = append(arr, item) - } - return arr -} - -// SelectPage 根据条件分页查询字典类型 -func (r *NeVersionImpl) SelectPage(query map[string]any) map[string]any { - // 查询条件拼接 - var conditions []string - var params []any - if v, ok := query["neType"]; ok && v != "" { - conditions = append(conditions, "ne_type = ?") - params = append(params, strings.Trim(v.(string), " ")) - } - if v, ok := query["neId"]; ok && v != "" { - conditions = append(conditions, "ne_id = ?") - params = append(params, strings.Trim(v.(string), " ")) - } - if v, ok := query["version"]; ok && v != "" { - conditions = append(conditions, "version like concat(?, '%')") - params = append(params, strings.Trim(v.(string), " ")) - } - if v, ok := query["path"]; ok && v != "" { - conditions = append(conditions, "path like concat(?, '%')") - params = append(params, strings.Trim(v.(string), " ")) - } - - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } - - result := map[string]any{ - "total": 0, - "rows": []model.NeHost{}, - } - - // 查询数量 长度为0直接返回 - totalSql := "select count(1) as 'total' from ne_version" - totalRows, err := datasource.RawDB("", totalSql+whereSql, params) - if err != nil { - logger.Errorf("total err => %v", err) - return result - } - total := parse.Number(totalRows[0]["total"]) - if total == 0 { - return result - } else { - result["total"] = total - } - - // 分页 - pageNum, pageSize := repo.PageNumSize(query["pageNum"], query["pageSize"]) - pageSql := " order by update_time desc limit ?,? " - params = append(params, pageNum*pageSize) - params = append(params, pageSize) - - // 查询数据 - querySql := r.selectSql + whereSql + pageSql - results, err := datasource.RawDB("", querySql, params) - if err != nil { - logger.Errorf("query err => %v", err) - return result - } - - // 转换实体 - result["rows"] = r.convertResultRows(results) - return result -} - -// SelectList 根据实体查询 -func (r *NeVersionImpl) SelectList(neVersion model.NeVersion) []model.NeVersion { - // 查询条件拼接 - var conditions []string - var params []any - if neVersion.NeType != "" { - conditions = append(conditions, "ne_type = ?") - params = append(params, neVersion.NeType) - } - if neVersion.NeId != "" { - conditions = append(conditions, "ne_id = ?") - params = append(params, neVersion.NeId) - } - if neVersion.Version != "" { - conditions = append(conditions, "version like concat(?, '%')") - params = append(params, neVersion.Version) - } - if neVersion.Path != "" { - conditions = append(conditions, "path like concat(?, '%')") - params = append(params, neVersion.Path) - } - if neVersion.Status != "" { - conditions = append(conditions, "status = ?") - params = append(params, neVersion.Status) - } - - // 构建查询条件语句 - whereSql := "" - if len(conditions) > 0 { - whereSql += " where " + strings.Join(conditions, " and ") - } - - // 查询数据 - querySql := r.selectSql + whereSql + " order by id asc " - results, err := datasource.RawDB("", querySql, params) - if err != nil { - logger.Errorf("query err => %v", err) - } - - // 转换实体 - return r.convertResultRows(results) -} - -// SelectByIds 通过ID查询 -func (r *NeVersionImpl) SelectByIds(cmdIds []string) []model.NeVersion { - placeholder := repo.KeyPlaceholderByQuery(len(cmdIds)) - querySql := r.selectSql + " where id in (" + placeholder + ")" - parameters := repo.ConvertIdsSlice(cmdIds) - results, err := datasource.RawDB("", querySql, parameters) - if err != nil { - logger.Errorf("query err => %v", err) - return []model.NeVersion{} - } - // 转换实体 - return r.convertResultRows(results) -} - -// Insert 新增信息 -func (r *NeVersionImpl) Insert(neVersion model.NeVersion) string { - // 参数拼接 - params := make(map[string]any) - if neVersion.NeType != "" { - params["ne_type"] = neVersion.NeType - } - if neVersion.NeId != "" { - params["ne_id"] = neVersion.NeId - } - if neVersion.Name != "" { - params["name"] = neVersion.Name - } - if neVersion.Version != "" { - params["version"] = neVersion.Version - } - if neVersion.Path != "" { - params["path"] = neVersion.Path - } - if neVersion.PreName != "" { - params["pre_name"] = neVersion.PreName - } - if neVersion.PreVersion != "" { - params["pre_version"] = neVersion.PreVersion - } - if neVersion.PrePath != "" { - params["pre_path"] = neVersion.PrePath - } - if neVersion.NewName != "" { - params["new_name"] = neVersion.NewName - } - if neVersion.NewVersion != "" { - params["new_version"] = neVersion.NewVersion - } - if neVersion.NewPath != "" { - params["new_path"] = neVersion.NewPath - } - if neVersion.Status != "" { - params["status"] = neVersion.Status - } - if neVersion.CreateBy != "" { - params["create_by"] = neVersion.CreateBy - params["create_time"] = time.Now().UnixMilli() - } - - // 构建执行语句 - keys, placeholder, values := repo.KeyPlaceholderValueByInsert(params) - sql := "insert into ne_version (" + strings.Join(keys, ",") + ")values(" + placeholder + ")" - - db := datasource.DefaultDB() - // 开启事务 - tx := db.Begin() - // 执行插入 - err := tx.Exec(sql, values...).Error - if err != nil { - logger.Errorf("insert row : %v", err.Error()) - tx.Rollback() - return "" - } - // 获取生成的自增 ID - var insertedID string - err = tx.Raw("select last_insert_id()").Row().Scan(&insertedID) - if err != nil { - logger.Errorf("insert last id : %v", err.Error()) - tx.Rollback() - return "" - } - // 提交事务 - tx.Commit() - return insertedID -} - -// Update 修改信息 -func (r *NeVersionImpl) Update(neVersion model.NeVersion) int64 { - // 参数拼接 - params := make(map[string]any) - if neVersion.NeType != "" { - params["ne_type"] = neVersion.NeType - } - if neVersion.NeId != "" { - params["ne_id"] = neVersion.NeId - } - if neVersion.Name != "" { - params["name"] = neVersion.Name - } - if neVersion.Version != "" { - params["version"] = neVersion.Version - } - if neVersion.Path != "" { - params["path"] = neVersion.Path - } - if neVersion.PreName != "" { - params["pre_name"] = neVersion.PreName - } - if neVersion.PreVersion != "" { - params["pre_version"] = neVersion.PreVersion - } - if neVersion.PrePath != "" { - params["pre_path"] = neVersion.PrePath - } - if neVersion.NewName != "" { - params["new_name"] = neVersion.NewName - } - if neVersion.NewVersion != "" { - params["new_version"] = neVersion.NewVersion - } - if neVersion.NewPath != "" { - params["new_path"] = neVersion.NewPath - } - if neVersion.Status != "" { - params["status"] = neVersion.Status - } - if neVersion.UpdateBy != "" { - params["update_by"] = neVersion.UpdateBy - params["update_time"] = time.Now().UnixMilli() - } - - // 构建执行语句 - keys, values := repo.KeyValueByUpdate(params) - sql := "update ne_version set " + strings.Join(keys, ",") + " where id = ?" - - // 执行更新 - values = append(values, neVersion.ID) - rows, err := datasource.ExecDB("", sql, values) - if err != nil { - logger.Errorf("update row : %v", err.Error()) - return 0 - } - return rows -} - -// DeleteByIds 批量删除信息 -func (r *NeVersionImpl) DeleteByIds(cmdIds []string) int64 { - placeholder := repo.KeyPlaceholderByQuery(len(cmdIds)) - sql := "delete from ne_version where id in (" + placeholder + ")" - parameters := repo.ConvertIdsSlice(cmdIds) - results, err := datasource.ExecDB("", sql, parameters) - if err != nil { - logger.Errorf("delete err => %v", err) - return 0 - } - return results -} diff --git a/src/modules/network_element/service/ne_info.impl.go b/src/modules/network_element/service/ne_info.impl.go index 6de019c7..0036dd75 100644 --- a/src/modules/network_element/service/ne_info.impl.go +++ b/src/modules/network_element/service/ne_info.impl.go @@ -283,9 +283,9 @@ func (r *NeInfoImpl) DeleteByIds(infoIds []string) (int64, error) { NewNeLicenseImpl.DeleteByIds([]string{neLicense.ID}) } // 删除Version - neVersion := NewNeVersionImpl.SelectByNeTypeAndNeID(v.NeType, v.NeId) + neVersion := NewNeVersion.SelectByNeTypeAndNeID(v.NeType, v.NeId) if neVersion.NeId == v.NeId { - NewNeVersionImpl.DeleteByIds([]string{neVersion.ID}) + NewNeVersion.DeleteByIds([]string{neVersion.ID}) } // 缓存信息删除 redis.Del("", fmt.Sprintf("%s%s:%s", cachekey.NE_KEY, v.NeType, v.NeId)) diff --git a/src/modules/network_element/service/ne_software.impl.go b/src/modules/network_element/service/ne_software.impl.go index 8ac52094..326ae339 100644 --- a/src/modules/network_element/service/ne_software.impl.go +++ b/src/modules/network_element/service/ne_software.impl.go @@ -47,7 +47,7 @@ func (r *NeSoftwareImpl) Insert(neSoftware model.NeSoftware) string { inserId := r.neSoftwareRepository.Insert(neSoftware) if inserId != "" { // 更新同类型的新包版本 - neVersions := NewNeVersionImpl.SelectList(model.NeVersion{NeType: neSoftware.NeType}) + neVersions := NewNeVersion.SelectList(model.NeVersion{NeType: neSoftware.NeType}, false) if len(neVersions) > 0 { for _, neVersion := range neVersions { neVersion.NewName = neSoftware.Name @@ -55,7 +55,7 @@ func (r *NeSoftwareImpl) Insert(neSoftware model.NeSoftware) string { neVersion.NewPath = neSoftware.Path neVersion.Status = "3" neVersion.UpdateBy = neSoftware.CreateBy - NewNeVersionImpl.Update(neVersion) + NewNeVersion.Update(neVersion) } } } @@ -67,10 +67,10 @@ func (r *NeSoftwareImpl) Update(neSoftware model.NeSoftware) int64 { rows := r.neSoftwareRepository.Update(neSoftware) if rows > 0 { // 更新同类型的新包版本 - neVersions := NewNeVersionImpl.SelectList(model.NeVersion{ + neVersions := NewNeVersion.SelectList(model.NeVersion{ NeType: neSoftware.NeType, Status: "3", - }) + }, false) if len(neVersions) > 0 { for _, neVersion := range neVersions { neVersion.NewName = neSoftware.Name @@ -78,7 +78,7 @@ func (r *NeSoftwareImpl) Update(neSoftware model.NeSoftware) int64 { neVersion.NewPath = neSoftware.Path neVersion.Status = "3" neVersion.UpdateBy = neSoftware.UpdateBy - NewNeVersionImpl.Update(neVersion) + NewNeVersion.Update(neVersion) } } } @@ -128,7 +128,7 @@ func (r *NeSoftwareImpl) CheckUniqueTypeAndNameAndVersion(neType, name, version, func (r *NeSoftwareImpl) UpdateVersions(neSoftware model.NeSoftware, neVersion model.NeVersion) int64 { var rows int64 = 0 // 更新同类型的新包版本 - neVersions := NewNeVersionImpl.SelectList(neVersion) + neVersions := NewNeVersion.SelectList(neVersion, false) if len(neVersions) > 0 { for _, v := range neVersions { v.NewName = neSoftware.Name @@ -136,7 +136,7 @@ func (r *NeSoftwareImpl) UpdateVersions(neSoftware model.NeSoftware, neVersion m v.NewPath = neSoftware.Path v.Status = "3" v.UpdateBy = neVersion.UpdateBy - rows += NewNeVersionImpl.Update(v) + rows += NewNeVersion.Update(v) } } return rows diff --git a/src/modules/network_element/service/ne_version.go b/src/modules/network_element/service/ne_version.go index f92a81be..198f3d5a 100644 --- a/src/modules/network_element/service/ne_version.go +++ b/src/modules/network_element/service/ne_version.go @@ -1,32 +1,697 @@ package service -import "be.ems/src/modules/network_element/model" +import ( + "fmt" + "os" + "path/filepath" + "strings" + "time" -// INeVersion 网元版本信息 服务层接口 -type INeVersion interface { - // SelectPage 根据条件分页查询字典类型 - SelectPage(query map[string]any) map[string]any + "be.ems/src/framework/utils/file" + "be.ems/src/framework/utils/ssh" + neFetchlink "be.ems/src/modules/network_element/fetch_link" + "be.ems/src/modules/network_element/model" + "be.ems/src/modules/network_element/repository" +) - // SelectList 根据实体查询 - SelectList(neVersion model.NeVersion) []model.NeVersion - - // SelectById 通过ID查询 - SelectById(id string) model.NeVersion - - // Insert 新增信息 - Insert(neVersion model.NeVersion) string - - // Update 修改信息 - Update(neVersion model.NeVersion) int64 - - // DeleteByIds 批量删除信息 - DeleteByIds(ids []string) (int64, error) - - // SelectByNeTypeAndNeID 通过网元类型和网元ID查询 - SelectByNeTypeAndNeID(neType, neId string) model.NeVersion - - // Operate 操作版本上传到网元主机执行命令 - // - // action 安装行为:install upgrade rollback - Operate(action string, neVersion model.NeVersion, preinput map[string]string) (string, error) +// 实例化服务层 NeVersion 结构体 +var NewNeVersion = &NeVersion{ + neVersionRepository: repository.NewNeVersion, +} + +// NeVersion 网元版本信息 服务层处理 +type NeVersion struct { + // 网元版本信息表 + neVersionRepository *repository.NeVersion +} + +// SelectNeHostPage 分页查询列表数据 +func (r *NeVersion) SelectPage(query map[string]any, checkVersion bool) map[string]any { + data := r.neVersionRepository.SelectPage(query) + + // 网元直连检查更新网元服务版本 + if checkVersion { + rows := data["rows"].([]model.NeVersion) + r.checkNeVersion(&rows) + } + + return data +} + +// SelectConfigList 查询列表 +func (r *NeVersion) SelectList(neVersion model.NeVersion, checkVersion bool) []model.NeVersion { + list := r.neVersionRepository.SelectList(neVersion) + + // 网元直连检查更新网元服务版本 + if checkVersion { + r.checkNeVersion(&list) + } + + return list +} + +// checkNeVersion 网元列表检查更新网元版本 +func (r *NeVersion) checkNeVersion(arr *[]model.NeVersion) { + for i := range *arr { + item := (*arr)[i] + // 查询网元获取IP + neInfo := NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(item.NeType, item.NeId) + if neInfo.NeId != item.NeId || neInfo.IP == "" { + continue + } + result, err := neFetchlink.NeState(neInfo) + if err != nil { + continue + } + if v, ok := result["version"]; ok && v != nil { + ver := v.(string) + if ver == item.Version { + continue + } + item.Name = "-" + item.Path = "-" + item.Version = ver + } + if item.NeType != neInfo.NeType || item.NeId != neInfo.NeId { + item.NeType = neInfo.NeType + item.NeId = neInfo.NeId + } + r.Update(item) + (*arr)[i] = item + } +} + +// SelectByIds 通过ID查询 +func (r *NeVersion) SelectById(id string) model.NeVersion { + if id == "" { + return model.NeVersion{} + } + neVersions := r.neVersionRepository.SelectByIds([]string{id}) + if len(neVersions) > 0 { + return neVersions[0] + } + return model.NeVersion{} +} + +// Insert 新增信息 +func (r *NeVersion) Insert(neVersion model.NeVersion) string { + return r.neVersionRepository.Insert(neVersion) +} + +// Update 修改信息 +func (r *NeVersion) Update(neVersion model.NeVersion) int64 { + return r.neVersionRepository.Update(neVersion) +} + +// DeleteByIds 批量删除信息 +func (r *NeVersion) DeleteByIds(ids []string) (int64, error) { + // 检查是否存在 + rowIds := r.neVersionRepository.SelectByIds(ids) + if len(rowIds) <= 0 { + return 0, fmt.Errorf("neVersion.noData") + } + + if len(rowIds) == len(ids) { + rows := r.neVersionRepository.DeleteByIds(ids) + return rows, nil + } + // 删除信息失败! + return 0, fmt.Errorf("delete fail") +} + +// SelectByNeTypeAndNeID 通过网元类型和网元ID查询 +func (r *NeVersion) SelectByNeTypeAndNeID(neType, neId string) model.NeVersion { + neVersions := r.neVersionRepository.SelectList(model.NeVersion{ + NeType: neType, + NeId: neId, + }) + if len(neVersions) > 0 { + return neVersions[0] + } + return model.NeVersion{} +} + +// Operate 操作版本上传到网元主机执行命令 +// +// action 安装行为:install upgrade rollback +func (r *NeVersion) Operate(action string, neVersion model.NeVersion, preinput map[string]string) (string, error) { + // 网元主机的SSH客户端 + sshClient, err := NewNeInfoImpl.NeRunSSHClient(neVersion.NeType, neVersion.NeId) + if err != nil { + return "", err + } + defer sshClient.Close() + + // ========= 文件传输阶段 ========= + softwarePath := neVersion.Path + if action == "install" || action == "upgrade" { + softwarePath = neVersion.NewPath + } + if action == "rollback" { + softwarePath = neVersion.PrePath + } + neFilePaths, err := r.operateFile(sshClient, softwarePath) + if err != nil { + return "", err + } + + // ========= 安装时设置 ========= + if action == "install" { + // 网元公共配置文件 + para5GMap, err := NewNeInfoImpl.NeConfPara5GRead() + if para5GMap == nil || err != nil { + return "", fmt.Errorf("error read para5G file info") + } + if err := NewNeInfoImpl.NeConfPara5GWirte(para5GMap, []string{fmt.Sprintf("%s@%s", neVersion.NeType, neVersion.NeId)}); err != nil { + return "", fmt.Errorf("error wirte para5G file info") + } + } + + // ========= 命令生成阶段 ========= + okFlagStr, cmdStrArr, err := r.operateCommand(action, neVersion.NeType, neFilePaths) + if err != nil { + return "", err + } + + // ========= 执行阶段 ========= + commandLine, err := r.operateRun(sshClient, preinput, cmdStrArr, neVersion.NeType, okFlagStr) + if err != nil { + return "", err + } + + // ========= 完成阶段 ========= + if strings.LastIndex(commandLine, okFlagStr) > 5 { + if err := r.operateDome(action, neVersion); err != nil { + return "", err + } + } + return commandLine, nil +} + +// operateFile 操作版本-文件传输阶段 +func (r *NeVersion) operateFile(sshClient *ssh.ConnSSH, softwarePath string) ([]string, error) { + // 网元主机的SSH客户端进行文件传输 + sftpClient, err := sshClient.NewClientSFTP() + if err != nil { + return nil, err + } + defer sftpClient.Close() + + nePath := "/tmp" + copyFileToNeMap := map[string]string{} + + // 统一处理多个文件和单个文件的情况 + var softwarePaths []string + if strings.Contains(softwarePath, ",") { + softwarePaths = strings.Split(softwarePath, ",") + } else { + softwarePaths = []string{softwarePath} + } + + for _, path := range softwarePaths { + // 检查文件是否存在 + localFilePath := file.ParseUploadFilePath(path) + if _, err := os.Stat(localFilePath); err != nil { + return nil, fmt.Errorf("file read failure") + } + + fileName := filepath.Base(path) + neFilePath := fmt.Sprintf("%s/%s", nePath, fileName) + copyFileToNeMap[localFilePath] = neFilePath + } + + // 上传软件包到 /tmp + neFilePaths := []string{} + for k, v := range copyFileToNeMap { + if err = sftpClient.CopyFileLocalToRemote(k, v); err != nil { + return nil, fmt.Errorf("error uploading package") + } + neFilePaths = append(neFilePaths, v) + } + return neFilePaths, nil +} + +// operateCommand 操作版本-命令生成阶段 +func (r *NeVersion) operateCommand(action, neType string, neFilePaths []string) (string, []string, error) { + neTypeLower := strings.ToLower(neType) + // 命令终止结束标记 + okFlagStr := fmt.Sprintf("%s version %s successful!", neTypeLower, action) + // 安装软件包 + pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", strings.Join(neFilePaths, " ")) + fileExt := filepath.Ext(strings.ToLower(neFilePaths[0])) + if strings.HasSuffix(fileExt, "rpm") { + pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh %s", strings.Join(neFilePaths, " ")) + } + + // 组合命令输入 + cmdStrArr := []string{} + if neType == "OMC" { + omcStrArr := []string{} + if action == "install" { + // 安装软件包 + pkgCmdStr = fmt.Sprintf("sudo M_PARAM=install dpkg -i %s", strings.Join(neFilePaths, " ")) + if strings.HasSuffix(fileExt, "rpm") { + pkgCmdStr = fmt.Sprintf("sudo M_PARAM=install rpm -Uvh %s", strings.Join(neFilePaths, " ")) + } + omcStrArr = append(omcStrArr, pkgCmdStr) + } else { + // 升级软件包 + pkgCmdStr = fmt.Sprintf("sudo M_PARAM=upgrade dpkg -i %s", strings.Join(neFilePaths, " ")) + if strings.HasSuffix(fileExt, "rpm") { + pkgCmdStr = fmt.Sprintf("sudo M_PARAM=upgrade rpm -Uvh %s", strings.Join(neFilePaths, " ")) + } + omcStrArr = append(omcStrArr, pkgCmdStr) + } + // 删除软件包 + omcStrArr = append(omcStrArr, fmt.Sprintf("sudo rm %s", strings.Join(neFilePaths, " "))) + + // 2s后执行omc相关命令 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("nohup sh -c \"sleep 2s && %s\" > /tmp/omc_%s.out 2>&1 & \n", strings.Join(omcStrArr, " && "), action)) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr)) + return okFlagStr, cmdStrArr, nil + } else if neType == "IMS" { + if action == "install" { + para5GData := NewNeInfoImpl.Para5GData + cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") + + // 公网 PLMN地址 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("/usr/local/etc/ims/default/tools/modipplmn.sh %s %s %s \n", para5GData["SIP_IP"], para5GData["MCC"], para5GData["MNC"])) + // 内网 服务地址 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("/usr/local/etc/ims/default/tools/modintraip.sh %s \n", para5GData["IMS_IP"])) + // IWF连接PCF服务 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/iwf/iwf_conf.yaml \n", para5GData["PCF_IP"])) + // 设置 HOST + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s ims' /etc/hosts || echo '%s ims' | sudo tee -a /etc/hosts \n", para5GData["IMS_IP"], para5GData["IMS_IP"])) + mnc_mcc := fmt.Sprintf("mnc%s.mcc%s", para5GData["MNC_DOMAIN"], para5GData["MCC"]) + hssHost := fmt.Sprintf("%s hss.ims.%s.3gppnetwork.org hss", para5GData["UDM_IP"], mnc_mcc) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", hssHost, hssHost)) + pcrfHost := fmt.Sprintf("%s pcrf.epc.%s.3gppnetwork.org pcrf", para5GData["IMS_IP"], mnc_mcc) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcrfHost, pcrfHost)) + imsOrgHost := fmt.Sprintf("ims.%s.3gppnetwork.org", mnc_mcc) + imsHost := fmt.Sprintf("%s %s ims", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", imsHost, imsHost)) + pcscfHost := fmt.Sprintf("%s pcscf.%s pcscf", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcscfHost, pcscfHost)) + icscfHost := fmt.Sprintf("%s icscf.%s icscf", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", icscfHost, icscfHost)) + scscfHost := fmt.Sprintf("%s scscf.%s scscf", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", scscfHost, scscfHost)) + mmtelHost := fmt.Sprintf("%s mmtel.%s mmtel", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mmtelHost, mmtelHost)) + mrfcHost := fmt.Sprintf("%s mrfc.%s mrfc", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mrfcHost, mrfcHost)) + smsHost := fmt.Sprintf("%s smsc.%s smsc", para5GData["SIP_IP"], imsOrgHost) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", smsHost, smsHost)) + + cmdStrArr = append(cmdStrArr, "ims-stop || true && ims-start \n") + // 30s后停止服务 + // cmdStrArr = append(cmdStrArr, "nohup sh -c \"sleep 30s && sudo ims-stop\" > /dev/null 2>&1 & \n") + } else { + cmdStrArr = append(cmdStrArr, "ims-stop \n") + cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") + cmdStrArr = append(cmdStrArr, "ims-start \n") + } + } else { + if action == "install" { + para5GData := NewNeInfoImpl.Para5GData + cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") + + // AMF配置修改 + if neTypeLower == "amf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/amf/default/amfcfg.yaml /usr/local/etc/amf/amfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["N2_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SST"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SD"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- 4388/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["TAC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["AUSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["PCF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.200/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["LMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["NEF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- internet/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["DNN_DATA"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s n2' /etc/hosts || echo '%s n2' | sudo tee -a /etc/hosts \n", para5GData["N2_IP"], para5GData["N2_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s amf' /etc/hosts || echo '%s amf' | sudo tee -a /etc/hosts \n", para5GData["AMF_IP"], para5GData["AMF_IP"])) + } + // AUSF配置修改 + if neTypeLower == "ausf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/ausf/default/ausfcfg.yaml /usr/local/etc/ausf/ausfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["AUSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s ausf' /etc/hosts || echo '%s ausf' | sudo tee -a /etc/hosts \n", para5GData["AUSF_IP"], para5GData["AUSF_IP"])) + } + // UDM配置修改 + if neTypeLower == "udm" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/udmcfg.yaml /usr/local/etc/udm/udmcfg.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/nssai.yaml /usr/local/etc/udm/nssai.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/snssai.yaml /usr/local/etc/udm/snssai.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/as.yaml /usr/local/etc/udm/as.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/dnn.yaml /usr/local/etc/udm/dnn.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/scscfSet.yaml /usr/local/etc/udm/scscfSet.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["AUSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/as.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/scscfSet.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/nssai.yaml \n", para5GData["SST"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["SST"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/nssai.yaml \n", para5GData["SD"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["SD"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_DATA"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_IMS"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'internet'/serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_DATA"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'ims'/serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_IMS"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_DATA"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_IMS"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/udm/as.yaml \n", para5GData["SIP_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s udm' /etc/hosts || echo '%s udm' | sudo tee -a /etc/hosts \n", para5GData["UDM_IP"], para5GData["UDM_IP"])) + } + // SMF配置修改 + if neTypeLower == "smf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/smf/default/smf_conf.yaml /usr/local/etc/smf/smf_conf.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["SIP_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["SMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["PCF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UPF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|10.2.1.0/24|%s|g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UE_POOL"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["DNN_DATA"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s smf' /etc/hosts || echo '%s smf' | sudo tee -a /etc/hosts \n", para5GData["SMF_IP"], para5GData["SMF_IP"])) + } + // PCF配置修改 + if neTypeLower == "pcf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/pcf/default/pcfcfg.yaml /usr/local/etc/pcf/pcfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["PCF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["NEF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s pcf' /etc/hosts || echo '%s pcf' | sudo tee -a /etc/hosts \n", para5GData["PCF_IP"], para5GData["PCF_IP"])) + } + + // NSSF配置修改 + if neTypeLower == "nssf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nssf/default/nssfcfg.yaml /usr/local/etc/nssf/nssfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.170/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["NSSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nssf' /etc/hosts || echo '%s nssf' | sudo tee -a /etc/hosts \n", para5GData["NSSF_IP"], para5GData["NSSF_IP"])) + } + // NRF配置修改 + if neTypeLower == "nrf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nrf/default/nrfcfg.yaml /usr/local/etc/nrf/nrfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nrf' /etc/hosts || echo '%s nrf' | sudo tee -a /etc/hosts \n", para5GData["NRF_IP"], para5GData["NRF_IP"])) + } + + // UPF配置修改 + if neTypeLower == "upf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfcfg.yaml /usr/local/etc/upf/upfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfForwarder_1.yaml /usr/local/etc/upf/upfForwarder_1.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/upf/upfcfg.yaml \n", para5GData["UPF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/localhost/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UPF_IP"])) + // UE + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4: 10.2.1.0/s/ueIpv4: 10.2.1.0/ueIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4Mask: 255.255.255.0/s/ueIpv4Mask: 255.255.255.0/ueIpv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_MASK"])) + // N3 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.190/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/ipv4Mask: 255.255.240.0/s/ipv4Mask: 255.255.240.0/ipv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_MASK"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_GW"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_PCI"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_MAC"])) + // 标准版 N6 + if para5GData["UPF_TYPE"] == "StandardUPF" { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.191/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ipv4Mask: 255.255.240.0/s/ipv4Mask: 255.255.240.0/ipv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_MASK"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_GW"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_PCI"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_MAC"])) + // 路由 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo ip route add '%s/%s' via '%s' \n", para5GData["UE_IP"], para5GData["UE_CIDR"], para5GData["N6_IP"])) + } + // 轻量版 + if para5GData["UPF_TYPE"] == "LightUPF" { + cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/192.168.8.191/0.0.0.0/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/type: upfd/type: tun/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n") + cmdStrArr = append(cmdStrArr, "sudo sed -i 's/driverType: vmxnet3/driverType: \"\"/g' /usr/local/etc/upf/upfForwarder_1.yaml \n") + } + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upf' /etc/hosts || echo '%s upf' | sudo tee -a /etc/hosts \n", para5GData["UPF_IP"], para5GData["UPF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn3' /etc/hosts || echo '%s upfn3' | sudo tee -a /etc/hosts \n", para5GData["N3_IP"], para5GData["N3_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn6' /etc/hosts || echo '%s upfn6' | sudo tee -a /etc/hosts \n", para5GData["N6_IP"], para5GData["N6_IP"])) + } + + // LMF配置修改 - 已不再维护,导致激活License失败 + // NEF配置修改 - SNMP无需License + if neTypeLower == "nef" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nef/default/nef_conf.yaml /usr/local/etc/nef/nef_conf.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.110/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["IMS_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["AUSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["SMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["PCF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.170/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NSSF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NRF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["UPF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NEF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nef' /etc/hosts || echo '%s nef' | sudo tee -a /etc/hosts \n", para5GData["NEF_IP"], para5GData["NEF_IP"])) + } + + // MME配置修改 - 4G + if neTypeLower == "mme" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/mme/default/mme.conf /usr/local/etc/mme/mme.conf \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["AMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["SMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|192.168.8.220/20|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S1_MMEIP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S11_MMEIP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["MME_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.221/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S10_MMEIP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/\"00101\"/\"%s%s\"/g\" /usr/local/etc/mme/mme.conf \n", para5GData["MCC"], para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MCC=\"001\"/MCC=\"%s\"/g' /usr/local/etc/mme/mme.conf \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MCC = \"001\"/MCC = \"%s\"/g' /usr/local/etc/mme/mme.conf \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MNC=\"01\";/MNC=\"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MNC = \"01\";/MNC = \"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/TAC = \"1\";/TAC = \"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["TAC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/TAC = 1;/TAC = %s;/g' /usr/local/etc/mme/mme.conf \n", para5GData["TAC"])) + // SMF开启 + cmdStrArr = append(cmdStrArr, "sudo sed -i \"/^ *gxcfg:/,/^ *[^ ]/{s/enable: false/enable: true/;b};\" /usr/local/etc/smf/smf_conf.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s mme' /etc/hosts || echo '%s mme' | sudo tee -a /etc/hosts \n", para5GData["MME_IP"], para5GData["MME_IP"])) + } + // N3IWF配置修改 + if neTypeLower == "n3iwf" { + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/n3iwf/default/n3iwfcfg.yaml /usr/local/etc/n3iwf/n3iwfcfg.yaml \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/MCC: 001/MCC: %s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["MCC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/MNC: 01/MNC: %s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["MNC"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.12.161/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3IWF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.12.160/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3IWF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.27/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["UDM_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.239/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["SMF_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.22/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N2_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.161/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.160/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N6_IP"])) + cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s n3iwf' /etc/hosts || echo '%s n3iwf' | sudo tee -a /etc/hosts \n", para5GData["N3IWF_IP"], para5GData["N3IWF_IP"])) + } + + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s restart \n", neTypeLower)) + // 30s后停止服务 + // cmdStrArr = append(cmdStrArr, fmt.Sprintf("nohup sh -c \"sleep 30s && sudo service %s stop\" > /dev/null 2>&1 & \n", neTypeLower)) + } else { + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s stop \n", neTypeLower)) + cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s restart \n", neTypeLower)) + } + } + + // 安装操作有redis安装时需要重启 + if action == "install" && (neTypeLower == "ims" || neTypeLower == "udm") { + // adb + if strings.Contains(pkgCmdStr, "adb") { + para5GData := NewNeInfoImpl.Para5GData + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/adb/default/adb.conf /usr/local/etc/adb/adb.conf \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/bind 127.0.0.1/bind 127.0.0.1 %s/g\" /usr/local/etc/adb/adb.conf \n", para5GData["DB_IP"])) + cmdStrArr = append(cmdStrArr, "sudo service adb restart \n") + } + // kvdb + if strings.Contains(pkgCmdStr, "kvdb") { + para5GData := NewNeInfoImpl.Para5GData + cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/kvdb/default/kvdb.conf /usr/local/etc/kvdb/kvdb.conf \n") + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/bind 127.0.0.1/bind 127.0.0.1 %s/g\" /usr/local/etc/kvdb/kvdb.conf \n", para5GData["DB_IP"])) + cmdStrArr = append(cmdStrArr, "sudo service kvdb restart \n") + } + } + + // 删除软件包 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm %s \n", strings.Join(neFilePaths, " "))) + // 结束 + cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr)) + + return okFlagStr, cmdStrArr, nil +} + +// operateRun 操作版本-执行阶段 +func (r *NeVersion) operateRun(sshClient *ssh.ConnSSH, preinput map[string]string, cmdStrArr []string, neType string, okFlagStr string) (string, error) { + // ssh连接会话 + clientSession, err := sshClient.NewClientSession(127, 42) + if err != nil { + return "", fmt.Errorf("neinfo ssh client session new err") + } + defer clientSession.Close() + + firstRead := true // 首次命令进行记录日志信息 + commandLineText := "" // 日志信息 + done := make(chan bool) // 完成信号 + // 超时退出 120s + timeoutTicker := time.NewTicker(120 * time.Second) + defer timeoutTicker.Stop() + // 实时读取SSH消息直接输出 + msTicker := time.NewTicker(100 * time.Millisecond) + defer msTicker.Stop() + go func() { + for { + select { + case <-timeoutTicker.C: + done <- true + return + case <-msTicker.C: + outputByte := clientSession.Read() + if len(outputByte) > 0 { + outputStr := string(outputByte) + // 非首次进行记录命令 + if !firstRead { + commandLineText += outputStr + } + + // IMS预输入 + if neType == "IMS" { + // IMS包 P/I/S-CSCF Config 配置覆盖 + if strings.Contains(outputStr, "(P/I/S-CSCF Config)? ") { + if pisCSCF, ok := preinput["pisCSCF"]; ok && pisCSCF != "" { + clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) + } else { + clientSession.Write("y \n") + } + continue + } + // MF包 etc下目录覆盖 + if strings.Contains(outputStr, "/usr/local/etc/mf directory? (Yes/No, default: No)") { + if pisCSCF, ok := preinput["updateMFetc"]; ok && pisCSCF != "" { + clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) + } else { + clientSession.Write("No \n") + } + continue + } + // MF包 share下目录覆盖 + if strings.Contains(outputStr, "/usr/local/share/mf directory? (Yes/No, default: No)") { + if pisCSCF, ok := preinput["updateMFshare"]; ok && pisCSCF != "" { + clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) + } else { + clientSession.Write("No \n") + } + continue + } + } + + // 命令终止符后继续执行命令 + suffix := strings.HasSuffix(outputStr, "~]# ") || strings.HasSuffix(outputStr, "~$ ") + if len(cmdStrArr) > 0 && suffix { + if firstRead { + firstRead = false + } + shiftElement := cmdStrArr[0] // 获取第一个元素 + cmdStrArr = cmdStrArr[1:] // 将第一个元素从切片中移除 + clientSession.Write(shiftElement) + continue + } + // 最后输出的退出标记 + if strings.LastIndex(outputStr, okFlagStr) > 5 { + done <- true + break + } + } + } + } + }() + // 等待写入协程完成 + <-done + + return commandLineText, nil +} + +// operateDome 操作版本-完成阶段 +func (r *NeVersion) operateDome(action string, neVersion model.NeVersion) error { + if action == "install" { + // 网元信息 + neInfo := NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) + if neInfo.NeId != neVersion.NeId { + return fmt.Errorf("error found neinfo") + } + // ========= 网元OAM配置文件 start ========== + if err := NewNeInfoImpl.NeConfOAMWirteSync(neInfo, nil, true); err != nil { + return fmt.Errorf("error wirte OAM file info") + } + // ========= 网元OAM配置文件 end =========== + } + + // 更新Version + verInfo := r.SelectByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) + if verInfo.NeId == neVersion.NeId { + curName := verInfo.Name + curVersion := verInfo.Version + curPath := verInfo.Path + if action == "install" { + verInfo.Name = neVersion.NewName + verInfo.Version = neVersion.NewVersion + verInfo.Path = neVersion.NewPath + verInfo.PreName = "-" + verInfo.PreVersion = "-" + verInfo.PrePath = "-" + verInfo.NewName = "-" + verInfo.NewVersion = "-" + verInfo.NewPath = "-" + } + if action == "upgrade" { + verInfo.Name = neVersion.NewName + verInfo.Version = neVersion.NewVersion + verInfo.Path = neVersion.NewPath + verInfo.PreName = curName + verInfo.PreVersion = curVersion + verInfo.PrePath = curPath + verInfo.NewName = "-" + verInfo.NewVersion = "-" + verInfo.NewPath = "-" + } + if action == "rollback" { + verInfo.Name = neVersion.PreName + verInfo.Version = neVersion.PreVersion + verInfo.Path = neVersion.PrePath + verInfo.PreName = curName + verInfo.PreVersion = curVersion + verInfo.PrePath = curPath + } + + verInfo.Status = "1" + r.Update(verInfo) + } + return nil } diff --git a/src/modules/network_element/service/ne_version.impl.go b/src/modules/network_element/service/ne_version.impl.go deleted file mode 100644 index ab1b8844..00000000 --- a/src/modules/network_element/service/ne_version.impl.go +++ /dev/null @@ -1,650 +0,0 @@ -package service - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "time" - - "be.ems/src/framework/utils/file" - "be.ems/src/framework/utils/ssh" - "be.ems/src/modules/network_element/model" - "be.ems/src/modules/network_element/repository" -) - -// 实例化服务层 NeVersionImpl 结构体 -var NewNeVersionImpl = &NeVersionImpl{ - neVersionRepository: repository.NewNeVersionImpl, -} - -// NeVersionImpl 网元版本信息 服务层处理 -type NeVersionImpl struct { - // 网元版本信息表 - neVersionRepository repository.INeVersion -} - -// SelectNeHostPage 分页查询列表数据 -func (r *NeVersionImpl) SelectPage(query map[string]any) map[string]any { - return r.neVersionRepository.SelectPage(query) -} - -// SelectConfigList 查询列表 -func (r *NeVersionImpl) SelectList(neVersion model.NeVersion) []model.NeVersion { - return r.neVersionRepository.SelectList(neVersion) -} - -// SelectByIds 通过ID查询 -func (r *NeVersionImpl) SelectById(id string) model.NeVersion { - if id == "" { - return model.NeVersion{} - } - neVersions := r.neVersionRepository.SelectByIds([]string{id}) - if len(neVersions) > 0 { - return neVersions[0] - } - return model.NeVersion{} -} - -// Insert 新增信息 -func (r *NeVersionImpl) Insert(neVersion model.NeVersion) string { - return r.neVersionRepository.Insert(neVersion) -} - -// Update 修改信息 -func (r *NeVersionImpl) Update(neVersion model.NeVersion) int64 { - return r.neVersionRepository.Update(neVersion) -} - -// DeleteByIds 批量删除信息 -func (r *NeVersionImpl) DeleteByIds(ids []string) (int64, error) { - // 检查是否存在 - rowIds := r.neVersionRepository.SelectByIds(ids) - if len(rowIds) <= 0 { - return 0, fmt.Errorf("neVersion.noData") - } - - if len(rowIds) == len(ids) { - rows := r.neVersionRepository.DeleteByIds(ids) - return rows, nil - } - // 删除信息失败! - return 0, fmt.Errorf("delete fail") -} - -// SelectByNeTypeAndNeID 通过网元类型和网元ID查询 -func (r *NeVersionImpl) SelectByNeTypeAndNeID(neType, neId string) model.NeVersion { - neVersions := r.neVersionRepository.SelectList(model.NeVersion{ - NeType: neType, - NeId: neId, - }) - if len(neVersions) > 0 { - return neVersions[0] - } - return model.NeVersion{} -} - -// Operate 操作版本上传到网元主机执行命令 -// -// action 安装行为:install upgrade rollback -func (r *NeVersionImpl) Operate(action string, neVersion model.NeVersion, preinput map[string]string) (string, error) { - // 网元主机的SSH客户端 - sshClient, err := NewNeInfoImpl.NeRunSSHClient(neVersion.NeType, neVersion.NeId) - if err != nil { - return "", err - } - defer sshClient.Close() - - // ========= 文件传输阶段 ========= - softwarePath := neVersion.Path - if action == "install" || action == "upgrade" { - softwarePath = neVersion.NewPath - } - if action == "rollback" { - softwarePath = neVersion.PrePath - } - neFilePaths, err := r.operateFile(sshClient, softwarePath) - if err != nil { - return "", err - } - - // ========= 安装时设置 ========= - if action == "install" { - // 网元公共配置文件 - para5GMap, err := NewNeInfoImpl.NeConfPara5GRead() - if para5GMap == nil || err != nil { - return "", fmt.Errorf("error read para5G file info") - } - if err := NewNeInfoImpl.NeConfPara5GWirte(para5GMap, []string{fmt.Sprintf("%s@%s", neVersion.NeType, neVersion.NeId)}); err != nil { - return "", fmt.Errorf("error wirte para5G file info") - } - } - - // ========= 命令生成阶段 ========= - okFlagStr, cmdStrArr, err := r.operateCommand(action, neVersion.NeType, neFilePaths) - if err != nil { - return "", err - } - - // ========= 执行阶段 ========= - commandLine, err := r.operateRun(sshClient, preinput, cmdStrArr, neVersion.NeType, okFlagStr) - if err != nil { - return "", err - } - - // ========= 完成阶段 ========= - if strings.LastIndex(commandLine, okFlagStr) > 5 { - if err := r.operateDome(action, neVersion); err != nil { - return "", err - } - } - return commandLine, nil -} - -// operateDome 操作版本-文件传输阶段 -func (r *NeVersionImpl) operateFile(sshClient *ssh.ConnSSH, softwarePath string) ([]string, error) { - // 网元主机的SSH客户端进行文件传输 - sftpClient, err := sshClient.NewClientSFTP() - if err != nil { - return nil, err - } - defer sftpClient.Close() - - nePath := "/tmp" - copyFileToNeMap := map[string]string{} - - // 统一处理多个文件和单个文件的情况 - var softwarePaths []string - if strings.Contains(softwarePath, ",") { - softwarePaths = strings.Split(softwarePath, ",") - } else { - softwarePaths = []string{softwarePath} - } - - for _, path := range softwarePaths { - // 检查文件是否存在 - localFilePath := file.ParseUploadFilePath(path) - if _, err := os.Stat(localFilePath); err != nil { - return nil, fmt.Errorf("file read failure") - } - - fileName := filepath.Base(path) - neFilePath := fmt.Sprintf("%s/%s", nePath, fileName) - copyFileToNeMap[localFilePath] = neFilePath - } - - // 上传软件包到 /tmp - neFilePaths := []string{} - for k, v := range copyFileToNeMap { - if err = sftpClient.CopyFileLocalToRemote(k, v); err != nil { - return nil, fmt.Errorf("error uploading package") - } - neFilePaths = append(neFilePaths, v) - } - return neFilePaths, nil -} - -// operateDome 操作版本-命令生成阶段 -func (r *NeVersionImpl) operateCommand(action, neType string, neFilePaths []string) (string, []string, error) { - neTypeLower := strings.ToLower(neType) - // 命令终止结束标记 - okFlagStr := fmt.Sprintf("%s version %s successful!", neTypeLower, action) - // 安装软件包 - pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", strings.Join(neFilePaths, " ")) - fileExt := filepath.Ext(strings.ToLower(neFilePaths[0])) - if strings.HasSuffix(fileExt, "rpm") { - pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh %s", strings.Join(neFilePaths, " ")) - } - - // 组合命令输入 - cmdStrArr := []string{} - if neType == "OMC" { - omcStrArr := []string{} - if action == "install" { - // 安装软件包 - pkgCmdStr = fmt.Sprintf("sudo M_PARAM=install dpkg -i %s", strings.Join(neFilePaths, " ")) - if strings.HasSuffix(fileExt, "rpm") { - pkgCmdStr = fmt.Sprintf("sudo M_PARAM=install rpm -Uvh %s", strings.Join(neFilePaths, " ")) - } - omcStrArr = append(omcStrArr, pkgCmdStr) - } else { - // 升级软件包 - pkgCmdStr = fmt.Sprintf("sudo M_PARAM=upgrade dpkg -i %s", strings.Join(neFilePaths, " ")) - if strings.HasSuffix(fileExt, "rpm") { - pkgCmdStr = fmt.Sprintf("sudo M_PARAM=upgrade rpm -Uvh %s", strings.Join(neFilePaths, " ")) - } - omcStrArr = append(omcStrArr, pkgCmdStr) - } - // 删除软件包 - omcStrArr = append(omcStrArr, fmt.Sprintf("sudo rm %s", strings.Join(neFilePaths, " "))) - - // 2s后执行omc相关命令 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("nohup sh -c \"sleep 2s && %s\" > /tmp/omc_%s.out 2>&1 & \n", strings.Join(omcStrArr, " && "), action)) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr)) - return okFlagStr, cmdStrArr, nil - } else if neType == "IMS" { - if action == "install" { - para5GData := NewNeInfoImpl.Para5GData - cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") - - // 公网 PLMN地址 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("/usr/local/etc/ims/default/tools/modipplmn.sh %s %s %s \n", para5GData["SIP_IP"], para5GData["MCC"], para5GData["MNC"])) - // 内网 服务地址 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("/usr/local/etc/ims/default/tools/modintraip.sh %s \n", para5GData["IMS_IP"])) - // IWF连接PCF服务 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/iwf/iwf_conf.yaml \n", para5GData["PCF_IP"])) - // 设置 HOST - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s ims' /etc/hosts || echo '%s ims' | sudo tee -a /etc/hosts \n", para5GData["IMS_IP"], para5GData["IMS_IP"])) - mnc_mcc := fmt.Sprintf("mnc%s.mcc%s", para5GData["MNC_DOMAIN"], para5GData["MCC"]) - hssHost := fmt.Sprintf("%s hss.ims.%s.3gppnetwork.org hss", para5GData["UDM_IP"], mnc_mcc) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", hssHost, hssHost)) - pcrfHost := fmt.Sprintf("%s pcrf.epc.%s.3gppnetwork.org pcrf", para5GData["IMS_IP"], mnc_mcc) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcrfHost, pcrfHost)) - imsOrgHost := fmt.Sprintf("ims.%s.3gppnetwork.org", mnc_mcc) - imsHost := fmt.Sprintf("%s %s ims", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", imsHost, imsHost)) - pcscfHost := fmt.Sprintf("%s pcscf.%s pcscf", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", pcscfHost, pcscfHost)) - icscfHost := fmt.Sprintf("%s icscf.%s icscf", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", icscfHost, icscfHost)) - scscfHost := fmt.Sprintf("%s scscf.%s scscf", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", scscfHost, scscfHost)) - mmtelHost := fmt.Sprintf("%s mmtel.%s mmtel", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mmtelHost, mmtelHost)) - mrfcHost := fmt.Sprintf("%s mrfc.%s mrfc", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", mrfcHost, mrfcHost)) - smsHost := fmt.Sprintf("%s smsc.%s smsc", para5GData["SIP_IP"], imsOrgHost) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s' /etc/hosts || echo '%s' | sudo tee -a /etc/hosts \n", smsHost, smsHost)) - - cmdStrArr = append(cmdStrArr, "ims-stop || true && ims-start \n") - // 30s后停止服务 - // cmdStrArr = append(cmdStrArr, "nohup sh -c \"sleep 30s && sudo ims-stop\" > /dev/null 2>&1 & \n") - } else { - cmdStrArr = append(cmdStrArr, "ims-stop \n") - cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") - cmdStrArr = append(cmdStrArr, "ims-start \n") - } - } else { - if action == "install" { - para5GData := NewNeInfoImpl.Para5GData - cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") - - // AMF配置修改 - if neTypeLower == "amf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/amf/default/amfcfg.yaml /usr/local/etc/amf/amfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.120/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["N2_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SST"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SD"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- 4388/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["TAC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["AUSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["PCF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.200/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["LMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["NEF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- internet/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["DNN_DATA"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s n2' /etc/hosts || echo '%s n2' | sudo tee -a /etc/hosts \n", para5GData["N2_IP"], para5GData["N2_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s amf' /etc/hosts || echo '%s amf' | sudo tee -a /etc/hosts \n", para5GData["AMF_IP"], para5GData["AMF_IP"])) - } - // AUSF配置修改 - if neTypeLower == "ausf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/ausf/default/ausfcfg.yaml /usr/local/etc/ausf/ausfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["AUSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/ausf/ausfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s ausf' /etc/hosts || echo '%s ausf' | sudo tee -a /etc/hosts \n", para5GData["AUSF_IP"], para5GData["AUSF_IP"])) - } - // UDM配置修改 - if neTypeLower == "udm" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/udmcfg.yaml /usr/local/etc/udm/udmcfg.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/nssai.yaml /usr/local/etc/udm/nssai.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/snssai.yaml /usr/local/etc/udm/snssai.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/as.yaml /usr/local/etc/udm/as.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/dnn.yaml /usr/local/etc/udm/dnn.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/udm/default/scscfSet.yaml /usr/local/etc/udm/scscfSet.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["AUSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/udmcfg.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/as.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/udm/scscfSet.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/nssai.yaml \n", para5GData["SST"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["SST"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/nssai.yaml \n", para5GData["SD"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["SD"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_DATA"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/snssai.yaml \n", para5GData["DNN_IMS"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'internet'/serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_DATA"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/serviceSelection: 'ims'/serviceSelection: '%s'/g\" /usr/local/etc/udm/epsApn.yaml \n", para5GData["DNN_IMS"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: internet/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_DATA"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/dnn: ims/dnn: %s/g\" /usr/local/etc/udm/dnn.yaml \n", para5GData["DNN_IMS"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/udm/as.yaml \n", para5GData["SIP_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s udm' /etc/hosts || echo '%s udm' | sudo tee -a /etc/hosts \n", para5GData["UDM_IP"], para5GData["UDM_IP"])) - } - // SMF配置修改 - if neTypeLower == "smf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/smf/default/smf_conf.yaml /usr/local/etc/smf/smf_conf.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.110/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["SIP_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["SMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["PCF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UPF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|10.2.1.0/24|%s|g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["UE_POOL"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/internet/%s/g\" /usr/local/etc/smf/smf_conf.yaml \n", para5GData["DNN_DATA"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s smf' /etc/hosts || echo '%s smf' | sudo tee -a /etc/hosts \n", para5GData["SMF_IP"], para5GData["SMF_IP"])) - } - // PCF配置修改 - if neTypeLower == "pcf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/pcf/default/pcfcfg.yaml /usr/local/etc/pcf/pcfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["PCF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["NEF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/pcf/pcfcfg.yaml \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s pcf' /etc/hosts || echo '%s pcf' | sudo tee -a /etc/hosts \n", para5GData["PCF_IP"], para5GData["PCF_IP"])) - } - - // NSSF配置修改 - if neTypeLower == "nssf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nssf/default/nssfcfg.yaml /usr/local/etc/nssf/nssfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.170/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["NSSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nssf/nssfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nssf' /etc/hosts || echo '%s nssf' | sudo tee -a /etc/hosts \n", para5GData["NSSF_IP"], para5GData["NSSF_IP"])) - } - // NRF配置修改 - if neTypeLower == "nrf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nrf/default/nrfcfg.yaml /usr/local/etc/nrf/nrfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mcc: 001/mcc: %s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc: 01/mnc: %s/g\" /usr/local/etc/nrf/nrfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nrf' /etc/hosts || echo '%s nrf' | sudo tee -a /etc/hosts \n", para5GData["NRF_IP"], para5GData["NRF_IP"])) - } - - // UPF配置修改 - if neTypeLower == "upf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfcfg.yaml /usr/local/etc/upf/upfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/upf/default/upfForwarder_1.yaml /usr/local/etc/upf/upfForwarder_1.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/upf/upfcfg.yaml \n", para5GData["UPF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/localhost/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UPF_IP"])) - // UE - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4: 10.2.1.0/s/ueIpv4: 10.2.1.0/ueIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ueIpv4Mask: 255.255.255.0/s/ueIpv4Mask: 255.255.255.0/ueIpv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["UE_MASK"])) - // N3 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.190/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/ipv4Mask: 255.255.240.0/s/ipv4Mask: 255.255.240.0/ipv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_MASK"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_GW"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_PCI"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N3\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N3_MAC"])) - // 标准版 N6 - if para5GData["UPF_TYPE"] == "StandardUPF" { - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.191/%s/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/ipv4Mask: 255.255.240.0/s/ipv4Mask: 255.255.240.0/ipv4Mask: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_MASK"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/gatewayIpv4: 192.168.1.254/s/gatewayIpv4: 192.168.1.254/gatewayIpv4: %s/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_GW"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/interfacePCI: \"0000:00:00.0\"/s/interfacePCI: \"0000:00:00.0\"/interfacePCI: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_PCI"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i '/- interfaceType: \"N6\"/,/macAddr: \"00:00:00:00:00:00\"/s/macAddr: \"00:00:00:00:00:00\"/macAddr: \"%s\"/' /usr/local/etc/upf/upfForwarder_1.yaml \n", para5GData["N6_MAC"])) - // 路由 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo ip route add '%s/%s' via '%s' \n", para5GData["UE_IP"], para5GData["UE_CIDR"], para5GData["N6_IP"])) - } - // 轻量版 - if para5GData["UPF_TYPE"] == "LightUPF" { - cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/192.168.8.191/0.0.0.0/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo sed -i \"s/type: upfd/type: tun/g\" /usr/local/etc/upf/upfForwarder_1.yaml \n") - cmdStrArr = append(cmdStrArr, "sudo sed -i 's/driverType: vmxnet3/driverType: \"\"/g' /usr/local/etc/upf/upfForwarder_1.yaml \n") - } - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upf' /etc/hosts || echo '%s upf' | sudo tee -a /etc/hosts \n", para5GData["UPF_IP"], para5GData["UPF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn3' /etc/hosts || echo '%s upfn3' | sudo tee -a /etc/hosts \n", para5GData["N3_IP"], para5GData["N3_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s upfn6' /etc/hosts || echo '%s upfn6' | sudo tee -a /etc/hosts \n", para5GData["N6_IP"], para5GData["N6_IP"])) - } - - // LMF配置修改 - 已不再维护,导致激活License失败 - // NEF配置修改 - SNMP无需License - if neTypeLower == "nef" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/nef/default/nef_conf.yaml /usr/local/etc/nef/nef_conf.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.110/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["IMS_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["AUSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["SMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.160/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["PCF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.170/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NSSF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.180/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NRF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.190/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["UPF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.210/%s/g\" /usr/local/etc/nef/nef_conf.yaml \n", para5GData["NEF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s nef' /etc/hosts || echo '%s nef' | sudo tee -a /etc/hosts \n", para5GData["NEF_IP"], para5GData["NEF_IP"])) - } - - // MME配置修改 - 4G - if neTypeLower == "mme" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/mme/default/mme.conf /usr/local/etc/mme/mme.conf \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.120/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["AMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["SMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|192.168.8.220/20|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S1_MMEIP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S11_MMEIP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.220|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["MME_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s|172.16.5.221/24|%s|g\" /usr/local/etc/mme/mme.conf \n", para5GData["S10_MMEIP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/mnc001.mcc001/mnc%s.mcc%s/g\" /usr/local/etc/mme/mme.conf \n", para5GData["MNC_DOMAIN"], para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/\"00101\"/\"%s%s\"/g\" /usr/local/etc/mme/mme.conf \n", para5GData["MCC"], para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MCC=\"001\"/MCC=\"%s\"/g' /usr/local/etc/mme/mme.conf \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MCC = \"001\"/MCC = \"%s\"/g' /usr/local/etc/mme/mme.conf \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MNC=\"01\";/MNC=\"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/MNC = \"01\";/MNC = \"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/TAC = \"1\";/TAC = \"%s\";/g' /usr/local/etc/mme/mme.conf \n", para5GData["TAC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i 's/TAC = 1;/TAC = %s;/g' /usr/local/etc/mme/mme.conf \n", para5GData["TAC"])) - // SMF开启 - cmdStrArr = append(cmdStrArr, "sudo sed -i \"/^ *gxcfg:/,/^ *[^ ]/{s/enable: false/enable: true/;b};\" /usr/local/etc/smf/smf_conf.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s mme' /etc/hosts || echo '%s mme' | sudo tee -a /etc/hosts \n", para5GData["MME_IP"], para5GData["MME_IP"])) - } - // N3IWF配置修改 - if neTypeLower == "n3iwf" { - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/n3iwf/default/n3iwfcfg.yaml /usr/local/etc/n3iwf/n3iwfcfg.yaml \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/MCC: 001/MCC: %s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["MCC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/MNC: 01/MNC: %s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["MNC"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.12.161/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3IWF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.12.160/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3IWF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.27/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["UDM_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.239/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["SMF_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.8.22/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N2_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.161/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N3_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/192.168.1.160/%s/g\" /usr/local/etc/n3iwf/n3iwfcfg.yaml \n", para5GData["N6_IP"])) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("grep -qxF '%s n3iwf' /etc/hosts || echo '%s n3iwf' | sudo tee -a /etc/hosts \n", para5GData["N3IWF_IP"], para5GData["N3IWF_IP"])) - } - - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s restart \n", neTypeLower)) - // 30s后停止服务 - // cmdStrArr = append(cmdStrArr, fmt.Sprintf("nohup sh -c \"sleep 30s && sudo service %s stop\" > /dev/null 2>&1 & \n", neTypeLower)) - } else { - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s stop \n", neTypeLower)) - cmdStrArr = append(cmdStrArr, pkgCmdStr+" \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo service %s restart \n", neTypeLower)) - } - } - - // 安装操作有redis安装时需要重启 - if action == "install" && (neTypeLower == "ims" || neTypeLower == "udm") { - // adb - if strings.Contains(pkgCmdStr, "adb") { - para5GData := NewNeInfoImpl.Para5GData - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/adb/default/adb.conf /usr/local/etc/adb/adb.conf \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/bind 127.0.0.1/bind 127.0.0.1 %s/g\" /usr/local/etc/adb/adb.conf \n", para5GData["DB_IP"])) - cmdStrArr = append(cmdStrArr, "sudo service adb restart \n") - } - // kvdb - if strings.Contains(pkgCmdStr, "kvdb") { - para5GData := NewNeInfoImpl.Para5GData - cmdStrArr = append(cmdStrArr, "sudo cp /usr/local/etc/kvdb/default/kvdb.conf /usr/local/etc/kvdb/kvdb.conf \n") - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/bind 127.0.0.1/bind 127.0.0.1 %s/g\" /usr/local/etc/kvdb/kvdb.conf \n", para5GData["DB_IP"])) - cmdStrArr = append(cmdStrArr, "sudo service kvdb restart \n") - } - } - - // 删除软件包 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm %s \n", strings.Join(neFilePaths, " "))) - // 结束 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr)) - - return okFlagStr, cmdStrArr, nil -} - -// operateDome 操作版本-执行阶段 -func (r *NeVersionImpl) operateRun(sshClient *ssh.ConnSSH, preinput map[string]string, cmdStrArr []string, neType string, okFlagStr string) (string, error) { - // ssh连接会话 - clientSession, err := sshClient.NewClientSession(127, 42) - if err != nil { - return "", fmt.Errorf("neinfo ssh client session new err") - } - defer clientSession.Close() - - firstRead := true // 首次命令进行记录日志信息 - commandLineText := "" // 日志信息 - done := make(chan bool) // 完成信号 - // 超时退出 120s - timeoutTicker := time.NewTicker(120 * time.Second) - defer timeoutTicker.Stop() - // 实时读取SSH消息直接输出 - msTicker := time.NewTicker(100 * time.Millisecond) - defer msTicker.Stop() - go func() { - for { - select { - case <-timeoutTicker.C: - done <- true - return - case <-msTicker.C: - outputByte := clientSession.Read() - if len(outputByte) > 0 { - outputStr := string(outputByte) - // 非首次进行记录命令 - if !firstRead { - commandLineText += outputStr - } - - // IMS预输入 - if neType == "IMS" { - // IMS包 P/I/S-CSCF Config 配置覆盖 - if strings.Contains(outputStr, "(P/I/S-CSCF Config)? ") { - if pisCSCF, ok := preinput["pisCSCF"]; ok && pisCSCF != "" { - clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) - } else { - clientSession.Write("y \n") - } - continue - } - // MF包 etc下目录覆盖 - if strings.Contains(outputStr, "/usr/local/etc/mf directory? (Yes/No, default: No)") { - if pisCSCF, ok := preinput["updateMFetc"]; ok && pisCSCF != "" { - clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) - } else { - clientSession.Write("No \n") - } - continue - } - // MF包 share下目录覆盖 - if strings.Contains(outputStr, "/usr/local/share/mf directory? (Yes/No, default: No)") { - if pisCSCF, ok := preinput["updateMFshare"]; ok && pisCSCF != "" { - clientSession.Write(fmt.Sprintf("%s \n", pisCSCF)) - } else { - clientSession.Write("No \n") - } - continue - } - } - - // 命令终止符后继续执行命令 - suffix := strings.HasSuffix(outputStr, "~]# ") || strings.HasSuffix(outputStr, "~$ ") - if len(cmdStrArr) > 0 && suffix { - if firstRead { - firstRead = false - } - shiftElement := cmdStrArr[0] // 获取第一个元素 - cmdStrArr = cmdStrArr[1:] // 将第一个元素从切片中移除 - clientSession.Write(shiftElement) - continue - } - // 最后输出的退出标记 - if strings.LastIndex(outputStr, okFlagStr) > 5 { - done <- true - break - } - } - } - } - }() - // 等待写入协程完成 - <-done - - return commandLineText, nil -} - -// operateDome 操作版本-完成阶段 -func (r *NeVersionImpl) operateDome(action string, neVersion model.NeVersion) error { - if action == "install" { - // 网元信息 - neInfo := NewNeInfoImpl.SelectNeInfoByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) - if neInfo.NeId != neVersion.NeId { - return fmt.Errorf("error found neinfo") - } - // ========= 网元OAM配置文件 start ========== - if err := NewNeInfoImpl.NeConfOAMWirteSync(neInfo, nil, true); err != nil { - return fmt.Errorf("error wirte OAM file info") - } - // ========= 网元OAM配置文件 end =========== - } - - // 更新Version - verInfo := r.SelectByNeTypeAndNeID(neVersion.NeType, neVersion.NeId) - if verInfo.NeId == neVersion.NeId { - curName := verInfo.Name - curVersion := verInfo.Version - curPath := verInfo.Path - if action == "install" { - verInfo.Name = neVersion.NewName - verInfo.Version = neVersion.NewVersion - verInfo.Path = neVersion.NewPath - verInfo.PreName = "-" - verInfo.PreVersion = "-" - verInfo.PrePath = "-" - verInfo.NewName = "-" - verInfo.NewVersion = "-" - verInfo.NewPath = "-" - } - if action == "upgrade" { - verInfo.Name = neVersion.NewName - verInfo.Version = neVersion.NewVersion - verInfo.Path = neVersion.NewPath - verInfo.PreName = curName - verInfo.PreVersion = curVersion - verInfo.PrePath = curPath - verInfo.NewName = "-" - verInfo.NewVersion = "-" - verInfo.NewPath = "-" - } - if action == "rollback" { - verInfo.Name = neVersion.PreName - verInfo.Version = neVersion.PreVersion - verInfo.Path = neVersion.PrePath - verInfo.PreName = curName - verInfo.PreVersion = curVersion - verInfo.PrePath = curPath - } - - verInfo.Status = "1" - NewNeVersionImpl.Update(verInfo) - } - return nil -} From db2bfc04dded797c446f45085026ea90c4085118 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 21 Sep 2024 16:39:56 +0800 Subject: [PATCH 7/9] =?UTF-8?q?sql:=20=E6=9B=B4=E6=96=B0UDM=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E8=A1=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/upgrade/upg_u_auth_user.sql | 16 +++++------ database/upgrade/upg_u_sub_user.sql | 40 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/database/upgrade/upg_u_auth_user.sql b/database/upgrade/upg_u_auth_user.sql index 48143e8c..7627b565 100644 --- a/database/upgrade/upg_u_auth_user.sql +++ b/database/upgrade/upg_u_auth_user.sql @@ -17,11 +17,11 @@ CREATE TABLE IF NOT EXISTS `u_auth_user` ( -- Dump completed on 2024-03-06 17:26:59 -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `imsi`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AMF' AFTER `ne_id`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '状态' AFTER `amf`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ki' AFTER `status`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'algoIndex' AFTER `ki`; -ALTER TABLE `u_auth_user` MODIFY COLUMN IF NOT EXISTS `opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'OPC' AFTER `algo_index`; -ALTER TABLE `u_auth_user` DROP COLUMN IF NOT EXISTS `msisdn`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `imsi`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `amf` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'AMF' AFTER `ne_id`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '状态' AFTER `amf`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `ki` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ki' AFTER `status`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `algo_index` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'algoIndex' AFTER `ki`; +ALTER TABLE `u_auth_user` MODIFY COLUMN IF EXISTS `opc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'OPC' AFTER `algo_index`; +ALTER TABLE `u_auth_user` DROP COLUMN IF EXISTS `msisdn`; diff --git a/database/upgrade/upg_u_sub_user.sql b/database/upgrade/upg_u_sub_user.sql index d212cf4a..b3a2d46f 100644 --- a/database/upgrade/upg_u_sub_user.sql +++ b/database/upgrade/upg_u_sub_user.sql @@ -32,23 +32,23 @@ CREATE TABLE IF NOT EXISTS `u_sub_user` ( -- Dump completed on 2024-03-06 17:26:59 ALTER TABLE `u_sub_user` ADD COLUMN IF NOT EXISTS `cag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'CAG' AFTER `static_ip`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户电话号码' AFTER `imsi`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `msisdn`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubUeAMBRTemp' AFTER `ne_id`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubSNSSAITemp' AFTER `ambr`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR' AFTER `nssai`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'forbiddenAreasTemp' AFTER `rat`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'serviceAreaRestrictTemp' AFTER `arfb`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'cnType EPC|5GC' AFTER `sar`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smData' AFTER `cn`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smfSel' AFTER `sm_data`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Eps' AFTER `smf_sel`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsFlag' AFTER `eps_dat`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsOdb' AFTER `eps_flag`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'hplmnOdb' AFTER `eps_odb`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Ard' AFTER `hplmn_odb`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Epstpl' AFTER `ard`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ContextId' AFTER `epstpl`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'apnContext' AFTER `context_id`; -ALTER TABLE `u_sub_user` MODIFY COLUMN IF NOT EXISTS `static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP,没有可不带此字段名' AFTER `apn_context`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `imsi` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SIM卡/USIM卡ID' AFTER `id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `msisdn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户电话号码' AFTER `imsi`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ne_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'UDM网元标识' AFTER `msisdn`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ambr` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubUeAMBRTemp' AFTER `ne_id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `nssai` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'SubSNSSAITemp' AFTER `ambr`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `rat` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'rat VIRTUAL|WLAN|EUTRA|NR' AFTER `nssai`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `arfb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'forbiddenAreasTemp' AFTER `rat`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sar` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'serviceAreaRestrictTemp' AFTER `arfb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `cn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'cnType EPC|5GC' AFTER `sar`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `sm_data` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smData' AFTER `cn`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `smf_sel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'smfSel' AFTER `sm_data`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_dat` varchar(1500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Eps' AFTER `smf_sel`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_flag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsFlag' AFTER `eps_dat`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `eps_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'epsOdb' AFTER `eps_flag`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `hplmn_odb` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'hplmnOdb' AFTER `eps_odb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `ard` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Ard' AFTER `hplmn_odb`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `epstpl` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'Epstpl' AFTER `ard`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `context_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'ContextId' AFTER `epstpl`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `apn_context` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'apnContext' AFTER `context_id`; +ALTER TABLE `u_sub_user` MODIFY COLUMN IF EXISTS `static_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT 'staticIpstatic_ip指给4G UE分配的静态IP,没有可不带此字段名' AFTER `apn_context`; From 97ceccb783e1faa562b40e3accf05adf56ddb1f9 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Mon, 23 Sep 2024 11:27:15 +0800 Subject: [PATCH 8/9] add: mibs for cintel HLR test --- sshsvc/mibs/CINTEL-HLR-MIB.my | 7567 ++++++++++++++++++++++++++++++ sshsvc/mibs/CINTEL-HLR-MIB.smidb | Bin 0 -> 214132 bytes sshsvc/mibs/CINTEL-MIB.my | 656 +++ sshsvc/mibs/CINTEL-MIB.smidb | Bin 0 -> 29052 bytes 4 files changed, 8223 insertions(+) create mode 100644 sshsvc/mibs/CINTEL-HLR-MIB.my create mode 100644 sshsvc/mibs/CINTEL-HLR-MIB.smidb create mode 100644 sshsvc/mibs/CINTEL-MIB.my create mode 100644 sshsvc/mibs/CINTEL-MIB.smidb 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 0000000000000000000000000000000000000000..411ce61acb5e793186ab93a5ffdd57f906d661b6 GIT binary patch literal 214132 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7ff6e9b4c032619429e0d8b5f5e77a727d6aa002 GIT binary patch literal 29052 zcmeHQO^hVjQSP-_`~$YZ7-N16&$dwaKvy%}Jv+0W#jEY@nb~b=ewOLlowbpr$*#)o zPES>3IkT#JdbMC~#zJtw5*Iia`GP=PkdP3P4;T)J16(+8z>@Elg#-hdh z@OOZ}KaRh=Ud5&F;_K+)Q~w%2>AU~IHAB0fz{fwu)&BiE`MiH;&yCCBe3ZLkHp>pO zI(LIA&u011offlWcju+v{=Hj$cW3WKw_A><#VD`b*5$1$?zOzCi*n*NuWeku>|UG~ zqaoho?b_8Vy@O(Q$=%V8S9kaB_HW+qp^Mdx&}@6d?b<-Ms>1E(Q*`S#KY4xond_H7 zDMP$>VE`{=^S2D{UHHx6=3ic;a_}f02Cxs2 zI9%+;;eHQpUh_!{@KXjz0EgQH*2nYNjq-F7dYl*_`AR^qDEFp$)k)DGSOd-(8+eL_ zMV%dt^3d_u4DLq_&Qp|68esosVDB@qz|xbf7VNMvX_v3cBeaFS5pVzZ6{-+G= z11+#a^qX+>(7-4y?9DT3TAt?By~D%M-|rb98AL!&cX@btyO>0}|I*+{2;n?><)i`j zO#`FU5zMQ=FrVg=VLln0g^}Mwal`c?+zz)#ahM-f*)XByssa9_0g|V@Cgp5zQqQtc zN_cL-9|nNKO+N9uQPk5>cD6sOipkNl0g2x?@Sg&R!|nUNx7)wjcl-VOdv{+7z+X4u zj~K95#YW$oR|EXN8~jh72frOn&Bv)uxPAt=!`<2c)hnU@R}B7V4W6RItAS5|e#4-D z4iFBvH#zsqQwrofYWE)-<7{?WjG-oQNXWM203>I5bujQ(E+{0j!` zXB)ux^K2N!;uAKSGe9aDFI`G@Cc~G?(CM!k?8orC!|fRmU>{^fRGl+}{1P8@GG;Pc&C@g*ncjoBk706#`pEbj=so4Gf2K^P&fa@upEZII9I;EZzlb5()Msu zFip|%PA|_T|GAjV@@kUL8l9#@|Eh_=3uwVHUdByZU`m5`dU-AIpQlxEf+cC8Un1m@ z{z}p}iNB4TT5CdxcY66{!GF$)GzO@#))7}Sjcxdz{ipapZ4|$N?>%FvTP72Dr|`es zn#BP*GrGIKbbtXkKtkS!hW}}UJVa+4q`>WPlVM-Ny@}gje~mZPfWOC0B>oBa$8Zzr zHld2d{`p7{@&0ix4x4#)hh^oo?P~4z%fnd>*KTm^rWG8t!K~g`*}4qR?ds(#n_F93 zpE0LvMVq|$J-F)mbXr!k7xb%*K{?(S=(_!WjQ7wMjLR6Bv^jWvDj(%^Ku^rGEDz;J_>IEa4`Zl*u%TW@w|;rXTe(Pi*F{!R9(ey^ z3!vLu`eBIBf7?hjkX&f|J<2EUuqwx5UGBctcRTyLdwXK&2FFIJ-ECg(ZEiZ4r~9{d-LubJ*^svK(l1>-ACI%Dcq8{euQvyRokKt~D~l?3^)w$8 zhecjrk6k#|lLm8`LW~hn8kF#Q9LC(%{)5%z7*-F@};y1RXA-R<6AcQ4+=hZpzP-OK%T2gYTSp}Td< z9cL%Gpe*EMqtN9z&n9r)>p-XQ(YUsVd5N_E*@b7EQYzg}z|a}S$tt#$l|F~(ih68uyy`f9?I!u@2y^%Zco6Cv46>>!FxfruXkN7j$|i1=eZvXH3Yrgc zggx%y%w-(a_b@I`K)0KfWJ_R2osE%RDM$11#8DEl@=YM2j@TtKYjz+FaHZk(Nk z=7{<<`;#LDgcMn zp--DRqZRU&nQeIe7Va1M#;&j9FD=kTtkCcHM)tR1g%D8gq<&1}N1cvA2{sfE&vG(4 zbDLLFbsd-WY-45fYNYy0Mny_Bsqs{MY&_NX%qYLzRDbzAsu32yHLAC_7OCFeid28W zs7R@H3Dq7OPxVa`h_{>SKRl0W1ov-^>Z?~4slIw8Qav{+QmS7_sP@=+s-H9elvLZ2 z9`OB5yxR?*R#yH7@42R4M8dzCwBy@`5Whv5q27x`>K!Q`+@$RzP=;Xnu|MtFWmm8@Ah|I zcY{$zAA!pPzr`|%giu&t4qc{0H%4%4;?vZFsyG0qFtPhE)5PrB#1 zP%N^fQ&~$kGFkPU5GgMhREAA+Sr;2THpe8m{Bcpkc?54b9HwysSCGpc=Vj7`S8TtC zpj)f++}*v`zv&M0QF(f)8)HeRT?|_XB;$zZVLL8rS$7lvH#VHWcd6^FIwPfJHN-*> z!94)QOE@2!K5+^{GVi4_(gdkN9${2?e@S~8gT1k53NfYew5X5GgVMfSMn4Xy(iIy>@e0(OBGP8N7#4>p{E8)vij9iI;PULo7yg5O0c3eU4ZKzXt-J?ZShsB`aq$PGx7im=qghWJ6+Ac+~v8q5R%4*$sfnTKQ zg;Aw>0{64oEFVMmW~DUu3JPpa%Q<$_xjhJ>8OSP6=0%#IA%QAsoKhAT9fHk-&r!}3 zMG+g?^&-pGgPXT+%OLV1V3NG`*%j!Y_kbAGLCnPql5kb>&?qbz367J zLM}m`dNHOjqOEii*mN~Uwk>6cg+M|>yaZjlkn(0e1@Y@K_EvR*BHG@>!(;Mea(QSP zklKys$VP(PX z!|&ZX{UtVT3MQyk+jJHvVed^K(h)nLHi0N_7$W}OfmBT-g(dP7l4FRiecD3twM<6C zd23Dp*symPo7ZzVfJioIz6)L;7kSu`F?Nk%iVhDU4VX0@gO+6x%Yl1qH=Q0e%>59(yc$ z+R6kDd?jg!QDXZfNwsQ`Kw@$PZim?@U}YI9u1`63e_$NX9D*b+v{-}?$4AxJxvLrSafn(S35jm?_%Lr)xOFhh{QiTT1C@d&XKuZlC=Dse( zx5luC

b~$77$Uxk8q)%En3ZH?ptG94~&i-{0xq>}>SQy~dS(OyBo<%}Bf1zSSRky$k&bJJ(8nub~lgkOrXk8upqo_SpTU3nDn)?D+ZPg zh9$yK(FX>5Xpi?2f}tDJ6E$%fwHW}OeWPQSAtzF{r0?;|cV7rw zlN~;SMTvX@75n5xM)x&Z;^(4}Er?%Z&Q-C#tWkI|^%dZRoEGmrXDk_{T{mEQ z&+mlh>3i}i{vw~gOU$7+sm|z|RK+WXWRoE+<`7UfB%K8%j2##l1!9bip|`eJde)ps z>fVEOH`mq3!z_xBcc|XZl~K68wt2}NA(Q1^q^GdEj;uP1e(9nzKuhW-Vs-=2@S&x- zWF!(tdu{6yLj~nFf`vjta|S%xQ1|NKiPdk!tI@3R+C* zq`am0NQNNcx6Bd)rv^n~->S;TQuzQYp!2bluw?C-OHCt0E$-4N@&ls%fJh{F+j`)31(4>;v#`}yK(;%nx#)v`F$2? z(&rY4BuNj;Ifz281$)&}5{CpAoo*a*_1s8B(WBu4(d7OxOSw)5txNQg17IGIBC8P{bN4hk3G{&*Er; zDI4G$lSH;R%8^%`XnHmq4k6MZ0XLs9Q_HQ3WV1>X*h`#}rHR3SOoB%?z^Wj=g}M*{ ztGdBzb04}WOF9ElvdvJJBc^U`69sD|MRbns;}*}XwqhyrtYc$_->0bEqe*#+r<72| zVfx>k19%}v$LfFNk25@UC)FNd5^5F)vI>=25O&vxD7vf!Hk$~)=My2KgIk#6HQ8p# zrZ7d60kd0dAoU13%@}}F1ig00z=#{$^MhVFov}RhId_bQ$BdsUJiRR#AsWO31^ zBHdWPDRJ0p&$u-cH|YH|dp7&6s}@Vtgp`xCeq?6^k|9x;Bo$NIa(gmCRa;AJRcx9a z3WdUFnqzSeOYj*ejwMeoHHI`_G&~*xd&Up~dLzo93G9P%-E7ynJikSa!+cKtj+J>D zO~lA^IJNoXuqVOV)T6xWncDz;(g}vGv{Fc)IHvJTV27=89wpZ{KYaBuXT`Qqrt@kF zZw#vFbIDyI?I#KaAgCK^K!8uWbB)!gy|rw+8Y~78=0Q)hld>41?j@FsVAUNJeD=47 z4>UW?A$fQrWD3s|CO*oHbinnUkl3cqhM&s@P>5A7gF3L-7O6`$9@S7m?0kCa3#92Q zG)c_EEm$X1Z>T86!GeGeqyukY-L%fs& z7$~k)Dfy|E*4#$PMp&eWQZ^%9=x*+!pFvo^;$zOGeee;?0wxrMd1+M?c+;GK8dsgM zt1cj}ENJ1XMD2ysx0G;Na87_0Q-#WfgvC4NZq-;Oz$qKVf&f3`WYg@lbR(Jq6_&8h zK`yW=4H-catY$5|*-&xSPQmxN` zL3O06Zc~e)FnwG@#qr4>bE}y)Q>zNFuT^5t587+Ha2e^9*)b`EBkdJWWI!hoy}{EP z(0LJ)Df&-)DNTdvYoIB`(KQV5$SHCn@rIotWOC6$ii}g~$w!MWJ>3=}=Krgs5pwGOtj zgeR299abd3UOjg)MY)kCalCfXMvo9<$EpLBW7EYBk}MovaD>DU$FqckY??_O z15}L$8J5x$Ay!{VhL;H$MeoS$;A8+A?`9>Zlv9~S1MaE6ARSN|I@m2M8+0=LEtt?F ztL+QsjpF9rG-{(~E+nW!+Nkw1c89p?D&g(;x;RYcqH~&MVXD*~F;}J4Q&_Rf+S1B<}V(KtGQLAG6syqcv z4?+qFoJy3(Z6;Pl#?z;hv~CVdJL}K(QQhIgpw$KiahNtKWV;4*T)k|spI@pG?#<4o z%0(HpRS2lUrjw{aNnEV;Td@sE^$Q;@MfnbFNaTT36=)3xB$TGzX33<&FAIXfNr6?B zR@O^z@M0W}XOL1Okumt58@f^*LyIH*Ug7|xnj9Hm`b%#i8}@X<44tHEitr1(j?(}K zd!)`x6o@#w_ZWmtkZSKaFn`7nT4j%Jrl_$Z8=EI-y)=5~RD+(Fc)Fmh+!M#WDJhsR zFY9q!n^i9gBICE&!4qCHnm8ln)%hpI(8tYBD8 zXnMd6f`;Z%>FJKJr)DWH)C7^UJf11yBD}+w7bq%KuBECXjbmPwQpMn*^O**SMjz-T zyDzQQATZJZUYY?>(*&oyMy?NZA!!FNY5U|UQ5jdZ2|J`+QyIk6!ej9UTUPmA$e36j zPUj-6^^eG|L5#U5VlAUL&1Wmrk1-Nt&?oh;NeVnSDK;Hx8!%FBfDRozrO*+?&8#a+ zni)$V^A4<3`_HMR4KpUX+374$b);M-$Um&KY&|j3wHj{#`A|@`T&32l7JjDiSrY4^ zc)~d<>*<@}3E0DVMP$=;859Be7?iJxGpX!LTwk{>eOwXf`cW~R=EFAmumnqsiO(gQ zCMlAxA)R2*P$a2iMv?~kHO_f16;6oJ9xg=8rl|MGW^hCx&$Wq**$o*!7@fF8M}q?0 z2^LGYkua1meDs@O&~iPTiOZWWv`tq@R3zG_qfMbM)GP}3eNgCqgoK&Hgfq0VIJhzW zg0%P7WETvvoYa@H4~qhs4n+xn;-5`5JQiIIN0!wVzM%BHM1G5oT|+eZW7`c%S3ry2v87^8qxUEh zRtxrmpYdFi#t^`K45!PMtEj|uv(PV&Cx8WLxqfOZV^@49Qd zTYO4Io?CeU9GFa5jabCy0iA@SA*PDK4YL4>AwiN!LaC4g)**eKO)Nl zbFl>B>;R|vsLzAwFODe2oXQu{Zi%urvPlQm-CfJMgmj5bt~YVJA;TmCG_p+nPK%^| zAXc_?!c(!6j-n~obsjUTq(B^41rk`|5m8$!ZMz&qu|_({WS7OHeAJVoE!1gr08HpC z0zKLR?gERA;@S;%DzlrqLAB78PeyO7esSNI!oRk|eqreRp%3ep?>8q&+DpO*N{pQ) z=)4*%O-Q0G?JN=uON6e;IoKFYJw;E!ZDn|lraXbr01G~@K+2gaX&7P#KeF|~w1mdO z`UH(cMX7z#l;;)F>sIaCE!uAr=vVGm{r6mEAa?-QF z0-b2)Kqo~=>~~ud%Z;8UzMf7J5C}TV{QbQH)PuN(YoL+xYFuDAF1N z;ikOHGN-M9w~r2%B@xAGZzd3>?RS_&BqPMiNoVRM_=rv|X_8QBKY|OXq0UONcWh6k zJkEyaJZlLlko{X*)WC>aX;rQUaoR0#xLA%X8DDaDy01iC^9dVo&c$02+KS587h13- z^wTr4N6h5OFX{#${d#x_k(i~()DYqH2V~pg_+)8fd8sK}M#ag1XTqI(i&dI_^u_!H zB-f#?=toyLepDIO<=#KKpFBsV>AZ82rit=NCqGE)>V9a97#EYeFIy=^bK2Ek2$@Ma zb71Lm5u3L3K|}pHN_0j+)Szbuh0FpZEH-W$6%jAS1dw9cW(jMLBuZkMDR!W;>d(+n zWyBEaw$q{x#^#1rXTqA8a!F|H3B;!7C#-{eA2g@&2y0u1Qk?@%9ht^uy3%6*c~9l7q7!_0i(#05wUbY z2cfMKHijB^Jfi?Dd|4kx9dethE~C<`IqymxG26ubL~+8xQ;U{4JXMncS(hW$pwX!V zmL6M}#&%b(yE}RW3N?8*L~%U($nE&EVT3Gs3EKo641o!&u@u(&NIo-w>{G~5&UQ_K z_X3RGrm@4?=RGy$?2~N(-3f7uF?7R+l@9Qu&$rS$)4Fms>gOi&T`aE7KqbgtOS>mCl+dsSL&F%@&JPRl3`-VnkH+d#lvL@TlrO9 z#FyxLS(cF7X*tN;SCYW9Ia8X56uF7xP%ERz`;?OEDFedvtR~DdBrmpISO5`!tGN>K zidj8+ljpRgY-s=sxkPc#X)KLKF~nSsR%|p!StfRUtZa_TkZ4W!ltiRk`HqGx6Oo6C z2{yen!)l>&?BI!Gnd1y?(Lg|lh#e&P6WgPp&RD+QGSrLqF}Clfkdq}#yQE;7sv6ra zj;*Sr*2Ep>C>%uUlss)kH`t28kN!F%ZeDlIz#rdyo>pH-4wNNK+mF(*j*?S5ei=YJ9JP`av=WX4&Z@o4hzS9R?Z*ue36( z=q;4x0A=djLB+u@Jf$T~aG5?O+?AGk@}MonXmx~xk(uleuU!%Z#vn+il&?QVF*-%c zo~eZ3;b{Wq5&a3T6gBWwCLWFx@njlWj*HWS8uTnG&BUS%V031MGLRNIIFaX^NwEOv zM1u6BDCadxTUgTv$pMTSH=S-IzQoSJ$)doS3aLR!mlY8otBRMFuway25Njkdpuqt$ zm^-1~_MVv{(Stt#sWLCkxts`>+Xs#$QHB66ETX$jM{IwNZApxfo`WpK4egF;T>ZQ+ z_!?%?WW*#%@#ICRwNOY0VXLVrcZuCjIV)Q};%!M|^|*j*ns#?X)-ov8oUWMqZ@4Ma zfo?Wo=!ebBddmxH+Ac6h8tb9p+=ZbQ=mAeE85uq6a~v(5w*RqH>A?IOi-<^lIQ+>16f-z*(UbixgAp6K-qfOkCt9`0$_4wN&YjvUETTJecF@SCqD#6S$ct&~!Jo16C-2C+*D=GhkZOj#vtk z!KK~;Q)$|<^m~(!?HF@uB7b~Lpx^%bs~`S5q&}pyDV=Bat5g2&pI3s-QLTx`w#h`71C?$Rvm9fA#*tkt xR$+gk5G(<)JxginAF42~0_ufhi1DBrR(cp7Ii_LRsqxaDCBZ6F@1OwL^}k7}0O9}u literal 0 HcmV?d00001 From 2dae055646e4ff308e0b070cc1bb1df640341a36 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Wed, 25 Sep 2024 15:37:27 +0800 Subject: [PATCH 9/9] fix: update omc config sql --- database/common/ne_config.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/common/ne_config.sql b/database/common/ne_config.sql index 45f8c522..20a5febb 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\":\"\"}]', 4, '', 1725505025660); +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); -- 更新 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);