mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
1259 lines
45 KiB
Markdown
1259 lines
45 KiB
Markdown
# UBUS Methods
|
|
|
|
`bbfdmd` needs to be started on startup after `ubusd`, as it exposes the data-model objects over `ubus`.
|
|
|
|
```console
|
|
root@iopsys:~# ubus list |grep bbfdm
|
|
bbfdm
|
|
```
|
|
|
|
`usp` namespace is to provide the output as required by `End User` or in pretty format, which can be used easliy by other front-end applications(like: `obuspa`, `icwmp`).
|
|
|
|
|
|
`bbfdmd` namespace provides many methods with functionalities:
|
|
|
|
```console
|
|
root@iopsys:~# ubus -v list bbfdm
|
|
'bbfdm' @17924c56
|
|
"get":{"path":"String","paths":"Array","maxdepth":"Integer","optional":"Table"}
|
|
"schema":{"path":"String","paths":"Array","first_level":"Boolean","commands":"Boolean","events":"Boolean","params":"Boolean","optional":"Table"}
|
|
"instances":{"path":"String","paths":"Array","first_level":"Boolean","optional":"Table"}
|
|
"set":{"path":"String","value":"String","obj_path":"Table","optional":"Table"}
|
|
"operate":{"command":"String","command_key":"String","input":"Table","optional":"Table"}
|
|
"add":{"path":"String","obj_path":"Table","optional":"Table"}
|
|
"del":{"path":"String","paths":"Array","optional":"Table"}
|
|
"transaction":{"cmd":"String","timeout":"Integer","restart_services":"Boolean","optional":"Table"}
|
|
"notify_event":{"name":"String","input":"Table"}
|
|
root@iopsys:~#
|
|
```
|
|
|
|
> Note1: `optional` table are present in all methods and it supports below options:
|
|
|
|
```console
|
|
"optional":{"proto":"String", "instance_mode":"Integer", "transaction_id":"Integer", "format":"String"}
|
|
```
|
|
|
|
- `proto` in each method specify the data-model prototype('cwmp', 'usp') to use, if not provided default data-model will be used.
|
|
|
|
- `instance_mode` could be 0 or 1, for instance number, instance alias respectively.
|
|
|
|
- `transaction_id` to define the transaction id number.
|
|
|
|
- `format` could be 'raw' or 'pretty', to specify the format to use as output, if not provided 'pretty' format will be used.
|
|
|
|
> Note2: `first_level` true means only get next level objects and false means get all objects recursively
|
|
|
|
> Note3: `maxdepth` is measured on max number of .(Dot) present in object name
|
|
|
|
The objects registered with the above namespace can be called with appropriate parameters to perform a `Get/Set/Operate/Add Object/Delete Object` operation as below.
|
|
|
|
## Overview
|
|
|
|
`bbfdmd` provides below functionality in pretty or raw formats using supported commands:
|
|
|
|
- Get single value
|
|
- Get multiple values
|
|
- Set single value
|
|
- Set multiple values
|
|
- Operate
|
|
- Add object
|
|
- Add object and setting its parameters
|
|
- Delete single object
|
|
- Delete multiple objects
|
|
- Object names
|
|
- Instances
|
|
- schema
|
|
- Transaction start
|
|
- Transaction status
|
|
- Transaction commit
|
|
- Transaction abort
|
|
- Send notification for an event
|
|
|
|
|
|
### Get single value
|
|
API to query the value of a specific object.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.IP.Diagnostics.", "optional": {"proto":"usp"}}'
|
|
{
|
|
"Diagnostics": {
|
|
"IPv4PingSupported": true,
|
|
"IPv6PingSupported": true,
|
|
"IPv4TraceRouteSupported": true,
|
|
"IPv6TraceRouteSupported": true,
|
|
"IPv4DownloadDiagnosticsSupported": true,
|
|
"IPv6DownloadDiagnosticsSupported": true,
|
|
"IPv4UploadDiagnosticsSupported": true,
|
|
"IPv6UploadDiagnosticsSupported": true,
|
|
"IPv4UDPEchoDiagnosticsSupported": true,
|
|
"IPv6UDPEchoDiagnosticsSupported": true,
|
|
"IPv4ServerSelectionDiagnosticsSupported": true,
|
|
"IPv6ServerSelectionDiagnosticsSupported": true,
|
|
"IPLayerCapacitySupported": true,
|
|
"IPLayerMaxConnections": 1,
|
|
"IPLayerMaxIncrementalResult": 3600,
|
|
"IPLayerCapSupportedSoftwareVersion": "7.5.1",
|
|
"IPLayerCapSupportedControlProtocolVersion": 9,
|
|
"IPLayerCapSupportedMetrics": "IPLR,Sampled_RTT,IPDV,IPRR,RIPR",
|
|
"UDPEchoConfig": {
|
|
"Enable": false,
|
|
"Interface": "",
|
|
"SourceIPAddress": "",
|
|
"UDPPort": 0,
|
|
"EchoPlusEnabled": false,
|
|
"EchoPlusSupported": true,
|
|
"PacketsReceived": 0,
|
|
"PacketsResponded": 0,
|
|
"BytesReceived": 0,
|
|
"BytesResponded": 0,
|
|
"TimeFirstPacketReceived": "0001-01-01T00:00:00.000000Z",
|
|
"TimeLastPacketReceived": "0001-01-01T00:00:00.000000Z"
|
|
}
|
|
}
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.IP.Diagnostics.", "optional": {"proto":"cwmp"}}'
|
|
{
|
|
"Diagnostics": {
|
|
"IPv4PingSupported": true,
|
|
"IPv6PingSupported": true,
|
|
"IPv4TraceRouteSupported": true,
|
|
"IPv6TraceRouteSupported": true,
|
|
"IPv4DownloadDiagnosticsSupported": true,
|
|
"IPv6DownloadDiagnosticsSupported": true,
|
|
"IPv4UploadDiagnosticsSupported": true,
|
|
"IPv6UploadDiagnosticsSupported": true,
|
|
"IPv4UDPEchoDiagnosticsSupported": true,
|
|
"IPv6UDPEchoDiagnosticsSupported": true,
|
|
"IPv4ServerSelectionDiagnosticsSupported": true,
|
|
"IPv6ServerSelectionDiagnosticsSupported": true,
|
|
"IPLayerCapacitySupported": true,
|
|
"IPPing": {
|
|
"DiagnosticsState": "None",
|
|
"Interface": "",
|
|
"ProtocolVersion": "Any",
|
|
"Host": "",
|
|
"NumberOfRepetitions": 3,
|
|
"Timeout": 1000,
|
|
"DataBlockSize": 64,
|
|
"DSCP": 0,
|
|
"IPAddressUsed": "",
|
|
"SuccessCount": 0,
|
|
"FailureCount": 0,
|
|
"AverageResponseTime": 0,
|
|
"MinimumResponseTime": 0,
|
|
"MaximumResponseTime": 0,
|
|
"AverageResponseTimeDetailed": 0,
|
|
"MinimumResponseTimeDetailed": 0,
|
|
"MaximumResponseTimeDetailed": 0
|
|
},
|
|
"TraceRoute": {
|
|
"DiagnosticsState": "None",
|
|
"Interface": "",
|
|
"ProtocolVersion": "Any",
|
|
"Host": "",
|
|
"NumberOfTries": 3,
|
|
"Timeout": 5000,
|
|
"DataBlockSize": 72,
|
|
"DSCP": 0,
|
|
"MaxHopCount": 30,
|
|
"ResponseTime": 0,
|
|
"IPAddressUsed": "",
|
|
"RouteHopsNumberOfEntries": 0
|
|
}
|
|
}
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.Users."}'
|
|
{
|
|
"Users": {
|
|
"UserNumberOfEntries": 3,
|
|
"GroupNumberOfEntries": 2,
|
|
"RoleNumberOfEntries": 0,
|
|
"SupportedShellNumberOfEntries": 1,
|
|
"User": [
|
|
{
|
|
"Alias": "cpe-1",
|
|
"Enable": true,
|
|
"UserID": 0,
|
|
"Username": "root",
|
|
"Password": "",
|
|
"RemoteAccessCapable": false,
|
|
"GroupParticipation": "Device.Users.Group.1",
|
|
"RoleParticipation": "",
|
|
"StaticUser": true,
|
|
"Language": "",
|
|
"Shell": "Device.Users.SupportedShell.1"
|
|
},
|
|
{
|
|
"Alias": "cpe-2",
|
|
"Enable": true,
|
|
"UserID": 1,
|
|
"Username": "daemon",
|
|
"Password": "",
|
|
"RemoteAccessCapable": false,
|
|
"GroupParticipation": "Device.Users.Group.2",
|
|
"RoleParticipation": "",
|
|
"StaticUser": true,
|
|
"Language": "",
|
|
"Shell": ""
|
|
},
|
|
{
|
|
"Alias": "cpe-3",
|
|
"Enable": true,
|
|
"UserID": 55,
|
|
"Username": "ftp",
|
|
"Password": "",
|
|
"RemoteAccessCapable": false,
|
|
"GroupParticipation": "Device.Users.Group.8",
|
|
"RoleParticipation": "",
|
|
"StaticUser": true,
|
|
"Language": "",
|
|
"Shell": ""
|
|
}
|
|
],
|
|
"Group": [
|
|
{
|
|
"Alias": "cpe-1",
|
|
"Enable": true,
|
|
"GroupID": 0,
|
|
"Groupname": "root",
|
|
"RoleParticipation": "",
|
|
"StaticGroup": true
|
|
},
|
|
{
|
|
"Alias": "cpe-2",
|
|
"Enable": true,
|
|
"GroupID": 1,
|
|
"Groupname": "daemon",
|
|
"RoleParticipation": "",
|
|
"StaticGroup": true
|
|
}
|
|
],
|
|
"SupportedShell": [
|
|
{
|
|
"Alias": "cpe-1",
|
|
"Enable": true,
|
|
"Name": "ash"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.Users.", "optional": {"format":"raw"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Users.UserNumberOfEntries",
|
|
"data": "3",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.GroupNumberOfEntries",
|
|
"data": "2",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.RoleNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.SupportedShellNumberOfEntries",
|
|
"data": "1",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Alias",
|
|
"data": "cpe-1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.UserID",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Username",
|
|
"data": "root",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Password",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.RemoteAccessCapable",
|
|
"data": "0",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.GroupParticipation",
|
|
"data": "Device.Users.Group.1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.RoleParticipation",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.StaticUser",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Language",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Shell",
|
|
"data": "Device.Users.SupportedShell.1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Alias",
|
|
"data": "cpe-2",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.UserID",
|
|
"data": "1",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Username",
|
|
"data": "daemon",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Password",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.RemoteAccessCapable",
|
|
"data": "0",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.GroupParticipation",
|
|
"data": "Device.Users.Group.2",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.RoleParticipation",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.StaticUser",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Language",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.2.Shell",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Alias",
|
|
"data": "cpe-3",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.UserID",
|
|
"data": "55",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Username",
|
|
"data": "ftp",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Password",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.RemoteAccessCapable",
|
|
"data": "0",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.GroupParticipation",
|
|
"data": "Device.Users.Group.8",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.RoleParticipation",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.StaticUser",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Language",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.3.Shell",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.Alias",
|
|
"data": "cpe-1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.GroupID",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.Groupname",
|
|
"data": "root",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.RoleParticipation",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.1.StaticGroup",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.Alias",
|
|
"data": "cpe-2",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.GroupID",
|
|
"data": "1",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.Groupname",
|
|
"data": "daemon",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.RoleParticipation",
|
|
"data": "",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.2.StaticGroup",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.Group.18.StaticGroup",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.SupportedShell.1.Alias",
|
|
"data": "cpe-1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.SupportedShell.1.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.SupportedShell.1.Name",
|
|
"data": "ash",
|
|
"type": "xsd:string"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.WiFi.SSID.*.SSID"}'
|
|
{
|
|
"SSID": [
|
|
{
|
|
"SSID": "iopsysWrt-44D43771B120"
|
|
},
|
|
{
|
|
"SSID": "MAP-44D43771B120-BH-5GHz"
|
|
},
|
|
{
|
|
"SSID": "iopsysWrt-44D43771B120"
|
|
},
|
|
{
|
|
"SSID": "MAP-44D43771B120-BH-2.4GHz"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.WiFi.SSID.*.SSID", "optional":{"format":"raw"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.SSID.1.SSID",
|
|
"data": "iopsysWrt-44D43771B120",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSID.2.SSID",
|
|
"data": "MAP-44D43771B120-BH-5GHz",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSID.3.SSID",
|
|
"data": "iopsysWrt-44D43771B120",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSID.4.SSID",
|
|
"data": "MAP-44D43771B120-BH-2.4GHz",
|
|
"type": "xsd:string"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.WiFi.SSID.[BSSID==\"be:d4:37:71:b1:28\"].SSID"}'
|
|
{
|
|
"SSID": [
|
|
{
|
|
"SSID": "MAP-44D43771B120-BH-5GHz"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.IP.Interface.[Status==\"Up\"].IPv4Address.[AddressingType==\"DHCP\"].IPAddress"}'
|
|
{
|
|
"Interface": [
|
|
{
|
|
"IPv4Address": [
|
|
{
|
|
"IPAddress": "10.100.1.201"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.IP.Interface.[Status==\"Up\"].IPv4Address.[AddressingType==\"DHCP\"&&Status==\"Up\"]."}'
|
|
{
|
|
"Interface": [
|
|
{
|
|
"IPv4Address": [
|
|
{
|
|
"Enable": true,
|
|
"Status": "Enabled",
|
|
"Alias": "cpe-1",
|
|
"IPAddress": "10.100.1.201",
|
|
"SubnetMask": "255.255.255.0",
|
|
"AddressingType": "DHCP"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.IP.Interface.[Type==\"Normal\"&&Stats.PacketsSent<=500].IPv4Address.[AddressingType==\"DHCP\"].IPAddress"}'
|
|
{
|
|
"Interface": [
|
|
{
|
|
"IPv4Address": [
|
|
{
|
|
"IPAddress": "10.100.1.201"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm get '{"path": "Device.Firewall.Chain.1.Rule.[Description==\"Allow-Ping\"]."}'
|
|
{
|
|
"Rule": [
|
|
{
|
|
"Enable": true,
|
|
"Status": "Enabled",
|
|
"Order": 3,
|
|
"Alias": "cpe-3",
|
|
"Description": "Allow-Ping",
|
|
"Target": "Accept",
|
|
"Log": false,
|
|
"CreationDate": "0001-01-01T00:00:00Z",
|
|
"ExpiryDate": "9999-12-31T23:59:59Z",
|
|
"SourceInterface": "Device.IP.Interface.2",
|
|
"SourceAllInterfaces": false,
|
|
"DestInterface": "",
|
|
"DestAllInterfaces": false,
|
|
"IPVersion": 4,
|
|
"DestIP": "",
|
|
"DestMask": "",
|
|
"SourceIP": "",
|
|
"SourceMask": "",
|
|
"Protocol": 1,
|
|
"DestPort": -1,
|
|
"DestPortRangeMax": -1,
|
|
"SourcePort": -1,
|
|
"SourcePortRangeMax": -1
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#get)
|
|
|
|
### Get multiple values
|
|
API to get values of multiple objects at once, object name must be provided in `paths` parameter array as below.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm get '{"paths":["Device.Users.User.1.Username","Device.DeviceInfo.SerialNumber"], "optional": {"format":"raw"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Users.User.1.Username",
|
|
"data": "root",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.DeviceInfo.SerialNumber",
|
|
"data": "Y0721140086",
|
|
"type": "xsd:string"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Set single value
|
|
API to set value to specific object, object name must be provided in `path` parameter and value to be set in `value` option.
|
|
|
|
> Note: bbfdmd decides how to handle set method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually setting the value and after set operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm set '{"path":"Device.WiFi.SSID.1.SSID", "value":"test-2g"}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.SSID.1.SSID",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm set '{"path":"Device.WiFi.SSID.1.SSID", "value":"test-2g", "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.SSID.1.SSID",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm get '{"path":"Device.WiFi.SSID.1.SSID"}'
|
|
{
|
|
"SSID": "test-2g"
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#set)
|
|
|
|
### Set multiple values
|
|
API to set value to specific object, object name must be provided in `path` object and parameter and its value to be set in `obj_path` table.
|
|
|
|
> Note: bbfdmd decides how to handle set method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually setting the value and after set operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm set '{"path":"Device.WiFi.SSID.1.", "obj_path":{"Enable":"0", "SSID":"test-2g"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.SSID.1.Enable",
|
|
"data": "1"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSID.1.SSID",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm set '{"path":"Device.WiFi.SSID.1.", "obj_path":{"Enable":"0", "SSID":"test-2g"}, "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.SSID.1.Enable",
|
|
"data": "1"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSID.1.SSID",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm get '{"paths":["Device.WiFi.SSID.1.Enable", "Device.WiFi.SSID.1.SSID"]}'
|
|
{
|
|
"Enable": false,
|
|
"SSID": "test-2g"
|
|
}
|
|
root@iopsys:~# ubus call bbfdm set '{"path": "Device.Firewall.Chain.1.Rule.[Description==\"Allow-Ping\"].", "obj_path": {"Target": "Accept"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.3.Target",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#set)
|
|
|
|
### Operate
|
|
API to run operate/diagnostics commands as defined in TR-369
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm operate '{"command":"Device.IP.Diagnostics.IPPing()", "command_key":"ipping_test", "input":{"Host":"iopsys.eu"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.IP.Diagnostics.IPPing()",
|
|
"data": "ipping_test",
|
|
"output": [
|
|
{
|
|
"Status": "Complete",
|
|
"IPAddressUsed": "10.100.1.122",
|
|
"SuccessCount": 3,
|
|
"FailureCount": 0,
|
|
"AverageResponseTime": 31,
|
|
"MinimumResponseTime": 30,
|
|
"MaximumResponseTime": 31,
|
|
"AverageResponseTimeDetailed": 31007,
|
|
"MinimumResponseTimeDetailed": 30957,
|
|
"MaximumResponseTimeDetailed": 31059
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm operate '{"command":"Device.IP.Diagnostics.IPPing()", "command_key":"ipping_test", "input":{"Host":"iopsys.eu"}, "optional":{"format":"raw"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.IP.Diagnostics.IPPing()",
|
|
"data": "ipping_test",
|
|
"output": [
|
|
{
|
|
"path": "Status",
|
|
"data": "Complete",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "IPAddressUsed",
|
|
"data": "10.100.1.122",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "SuccessCount",
|
|
"data": "3",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "FailureCount",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm operate '{"command":"Device.IP.Interface.2.Reset()"}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.IP.Interface.2.Reset()",
|
|
"data": "",
|
|
"output": [
|
|
{
|
|
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm operate '{"command":"Device.IP.Interface.2.Reset()", "optional":{"format":"raw"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.IP.Interface.2.Reset()",
|
|
"data": "",
|
|
"output": [
|
|
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#operate)
|
|
|
|
|
|
### Add object
|
|
API to add new objects in multi-instance object
|
|
|
|
> Note: bbfdmd decides how to handle `add_object` method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually adding the object and after set operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm add '{"path":"Device.Users.User."}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Users.User.",
|
|
"data": "14"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm add '{"path":"Device.Users.User.", "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Users.User.",
|
|
"data": "14"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#add)
|
|
|
|
### Add object and setting its parameters
|
|
API to add new objects in multi-instance object
|
|
|
|
> Note: bbfdmd decides how to handle `add_object` method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually adding the object and after add operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm add '{"path":"Device.Firewall.Chain.1.Rule.", "obj_path":{"Enable":"1", "Description":"rule for test"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.",
|
|
"data": "12"
|
|
}
|
|
],
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.Enable",
|
|
"data": "1"
|
|
},
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.Description",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm add '{"path":"Device.Firewall.Chain.1.Rule.", "obj_path":{"Enable":"1", "Description":"rule for test"}, "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.",
|
|
"data": "12"
|
|
}
|
|
],
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.Enable",
|
|
"data": "1"
|
|
},
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.Description",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm get '{"paths":["Device.Firewall.Chain.1.Rule.12.Enable", "Device.Firewall.Chain.1.Rule.12.Description"]}'
|
|
{
|
|
"Enable": true,
|
|
"Description": "rule for test"
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#add)
|
|
|
|
### Delete single object
|
|
API to delete an existing object from multi-instance object
|
|
|
|
> Note: bbfdmd decides how to handle `add_object` method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually deleting the object and after del operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm del '{"path":"Device.Firewall.Chain.1.Rule.12."}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm del '{"path":"Device.Firewall.Chain.1.Rule.12.", "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#del)
|
|
|
|
### Delete multiple objects
|
|
API to delete an existing object from multi-instance object
|
|
|
|
> Note: bbfdmd decides how to handle `add_object` method based on the `transaction_id` value. If the `transaction_id` value is different to `0`, it checks if the transaction is valid, then proceeds set operation. Otherwise, it creates a internal transaction before actually deleting the object and after del operation it automatically commits the transaction. Please refer to `transaction` API for more details.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm del '{"paths":["Device.Firewall.Chain.1.Rule.10.","Device.Firewall.Chain.1.Rule.11."]}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.10.",
|
|
"data": "1"
|
|
},
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.11.",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~# ubus call bbfdm del '{"paths":["Device.Firewall.Chain.1.Rule.10.","Device.Firewall.Chain.1.Rule.11."], "optional":{"transaction_id":12345}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Firewall.Chain.1.Rule.12.",
|
|
"data": "1"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#del)
|
|
|
|
|
|
### Object names
|
|
API to get the available list of object names which is available only with `cwmp` proto.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm schema '{"path":"Device.DeviceInfo.SerialNumber", "optional":{"proto":"cwmp"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.DeviceInfo.SerialNumber",
|
|
"data": "0",
|
|
"type": "xsd:string"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm schema '{"path":"Device.Users.", "optional":{"proto":"cwmp"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.Users.",
|
|
"data": "0",
|
|
"type": "xsd:object"
|
|
},
|
|
{
|
|
"path": "Device.Users.UserNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.GroupNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.RoleNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.SupportedShellNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.",
|
|
"data": "1",
|
|
"type": "xsd:object"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.",
|
|
"data": "1",
|
|
"type": "xsd:object"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Alias",
|
|
"data": "1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Enable",
|
|
"data": "1",
|
|
"type": "xsd:boolean"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.UserID",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Username",
|
|
"data": "1",
|
|
"type": "xsd:string"
|
|
},
|
|
{
|
|
"path": "Device.Users.User.1.Password",
|
|
"data": "1",
|
|
"type": "xsd:string"
|
|
}
|
|
]
|
|
}
|
|
root@iopsys:~#
|
|
```
|
|
|
|
### Instances
|
|
API to get the available instances of an multi-instance object. USP Instances method returns the registered instances.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm instances '{"path":"Device.IP.Interface."}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.IP.Interface.1"
|
|
},
|
|
{
|
|
"path": "Device.IP.Interface.1.IPv4Address.1"
|
|
},
|
|
{
|
|
"path": "Device.IP.Interface.1.IPv6Address.1"
|
|
},
|
|
{
|
|
"path": "Device.IP.Interface.1.IPv6Address.2"
|
|
},
|
|
{
|
|
"path": "Device.IP.Interface.1.IPv6Prefix.1"
|
|
},
|
|
{
|
|
"path": "Device.IP.Interface.2"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
- For more info on the `bbfdm` ubus API see [link](../api/ubus/bbfdm.md#instances)
|
|
|
|
### schema
|
|
API to dump all registered schema paths
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm schema '{"path":"Device.WiFi.", "optional":{"proto":"usp"}}'
|
|
{
|
|
"results": [
|
|
{
|
|
"path": "Device.WiFi.RadioNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.SSIDNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.AccessPointNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.EndPointNumberOfEntries",
|
|
"data": "0",
|
|
"type": "xsd:unsignedInt"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.Reset()",
|
|
"type": "xsd:command",
|
|
"data": "sync"
|
|
},
|
|
{
|
|
"path": "Device.WiFi.NeighboringWiFiDiagnostic()",
|
|
"type": "xsd:command",
|
|
"data": "async",
|
|
"output": [
|
|
{
|
|
"path": "Status"
|
|
},
|
|
{
|
|
"path": "Result.{i}.Radio"
|
|
},
|
|
{
|
|
"path": "Result.{i}.SSID"
|
|
},
|
|
{
|
|
"path": "Result.{i}.BSSID"
|
|
},
|
|
{
|
|
"path": "Result.{i}.Mode"
|
|
},
|
|
{
|
|
"path": "Result.{i}.Channel"
|
|
},
|
|
{
|
|
"path": "Result.{i}.SignalStrength"
|
|
},
|
|
{
|
|
"path": "Result.{i}.SecurityModeEnabled"
|
|
},
|
|
{
|
|
"path": "Result.{i}.EncryptionMode"
|
|
},
|
|
{
|
|
"path": "Result.{i}.OperatingFrequencyBand"
|
|
},
|
|
{
|
|
"path": "Result.{i}.SupportedStandards"
|
|
},
|
|
{
|
|
"path": "Result.{i}.OperatingStandards"
|
|
},
|
|
{
|
|
"path": "Result.{i}.OperatingChannelBandwidth"
|
|
},
|
|
{
|
|
"path": "Result.{i}.BeaconPeriod"
|
|
},
|
|
{
|
|
"path": "Result.{i}.Noise"
|
|
},
|
|
{
|
|
"path": "Result.{i}.BasicDataTransferRates"
|
|
},
|
|
{
|
|
"path": "Result.{i}.SupportedDataTransferRates"
|
|
},
|
|
{
|
|
"path": "Result.{i}.DTIMPeriod"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Transaction start
|
|
To support the `allow_partial` and `required` parameters in Add/Del/Set operation as defined in TR-369, transaction_* APIs introduced.
|
|
It basically works around data-model objects which has dependent uci config files for each CUD operation.
|
|
API to start a transaction for add/del/set operations
|
|
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm transaction '{"cmd":"start"}'
|
|
{
|
|
"status": true,
|
|
"transaction_id": 1727398631
|
|
}
|
|
```
|
|
|
|
It's sometime required to have a per transaction timeout, which can be defined along with transaction_start
|
|
```bash
|
|
root@4949e4da3d27:~# ubus call bbfdm transaction '{"cmd":"start", "timeout":30}'
|
|
{
|
|
"status": true,
|
|
"transaction_id": 2124763996
|
|
}
|
|
|
|
```
|
|
> Note: max_timeout is time in second, its an optional input argument if not provided, uci default (bbfdm.bbfdmd.transaction_timeout) is used which is defined in seconds
|
|
> If uci option bbfdm.bbfdmd.transaction_timeout not set than a default 10 second timeout is used for the transactions.
|
|
|
|
### Get status of a transaction
|
|
API to get details and check status of a transaction id
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm transaction '{"cmd":"status", "optional":{"transaction_id":439041413}}'
|
|
{
|
|
"status": "on-going",
|
|
"remaining_time": 17
|
|
}
|
|
root@iopsys:~#
|
|
root@iopsys:~# ubus call bbfdm transaction '{"cmd":"status", "optional":{"transaction_id":439041413}}'
|
|
{
|
|
"status": "not-exists"
|
|
}
|
|
root@iopsys:~#
|
|
```
|
|
|
|
### Transaction commit
|
|
API to commit an on-going transaction, on calling this api, uci changes shall be committed and required services shall be restarted.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm transaction '{"cmd":"commit", "optional":{"transaction_id":439041413}}'
|
|
{
|
|
"updated_services": [
|
|
"mapcontroller",
|
|
"wireless"
|
|
],
|
|
"status": true
|
|
}
|
|
```
|
|
|
|
### Transaction abort
|
|
API to abort an on-going transaction, on calling this api, staged changes in uci shall be reverted to earlier values.
|
|
|
|
```console
|
|
root@iopsys:~# ubus call bbfdm transaction '{"cmd":"abort", "optional":{"transaction_id":1695754826}}'
|
|
{
|
|
"updated_services": [
|
|
"mapcontroller",
|
|
"wireless"
|
|
],
|
|
"status": true
|
|
}
|
|
```
|