mirror of
https://github.com/open5gs/open5gs.git
synced 2026-04-28 03:19:31 +00:00
[HR] Added LBO Roaming Allowed in WebUI (#2194)
According to TS29.503, we can choose whether or not to allow LBO roaming on a per-session basis. To this end, we have made changes to allow us to set this via the WebUI.
This commit is contained in:
parent
37430970f7
commit
d7126f98ac
10 changed files with 106 additions and 5 deletions
|
|
@ -74,9 +74,22 @@ const Profile = new Schema({
|
|||
uplink: { value: Number, unit: Number }
|
||||
},
|
||||
},
|
||||
}]
|
||||
}],
|
||||
|
||||
lbo_roaming_allowed: Boolean
|
||||
|
||||
}]
|
||||
}]
|
||||
}],
|
||||
|
||||
subscriber_status: {
|
||||
$type: Number,
|
||||
default: 0 // Service Granted
|
||||
},
|
||||
operator_determined_barring: {
|
||||
$type: Number,
|
||||
default: 0 // No barring
|
||||
}
|
||||
|
||||
}, { typeKey: '$type' });
|
||||
|
||||
module.exports = mongoose.model('Profile', Profile);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,10 @@ const Subscriber = new Schema({
|
|||
uplink: { value: Number, unit: Number }
|
||||
},
|
||||
},
|
||||
}]
|
||||
}],
|
||||
|
||||
lbo_roaming_allowed: Boolean
|
||||
|
||||
}]
|
||||
}],
|
||||
|
||||
|
|
|
|||
|
|
@ -114,6 +114,30 @@ const schema = {
|
|||
}
|
||||
}
|
||||
},
|
||||
"subscriber_status": {
|
||||
"type": "number",
|
||||
"title": "Subscriber Status (TS 29.272 7.3.29)",
|
||||
"enum": [ 0, 1 ],
|
||||
"enumNames": ["SERVICE_GRANTED", "OPERATOR_DETERMINED_BARRING"],
|
||||
"default": 0,
|
||||
},
|
||||
"operator_determined_barring": {
|
||||
"type": "number",
|
||||
"title": "Operator Determined Barring (TS 29.272 7.3.30)",
|
||||
"enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ],
|
||||
"enumNames": [
|
||||
"(0) All Packet Oriented Services Barred",
|
||||
"(1) Roamer Access HPLMN-AP Barred",
|
||||
"(2) Roamer Access to VPLMN-AP Barred",
|
||||
"(3) Barring of all outgoing calls",
|
||||
"(4) Barring of all outgoing international calls",
|
||||
"(5) Barring of all outgoing international calls except those directed to the home PLMN country",
|
||||
"(6) Barring of all outgoing inter-zonal calls",
|
||||
"(7) Barring of all outgoing inter-zonal calls except those directed to the home PLMN country",
|
||||
"(8) Barring of all outgoing international calls except those directed to the home PLMN country and Barring of all outgoing inter-zonal calls"
|
||||
],
|
||||
"default": 0,
|
||||
},
|
||||
"slice": {
|
||||
"type": "array",
|
||||
"title": "Slice Configurations",
|
||||
|
|
@ -170,6 +194,10 @@ const schema = {
|
|||
"enumNames": ["IPv4", "IPv6", "IPv4v6"],
|
||||
"default": 3,
|
||||
},
|
||||
"lbo_roaming_allowed": {
|
||||
"type": "boolean",
|
||||
"title": "LBO Roaming Allowed",
|
||||
},
|
||||
"qos": {
|
||||
"type": "object",
|
||||
"title": "",
|
||||
|
|
@ -520,6 +548,9 @@ const uiSchema = {
|
|||
"type": {
|
||||
classNames: "col-xs-4",
|
||||
},
|
||||
"lbo_roaming_allowed": {
|
||||
classNames: "col-xs-12",
|
||||
},
|
||||
"qos": {
|
||||
classNames: "col-xs-12",
|
||||
"index": {
|
||||
|
|
|
|||
|
|
@ -172,6 +172,8 @@ const View = ({ visible, disableOnClickOutside, profile, onEdit, onDelete, onHid
|
|||
const imeisv = (profile || {}).imeisv;
|
||||
const security = ((profile || {}).security || {});
|
||||
const ambr = ((profile || {}).ambr || {});
|
||||
const subscriber_status = (profile || {}).subscriber_status;
|
||||
const operator_determined_barring = (profile || {}).operator_determined_barring;
|
||||
const slice_list = ((profile || {}).slice || []);
|
||||
|
||||
return (
|
||||
|
|
@ -257,6 +259,23 @@ const View = ({ visible, disableOnClickOutside, profile, onEdit, onDelete, onHid
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="sectioncolumn">
|
||||
<div className="body">
|
||||
<div className="left">
|
||||
<SecurityIcon/>
|
||||
</div>
|
||||
<div className="right">
|
||||
<div className="data">
|
||||
{subscriber_status == 0 ? ( "SERVICE_GRANTED (0)" ) : ( "OPERATOR_DETERMINED_BARRING (1)" )}
|
||||
<span style={{color:oc.gray[5]}}><KeyboardControlIcon/>Subscriber Status (TS 29.272 7.3.29)</span>
|
||||
</div>
|
||||
<div className="data">
|
||||
{operator_determined_barring}
|
||||
<span style={{color:oc.gray[5]}}><KeyboardControlIcon/>Operator Determined Barring (TS 29.272 7.3.30)</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="sectioncolumn">
|
||||
<div className="body">
|
||||
<div className="left">
|
||||
|
|
@ -314,6 +333,7 @@ const View = ({ visible, disableOnClickOutside, profile, onEdit, onDelete, onHid
|
|||
<div className="body" style={{color:oc.gray[5]}}>
|
||||
<div className="large_data">DNN/APN</div>
|
||||
<div className="medium_data">Type</div>
|
||||
<div className="medium_data">LBO</div>
|
||||
<div className="small_data">5QI/QCI</div>
|
||||
<div className="small_data">ARP</div>
|
||||
<div className="medium_data">Capability</div>
|
||||
|
|
@ -332,6 +352,10 @@ const View = ({ visible, disableOnClickOutside, profile, onEdit, onDelete, onHid
|
|||
session.type === 3 ? "IPv4v6" :
|
||||
"Unknown"
|
||||
}</div>
|
||||
<div className="medium_data">{
|
||||
session.lbo_roaming_allowed == true ? "Allowed" :
|
||||
"Not allowed"
|
||||
}</div>
|
||||
<div className="small_data">{session.qos.index}</div>
|
||||
<div className="small_data">{session.qos.arp.priority_level}</div>
|
||||
<div className="medium_data">
|
||||
|
|
@ -411,6 +435,7 @@ const View = ({ visible, disableOnClickOutside, profile, onEdit, onDelete, onHid
|
|||
<div className="body">
|
||||
<div className="large_data"></div>
|
||||
<div className="medium_data"></div>
|
||||
<div className="medium_data"></div>
|
||||
<div className="small_data">{pcc_rule.qos.index}</div>
|
||||
<div className="small_data">{pcc_rule.qos.arp.priority_level}</div>
|
||||
<div className="medium_data">
|
||||
|
|
|
|||
|
|
@ -200,6 +200,10 @@ const schema = {
|
|||
"enumNames": ["IPv4", "IPv6", "IPv4v6"],
|
||||
"default": 3,
|
||||
},
|
||||
"lbo_roaming_allowed": {
|
||||
"type": "boolean",
|
||||
"title": "LBO Roaming Allowed",
|
||||
},
|
||||
"qos": {
|
||||
"type": "object",
|
||||
"title": "",
|
||||
|
|
@ -556,6 +560,9 @@ const uiSchema = {
|
|||
"type": {
|
||||
classNames: "col-xs-4",
|
||||
},
|
||||
"lbo_roaming_allowed": {
|
||||
classNames: "col-xs-12",
|
||||
},
|
||||
"qos": {
|
||||
classNames: "col-xs-12",
|
||||
"index": {
|
||||
|
|
|
|||
|
|
@ -359,6 +359,7 @@ const View = ({ visible, disableOnClickOutside, subscriber, onEdit, onDelete, on
|
|||
<div className="body" style={{color:oc.gray[5]}}>
|
||||
<div className="large_data">DNN/APN</div>
|
||||
<div className="medium_data">Type</div>
|
||||
<div className="medium_data">LBO</div>
|
||||
<div className="small_data">5QI/QCI</div>
|
||||
<div className="small_data">ARP</div>
|
||||
<div className="medium_data">Capability</div>
|
||||
|
|
@ -377,6 +378,10 @@ const View = ({ visible, disableOnClickOutside, subscriber, onEdit, onDelete, on
|
|||
session.type === 3 ? "IPv4v6" :
|
||||
"Unknown"
|
||||
}</div>
|
||||
<div className="medium_data">{
|
||||
session.lbo_roaming_allowed == true ? "Allowed" :
|
||||
"Not allowed"
|
||||
}</div>
|
||||
<div className="small_data">{session.qos.index}</div>
|
||||
<div className="small_data">{session.qos.arp.priority_level}</div>
|
||||
<div className="medium_data">
|
||||
|
|
@ -456,6 +461,7 @@ const View = ({ visible, disableOnClickOutside, subscriber, onEdit, onDelete, on
|
|||
<div className="body">
|
||||
<div className="large_data"></div>
|
||||
<div className="medium_data"></div>
|
||||
<div className="medium_data"></div>
|
||||
<div className="small_data">{pcc_rule.qos.index}</div>
|
||||
<div className="small_data">{pcc_rule.qos.arp.priority_level}</div>
|
||||
<div className="medium_data">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue