From ab883852f95c42e3aabc556de331770add75497d Mon Sep 17 00:00:00 2001 From: Vivek Kumar Dutta Date: Thu, 29 Jul 2021 13:22:29 +0000 Subject: [PATCH] Updated Readme --- README.md | 138 ++++++----- config.c | 24 +- docs/api/uci.cwmp.md | 412 ++++++++++++++++++++++++++++++- inc/common.h | 1 - inc/cwmp_uci.h | 1 - log.c | 2 + schemas/uci/cwmp.json | 549 ++++++++++++++++++++---------------------- 7 files changed, 768 insertions(+), 359 deletions(-) diff --git a/README.md b/README.md index b346ee1..6bcf834 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ It is written in C programming language and depends on a number of libraries of ## Good to Know The icwmp client is : -* tested with several ACS such as **Axiros**, **AVSytem**, **GenieACS**, **OpenACS**, etc... -* supports all required **TR069 RPCs**. -* supports all DataModel of TR family such as **TR-181**, **TR-104**, **TR-143**, **TR-157**, etc... -* supports all types of connection requests such as **HTTP**, **XMPP**, **STUN**. -* supports integrated file transfer such as **HTTP**, **HTTPS**, **FTP**. +* Tested with several ACS such as **Axiros**, **AVSytem**, **GenieACS**, **OpenACS**, etc... +* Supports all required **TR069 RPCs**. +* Supports all DataModel of TR family such as **TR-181**, **TR-104**, **TR-143**, **TR-157**, etc... +* Supports all types of connection requests such as **HTTP**, **XMPP**, **STUN**. +* Supports integrated file transfer such as **HTTP**, **HTTPS**, **FTP**. ## Configuration File @@ -37,7 +37,7 @@ config lwn 'lwn' option port '' ``` -For more info on the `cwmp` UCI configuration see [link](./docs/api/uci.cwmp.md) or [raw schema](./schemas/uci/cwmp.json) +> Complete uci for `cwmp` configuration available in [link](./docs/api/uci.cwmp.md) or [raw schema](./schemas/uci/cwmp.json) ## RPCs Method supported @@ -85,7 +85,7 @@ the folowing tables provides a summary of all methods, and indicates the conditi ## Concepts and Workflow -As indicated in the TR069 standard, the icwmpd starts automatically when the system is started. Then it connects to the ACS, that can be set manually by the admin or found by dhcp discovery. And later it could start other sessions due to event causes. +As indicated in the TR069 standard, the icwmpd starts automatically when the system is started. Then it reads the initial configuration from uci and if configured connects to the ACS. ACS configuration in icwmp can be done manually by the admin using uci or by operator using dhcp option 43, and later it could start other sessions due to event causes. Session workflow could be checked with sniffer packets tool such as wireshark or tcpdump. In addition icwmpd has a log file '/var/log/icwmpd.log', that describes the workflow. E.g. below you can find an abstract of a log file content: @@ -110,19 +110,20 @@ You could set the uci config `cwmp.cpe.log_severity` option to `'DEBUG'` in orde ## icwmp uBus -icwmpd must be launched on startup after ubusd. It exposes the CWMP functionality over ubus. The icwmpd registers `tr069` namespaces with ubus, that has the shown below functionalities: +icwmpd must be launched on startup after ubusd. It exposes some cwmp client rpc along with some debug utilities over ubus. The icwmpd registers `tr069` namespaces with ubus, that has below functionalities: -For more info on the `tr069` ubus schema see [link](./docs/api/tr069.md) or [raw schema](./schemas/ubus/tr069.json) +> Note: For more info on the `tr069` ubus schema see [link](./docs/api/tr069.md) or [raw schema](./schemas/ubus/tr069.json) ### tr069 ubus examples +The output shown in below examples are just for demonstration purpose, the actual output shall vary as per the cwmp configuration and state. The schema for ubus is available at [link](./docs/api/tr069.md) or [raw schema](./schemas/ubus/tr069.json) + ```bash root@iopsys:~# ubus -v list tr069 -'tr069' @04d3de4e - "notify":{} - "command":{"command":"String"} - "status":{} - "inform":{"GetRPCMethods":"Boolean","event":"String"} -root@iopsys:~# +'tr069' @aadff65c + "command":{"command":"String"} + "status":{} + "inform":{"GetRPCMethods":"Boolean","event":"String"} +root@iopsys:~# ``` Each object registered with the `'tr069'` namespace has a specific functionality. @@ -132,26 +133,26 @@ Each object registered with the `'tr069'` namespace has a specific functionality ```bash root@iopsys:~# ubus call tr069 status { - "cwmp": { - "status": "up", - "start_time": "2019-12-24T10:21:18+01:00", - "acs_url": "http:\/\/genieacs:7547" - }, - "last_session": { - "status": "success", - "start_time": "2019-12-24T10:21:18+01:00", - "end_time": "2019-12-24T10:21:19+01:00" - }, - "next_session": { - "status": "waiting", - "start_time": "2019-12-26T12:21:18+01:00", - "end_time": "N\/A" - }, - "statistics": { - "success_sessions": 1, - "failure_sessions": 0, - "total_sessions": 1 - } + "cwmp": { + "status": "up", + "start_time": "2021-07-29T09:29:02+02:00", + "acs_url": "http://genieacs:7547" + }, + "last_session": { + "status": "success", + "start_time": "2021-07-29T09:29:59+02:00", + "end_time": "2021-07-29T09:30:00+02:00" + }, + "next_session": { + "status": "waiting", + "start_time": "2021-07-29T09:59:59+02:00", + "end_time": "N/A" + }, + "statistics": { + "success_sessions": 2, + "failure_sessions": 0, + "total_sessions": 2 + } } root@iopsys:~# ``` @@ -187,7 +188,7 @@ root@iopsys:~# ubus call tr069 command '{"command":"reload"}' "status": 1, "info": "icwmpd config reloaded" } -root@iopsys:~# +root@iopsys:~# ``` - To exit the icwmpd daemod, use the `command` ubus method with `exit` argument: @@ -197,7 +198,7 @@ root@iopsys:~# ubus call tr069 command '{"command":"exit"}' "status": 1, "info": "icwmpd daemon stopped" } -root@iopsys:~# +root@iopsys:~# ``` ## icwmpd command line @@ -206,51 +207,70 @@ icwmpd command line options are described with `--help` option as below: ```bash root@iopsys:~# icwmpd --help Usage: icwmpd [OPTIONS] - -s, --ubus_socket Ubus socket path for IPC -b, --boot-event (CWMP daemon) Start CWMP with BOOT event -g, --get-rpc-methods (CWMP daemon) Start CWMP with GetRPCMethods request to ACS - -c, --cli CWMP CLI + -c, --cli CWMP CLI -h, --help Display this help text -v, --version Display the version ``` ## icwmpd CLI -The icwmpd CLI is the -c (--cli) option of the icwmpd command line. +The icwmpd CLI is a debug utility and can be invoked using -c (--cli) command line option. Different options of this CLI are described with help command as below: ```bash root@iopsys:~# icwmpd -c help Valid commands: - help => show this help - get [path-expr] => get parameter values - get_names [path-expr] [next-level] => get parameter names - set [path-expr] [value] => set parameter value - add [object] => add object - del [object] => delete object - get_notif [path-expr] => get parameter notifications - set_notif [path-expr] [notification] => set parameter notifications - + help => show this help + get [path-expr] => get parameter values + get_names [path-expr] [next-level] => get parameter names + set [path-expr] [value] => set parameter value + add [object] => add object + del [object] => delete object + get_notif [path-expr] => get parameter notifications + set_notif [path-expr] [notification] => set parameter notifications ``` +> Note: icwmpd CLI is a debug utility and hence it is advised to use for debug and development purpose only. ## icwmpd forced inform parameters +As per the cwmp inform requirements, cwmp client has list of parameters defined internally. The list contains below parameters: -In addition to the forced inform parameters specified in datamodel stanadard, icwmp gives the possibility to add other inform parameters. -Those new inform parameters can be set in a json file as following: +| Parameter name | +| ---------------------------------------------- | +| Device.RootDataModelVersion | +| Device.DeviceInfo.HardwareVersion | +| Device.DeviceInfo.SoftwareVersion | +| Device.DeviceInfo.ProvisioningCode | +| Device.ManagementServer.ParameterKey | +| Device.ManagementServer.ConnectionRequestURL | +| Device.ManagementServer.AliasBasedAddressing | + +In addition to the above defined forced inform parameters as specified in datamodel stanadard, icwmp gives the possibility to add other datamodel parameters as forced inform parameters, by defining them in a json file. + +Additional inform parameters can be configured in a json file as below: ```bash +root@iopsys:~# cat /etc/icwmpd/forced_inform.json { "forced_inform":[ "Device.DeviceInfo.X_IOPSYS_EU_BaseMACAddress", "Device.DeviceInfo.UpTime" ] } +root@iopsys:~# +``` +And then the path of the json file can be set in the uci option: cwmp.cpe.forced_inform_json like below: +```bash +root@iopsys:~# uci set cwmp.cpe.forced_inform_json=/etc/icwmpd/forced_inform.json +root@iopsys:~# uci commit cwmp +root@iopsys:~# /etc/init.d/icwmpd restart ``` -The path of the json file is set in the uci option: cwmp.cpe.forced_inform_json - -Please be sure that this json_file shouldn't contain duplicate parameters or parameters of the standard inform parameters specified in the datamodel. +> - It is required to restart icwmp service after the changes to use the new forced inform parameters +> - This json file shouldn't contain duplicate parameters or parameters of the standard inform parameters specified in the datamodel +> - Forced inform parameters defined in json should be leaf elements ## Dependencies @@ -265,3 +285,13 @@ To successfully build icwmp, the following libraries are needed: | libopenssl | http://ftp.fi.muni.cz/pub/openssl/source/ | OpenSSL | | libcurl | https://dl.uxnr.de/mirror/curl | MIT | | libmicroxml | https://dev.freecwmp.org/microxml | LGPL 2.0 | + +Runtime dependencies: + +| Dependency | Link | License | +| ----------- | ------------------------------------------- | -------------- | +| ubus | https://git.openwrt.org/project/ubus.git | LGPL 2.1 | +| bbf | https://dev.iopsys.eu/iopsys/bbf.git | LGPLv2.1 | +| uspd | https://dev.iopsys.eu/iopsys/uspd.git | GPL v2.0 | + +> icwmpd gets the datamodel from the DUT via ubus using uspd, and also it registers `tr069` ubus namespace to expose some debug and cwmp client rpc funtionalities, so it is required to start it after starting ubusd and uspd. diff --git a/config.c b/config.c index 4919b8b..0a82edc 100755 --- a/config.c +++ b/config.c @@ -50,18 +50,20 @@ int get_global_config(struct config *conf) if (value != NULL) { log_set_log_file_name(value); FREE(value); - } + } else + log_set_log_file_name(NULL); } else { - return error; + log_set_log_file_name(NULL); } if ((error = uci_get_value(UCI_CPE_LOG_MAX_SIZE, &value)) == CWMP_OK) { if (value != NULL) { log_set_file_max_size(value); FREE(value); - } + } else + log_set_file_max_size(NULL); } else { - return error; + log_set_file_max_size(NULL); } if ((error = uci_get_value(UCI_CPE_ENABLE_STDOUT_LOG, &value)) == CWMP_OK) { @@ -173,7 +175,7 @@ int get_global_config(struct config *conf) CWMP_LOG(DEBUG, "CWMP CONFIG - acs compression: %d", conf->compression); } else { - return error; + conf->compression = COMP_NONE; } if ((error = uci_get_value(UCI_ACS_RETRY_MIN_WAIT_INTERVAL, &value)) == CWMP_OK) { @@ -268,18 +270,6 @@ int get_global_config(struct config *conf) return error; } - if ((error = uci_get_value(UCI_ACS_SSL_VERSION, &value)) == CWMP_OK) { - if (value != NULL) { - FREE(conf->acs_ssl_version); - conf->acs_ssl_version = strdup(value); - FREE(value); - } - - CWMP_LOG(DEBUG, "CWMP CONFIG - acs ssl version: %s", conf->acs_ssl_version ? conf->acs_ssl_version : ""); - } else { - return error; - } - if ((error = uci_get_value(UCI_CPE_INTERFACE_PATH, &value)) == CWMP_OK) { if (value != NULL) { FREE(conf->interface); diff --git a/docs/api/uci.cwmp.md b/docs/api/uci.cwmp.md index 6310b0a..e8e7a86 100644 --- a/docs/api/uci.cwmp.md +++ b/docs/api/uci.cwmp.md @@ -1 +1,411 @@ -
cwmp
section
description
multi
options
acs
This section configure the ACS parameters, used by cwmp client
false
name
type
required
default
description
url
string
yes
URL of ACS server
userid
string
no
Username for ACS server connection
passwd
string
no
Password for ACS server connection
periodic_inform_enable
boolean
no
If set to **1**, the CPE must periodically open session with ACS by sending Inform message to the ACS.
periodic_inform_interval
uinteger
no
The duration in seconds of the interval for which the CPE must attempt to connect with the ACS and call the Inform method.
periodic_inform_time
uinteger
no
An absolute time reference to determine when the CPE will initiate the periodic Inform method calls.
ParameterKey
string
no
Provides the ACS a reliable and extensible means to track changes made by the ACS.
dhcp_discovery
string
no
if set to **enable**, the CPE will get the url of ACS from DHCP server Option 43.
compression
boolean
no
if set to **1**, the CPE must use the HTTP Compression when communicating with the ACS.
retry_min_wait_interval
uinteger
no
The min wait interval of rerty session (in seconds) as described in the standard.
retry_interval_multiplier
uinteger
no
The retry interval mulpilier of rerty session as described in the standard.
https_ssl_capath
string
no
The path of ssl certicafications files. the ssl certification is for Upload and Downlod methods.
ipv6_enable
boolean
no
Enables IPv6 in cwmp
ssl_capath
string
no
The path of ssl certicafications files. the ssl certification is for TR-069 sessions.
insecure_enable
boolean
no
if set to **1**, the CPE checks the validity of the ACS certificates.
http_disable_100continue
boolean
no
if set to **1**, disables the http 100 continue behaviour.
dhcp_url
string
no
the **url** of ACS server received from the DHCP server Option 43 when **'dhcp_discovery'** option is enabled. This option is updated automatically by the daemon.
ip_version
string
no
ip_version of ConnectionRequestURL
cpe
CWMP client configuration
false
name
type
required
default
description
interface
string
no
Specifies the device interface to use for connecting to ACS.
default_wan_interface
string
no
Specifies the default wan interface of the device.
log_to_console
string
no
If set to **1**, the log messages will be shown in the console.
log_to_file
string
no
If set to **1**, the log messages will be saved in the log file.
log_severity
string
no
Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**.
log_file_name
string
no
Specifies the path of the log file, by default **'/var/log/icwmpd.log'**.
log_max_size
uinteger
no
Size of the log file. The default value is **102400**.
userid
string
no
The username of the device used in a connection request from ACS to CPE.
passwd
string
no
The password of the device when sending a connection request from ACS to CPE.
port
uinteger
no
The port used for connection request.
ubus_socket
string
no
Specifies the path of the ubus socket file, by default **'NULL'**.
provisioning_code
string
no
Specifies the primary service provider and other provisioning information, which may be used by the ACS to determine service provider-specific customization and provisioning parameters.
amd_version
uinteger
no
Specifies the amendment version to use. The default amendment version is **'5'**.
instance_mode
string
no
Specifies the instance mode to use, by default **'InstanceNumber'**. Two instance modes are supported: **'InstanceNumber' and 'InstanceNumber'**.
session_timeout
uinteger
no
Represents the number of seconds that should be used by the ACS as the amount of time to wait before timing out a CWMP session due to the CPE not responding, by default **60**.
notification
boolean
no
If set to **1**, it enables the notification feature.
exec_download
boolean
no
If set to **1**, Specifies if Download method is executed.
manufacturer
string
no
Specifies the manafacturer of the device, by default **iopsys**. If set, its value will be the value of **Device.DeviceInfo.Manufacturer** parameter.
manufacturer_oui
string
no
Specifies the manafacturer oui of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ManufacturerOUI** parameter.
model_name
string
no
Specifies the model name of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ModelName** parameter.
product_class
string
no
Specifies the product class of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ProductClass** parameter.
log_to_syslog
boolean
no
If set to **1**, the cwmp log will be appended to busybox syslog.
periodic_notify_enable
boolean
no
If set to **1**, icwmp will be able to detect parameter value change at any time.
lwn
Lightweight notification configuration
false
name
type
required
default
description
enable
boolean
no
if set to **1**, the Lightweight Notifications will be enabled.
hostname
host
no
The hostname or address to be used when sending the UDP Lightweight Notifications.
port
port
no
The port number to be used when sending UDP Lightweight Notifications.
\ No newline at end of file + + + +
cwmp
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
section
description
multi
options
acs
Configure the ACS parameters, used by icwmp
false
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name
type
required
default
description
url
string
yes
URL of ACS server
userid
string
no
Username for ACS server connection
passwd
string
no
Password for ACS server connection
periodic_inform_enable
boolean
no
+
If set to 1, the CPE must periodically open session with ACS by sending Inform message to the ACS.
+
periodic_inform_interval
uinteger
no
The duration in seconds of the interval for which the CPE must attempt to connect with the ACS and call the Inform method.
periodic_inform_time
uinteger
no
An absolute time reference to determine when the CPE will initiate the periodic Inform method calls.
dhcp_discovery
string
no
+
if set to enable, the CPE will get the url of ACS from DHCP server Option 43.
+
compression
boolean
no
+
if set to 1, the CPE must use the HTTP Compression when communicating with the ACS.
+
retry_min_wait_interval
uinteger
no
The minimum wait interval for session retry (in seconds)
retry_interval_multiplier
uinteger
no
The retry interval multiplier for session retry session as described in the standard.
https_ssl_capath
string
no
The path of ssl certificates. ssl certificates used for Upload and Download methods.
ipv6_enable
boolean
no
Enables IPv6 in cwmp
ssl_capath
string
no
The path of ssl certificates for TR-069 sessions.
insecure_enable
boolean
no
+
if set to 1, the CPE skips validation of the ACS certificates.
+
http_disable_100continue
boolean
no
+
if set to 1, disables the http 100 continue behaviour.
+
dhcp_url
string
no
+
the url of ACS server received from the DHCP server via Option 43. This parameter is automatically updated by daemon, When 'dhcp_discovery' option is enabled.
+
ip_version
string
no
ip_version of ConnectionRequestURL
+
cpe
CWMP client configuration
false
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name
type
required
default
description
interface
string
no
Configure the Layer3 device interface name to use for connecting to ACS.
default_wan_interface
string
no
Configure the default wan interface of the device.
log_to_console
string
no
+
If set to 1, the log messages will be shown in the console/stdout.
+
log_to_file
string
no
+
If set to 1, the log messages will be saved in the log file.
+
log_severity
string
no
+
+ Specifies the log type to use, by default INFO. The possible types are +
    +
  • EMERG
  • +
  • ALERT
  • +
  • CRITIC
  • +
  • ERROR
  • +
  • WARNING
  • +
  • NOTICE
  • +
  • INFO
  • +
  • DEBUG
  • +
+ . +
+
log_file_name
string
no
/var/log/icwmpd.log
+
Specifies the path of the log file, by default '/var/log/icwmpd.log'.
+
log_max_size
uinteger
no
102400
+
Size of the log file. The default value is 102400.
+
userid
string
no
The username of the device used in a connection request from ACS to CPE.
passwd
string
no
The password of the device when sending a connection request from ACS to CPE.
port
uinteger
no
The port used for connection request.
ubus_socket
string
no
NULL
Specifies the path of the ubus socket.
provisioning_code
string
no
+
+ Specifies the primary service provider and other provisioning information, which may be used by the ACS to determine service provider-specific customization and provisioning parameters. +
+
amd_version
uinteger
no
5
Configure the amendment version to use.
instance_mode
string
no
InstanceNumber
+
Configure the instance mode to use. Supported instance modes are : InstanceNumber and InstanceNumber
+
session_timeout
uinteger
no
60
+
Represents the number of seconds that should be used by the ACS as the amount of time to wait before timing out a CWMP session due to the CPE not responding.
+
notification
boolean
no
+
If set to 1, it enables the notification feature.
+
exec_download
boolean
no
+
If set to 1, Specifies if Download method is executed.
+
log_to_syslog
boolean
no
+
If set to 1, the cwmp log will be appended to busybox syslog.
+
periodic_notify_enable
boolean
no
+
If set to 1, icwmp will be able to detect parameter value change at any time.
+
periodic_notify_interval
integer
no
10
Interval in sec to check for value change notifications
forced_inform_json
string
no
Define additional parameters as forced inform parameter. See readme for examples.
+
lwn
Lightweight notification configuration
false
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name
type
required
default
description
enable
boolean
no
+
if set to 1, the Lightweight Notifications will be enabled.
+
hostname
host
no
The hostname or address to be used when sending the UDP Lightweight Notifications.
port
port
no
The port number to be used when sending UDP Lightweight Notifications.
+
+ + + diff --git a/inc/common.h b/inc/common.h index fa780b5..c0ec7b9 100644 --- a/inc/common.h +++ b/inc/common.h @@ -67,7 +67,6 @@ typedef struct config { char *acs_userid; char *acs_passwd; char *acs_ssl_capath; - char *acs_ssl_version; char *https_ssl_capath; char *cpe_userid; char *cpe_passwd; diff --git a/inc/cwmp_uci.h b/inc/cwmp_uci.h index 834e661..9c309cf 100644 --- a/inc/cwmp_uci.h +++ b/inc/cwmp_uci.h @@ -28,7 +28,6 @@ #define UCI_HTTPS_SSL_CAPATH "cwmp.acs.https_ssl_capath" #define UCI_ACS_INSECURE_ENABLE "cwmp.acs.insecure_enable" #define UCI_ACS_IPV6_ENABLE "cwmp.acs.ipv6_enable" -#define UCI_ACS_SSL_VERSION "cwmp.acs.ssl_version" #define UCI_ACS_COMPRESSION "cwmp.acs.compression" #define UCI_ACS_RETRY_MIN_WAIT_INTERVAL "cwmp.acs.retry_min_wait_interval" #define HTTP_DISABLE_100CONTINUE "cwmp.acs.http_disable_100continue" diff --git a/log.c b/log.c index cb67989..f7d5959 100644 --- a/log.c +++ b/log.c @@ -53,6 +53,8 @@ int log_set_file_max_size(char *value) { if (value != NULL) { log_max_size = atol(value); + } else { + log_max_size = 102400; } return 1; } diff --git a/schemas/uci/cwmp.json b/schemas/uci/cwmp.json index d6dfce0..4772804 100644 --- a/schemas/uci/cwmp.json +++ b/schemas/uci/cwmp.json @@ -1,333 +1,312 @@ { - "cwmp": [ + "cwmp": [ { - "section": "acs", - "description": "This section configure the ACS parameters, used by cwmp client", - "multi": false, - "options": [ + "section": "acs", + "description": "Configure the ACS parameters, used by icwmp", + "multi": false, + "options": [ { - "name": "url", - "type": "string", - "required": "yes", - "default": "", - "description": "URL of ACS server" + "name": "url", + "type": "string", + "required": "yes", + "default": "", + "description": "URL of ACS server" }, { - "name": "userid", - "type": "string", - "required": "no", - "default": "", - "description": "Username for ACS server connection" + "name": "userid", + "type": "string", + "required": "no", + "default": "", + "description": "Username for ACS server connection" }, { - "name": "passwd", - "type": "string", - "required": "no", - "default": "", - "description": "Password for ACS server connection" + "name": "passwd", + "type": "string", + "required": "no", + "default": "", + "description": "Password for ACS server connection" }, { - "name": "periodic_inform_enable", - "type": "boolean", - "required": "no", - "default": "", - "description": "If set to **1**, the CPE must periodically open session with ACS by sending Inform message to the ACS." + "name": "periodic_inform_enable", + "type": "boolean", + "required": "no", + "default": "", + "description": "If set to **1**, the CPE must periodically open session with ACS by sending Inform message to the ACS." }, { - "name": "periodic_inform_interval", - "type": "uinteger", - "required": "no", - "default": "", - "description": "The duration in seconds of the interval for which the CPE must attempt to connect with the ACS and call the Inform method." + "name": "periodic_inform_interval", + "type": "uinteger", + "required": "no", + "default": "", + "description": "The duration in seconds of the interval for which the CPE must attempt to connect with the ACS and call the Inform method." }, { - "name": "periodic_inform_time", - "type": "uinteger", - "required": "no", - "default": "", - "description": "An absolute time reference to determine when the CPE will initiate the periodic Inform method calls." + "name": "periodic_inform_time", + "type": "uinteger", + "required": "no", + "default": "", + "description": "An absolute time reference to determine when the CPE will initiate the periodic Inform method calls." }, { - "name": "ParameterKey", - "type": "string", - "required": "no", - "default": "", - "description": "Provides the ACS a reliable and extensible means to track changes made by the ACS." + "name": "dhcp_discovery", + "type": "string", + "required": "no", + "default": "", + "description": "if set to **enable**, the CPE will get the url of ACS from DHCP server Option 43." }, { - "name": "dhcp_discovery", - "type": "string", - "required": "no", - "default": "", - "description": "if set to **enable**, the CPE will get the url of ACS from DHCP server Option 43." + "name": "compression", + "type": "boolean", + "required": "no", + "default": "", + "description": "if set to **1**, the CPE must use the HTTP Compression when communicating with the ACS." }, { - "name": "compression", - "type": "boolean", - "required": "no", - "default": "", - "description": "if set to **1**, the CPE must use the HTTP Compression when communicating with the ACS." + "name": "retry_min_wait_interval", + "type": "uinteger", + "required": "no", + "default": "", + "description": "The minimum wait interval for session retry (in seconds)" }, { - "name": "retry_min_wait_interval", - "type": "uinteger", - "required": "no", - "default": "", - "description": "The min wait interval of rerty session (in seconds) as described in the standard." + "name": "retry_interval_multiplier", + "type": "uinteger", + "required": "no", + "default": "", + "description": "The retry interval multiplier for session retry session as described in the standard." }, { - "name": "retry_interval_multiplier", - "type": "uinteger", - "required": "no", - "default": "", - "description": "The retry interval mulpilier of rerty session as described in the standard." + "name": "https_ssl_capath", + "type": "string", + "required": "no", + "default": "", + "description": "The path of ssl certificates. ssl certificates used for Upload and Download methods." }, { - "name": "https_ssl_capath", - "type": "string", - "required": "no", - "default": "", - "description": "The path of ssl certicafications files. the ssl certification is for Upload and Downlod methods." + "name": "ipv6_enable", + "type": "boolean", + "required": "no", + "default": "", + "description": "Enables IPv6 in cwmp" }, { - "name": "ipv6_enable", - "type": "boolean", - "required": "no", - "default": "", - "description": "Enables IPv6 in cwmp" + "name": "ssl_capath", + "type": "string", + "required": "no", + "default": "", + "description": "The path of ssl certificates for TR-069 sessions." }, { - "name": "ssl_capath", - "type": "string", - "required": "no", - "default": "", - "description": "The path of ssl certicafications files. the ssl certification is for TR-069 sessions." + "name": "insecure_enable", + "type": "boolean", + "required": "no", + "default": "", + "description": "if set to **1**, the CPE skips validation of the ACS certificates." }, { - "name": "insecure_enable", - "type": "boolean", - "required": "no", - "default": "", - "description": "if set to **1**, the CPE checks the validity of the ACS certificates." + "name": "http_disable_100continue", + "type": "boolean", + "required": "no", + "default": "", + "description": "if set to **1**, disables the http 100 continue behaviour." }, { - "name": "http_disable_100continue", - "type": "boolean", - "required": "no", - "default": "", - "description": "if set to **1**, disables the http 100 continue behaviour." + "name": "dhcp_url", + "type": "string", + "required": "no", + "default": "", + "description": "the **url** of ACS server received from the DHCP server via Option 43. This parameter is automatically updated by daemon, When **'dhcp_discovery'** option is enabled." }, { - "name": "dhcp_url", - "type": "string", - "required": "no", - "default": "", - "description": "the **url** of ACS server received from the DHCP server Option 43 when **'dhcp_discovery'** option is enabled. This option is updated automatically by the daemon." - }, - { - "name": "ip_version", - "type": "string", - "required": "no", - "default": "", - "description": "ip_version of ConnectionRequestURL" + "name": "ip_version", + "type": "string", + "required": "no", + "default": "", + "description": "ip_version of ConnectionRequestURL" } - ] + ] }, { - "section": "cpe", - "description": "CWMP client configuration", - "multi": false, - "options": [ - { - "name": "interface", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the device interface to use for connecting to ACS." - }, - { - "name": "default_wan_interface", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the default wan interface of the device." - }, - { - "name": "log_to_console", - "type": "string", - "required":"no", - "default": "", - "description": "If set to **1**, the log messages will be shown in the console." - }, - { - "name": "log_to_file", - "type": "string", - "required":"no", - "default": "", - "description": "If set to **1**, the log messages will be saved in the log file." - }, - { - "name": "log_severity", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**." - }, - { - "name": "log_file_name", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the path of the log file, by default **'/var/log/icwmpd.log'**." - }, - { - "name": "log_max_size", - "type": "uinteger", - "required":"no", - "default": "", - "description": "Size of the log file. The default value is **102400**." - }, - { - "name": "userid", - "type": "string", - "required":"no", - "default": "", - "description": "The username of the device used in a connection request from ACS to CPE." - }, - { - "name": "passwd", - "type": "string", - "required":"no", - "default": "", - "description": "The password of the device when sending a connection request from ACS to CPE." - }, - { - "name": "port", - "type": "uinteger", - "required":"no", - "default": "", - "description": "The port used for connection request." - }, - { - "name": "ubus_socket", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the path of the ubus socket file, by default **'NULL'**." - }, - { - "name": "provisioning_code", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the primary service provider and other provisioning information, which may be used by the ACS to determine service provider-specific customization and provisioning parameters." - }, - { - "name": "amd_version", - "type": "uinteger", - "required":"no", - "default": "", - "description": "Specifies the amendment version to use. The default amendment version is **'5'**." - }, - { - "name": "instance_mode", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the instance mode to use, by default **'InstanceNumber'**. Two instance modes are supported: **'InstanceNumber' and 'InstanceNumber'**." - }, - { - "name": "session_timeout", - "type": "uinteger", - "required":"no", - "default": "", - "description": "Represents the number of seconds that should be used by the ACS as the amount of time to wait before timing out a CWMP session due to the CPE not responding, by default **60**." - }, - { - "name": "notification", - "type": "boolean", - "required":"no", - "default": "", - "description": "If set to **1**, it enables the notification feature." - }, - { - "name": "exec_download", - "type": "boolean", - "required":"no", - "default": "", - "description": "If set to **1**, Specifies if Download method is executed." - }, - { - "name": "manufacturer", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the manafacturer of the device, by default **iopsys**. If set, its value will be the value of **Device.DeviceInfo.Manufacturer** parameter." - }, - { - "name": "manufacturer_oui", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the manafacturer oui of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ManufacturerOUI** parameter." - }, - { - "name": "model_name", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the model name of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ModelName** parameter." - }, - { - "name": "product_class", - "type": "string", - "required":"no", - "default": "", - "description": "Specifies the product class of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ProductClass** parameter." - }, - { - "name": "log_to_syslog", - "type": "boolean", - "required":"no", - "default": "", - "description": "If set to **1**, the cwmp log will be appended to busybox syslog." - }, - { - "name": "periodic_notify_enable", - "type": "boolean", - "required":"no", - "default": "", - "description": "If set to **1**, icwmp will be able to detect parameter value change at any time." - } - ] + "section": "cpe", + "description": "CWMP client configuration", + "multi": false, + "options": [ + { + "name": "interface", + "type": "string", + "required": "no", + "default": "", + "description": "Configure the Layer3 device interface name to use for connecting to ACS." + }, + { + "name": "default_wan_interface", + "type": "string", + "required": "no", + "default": "", + "description": "Configure the default wan interface of the device." + }, + { + "name": "log_to_console", + "type": "string", + "required": "no", + "default": "", + "description": "If set to **1**, the log messages will be shown in the console/stdout." + }, + { + "name": "log_to_file", + "type": "string", + "required": "no", + "default": "", + "description": "If set to **1**, the log messages will be saved in the log file." + }, + { + "name": "log_severity", + "type": "string", + "required": "no", + "default": "", + "description": "Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**." + }, + { + "name": "log_file_name", + "type": "string", + "required": "no", + "default": "/var/log/icwmpd.log", + "description": "Specifies the path of the log file, by default **'/var/log/icwmpd.log'**." + }, + { + "name": "log_max_size", + "type": "uinteger", + "required": "no", + "default": "102400", + "description": "Size of the log file. The default value is **102400**." + }, + { + "name": "userid", + "type": "string", + "required": "no", + "default": "", + "description": "The username of the device used in a connection request from ACS to CPE." + }, + { + "name": "passwd", + "type": "string", + "required": "no", + "default": "", + "description": "The password of the device when sending a connection request from ACS to CPE." + }, + { + "name": "port", + "type": "uinteger", + "required": "no", + "default": "", + "description": "The port used for connection request." + }, + { + "name": "ubus_socket", + "type": "string", + "required": "no", + "default": "NULL", + "description": "Specifies the path of the ubus socket." + }, + { + "name": "provisioning_code", + "type": "string", + "required": "no", + "default": "", + "description": "Specifies the primary service provider and other provisioning information, which may be used by the ACS to determine service provider-specific customization and provisioning parameters." + }, + { + "name": "amd_version", + "type": "uinteger", + "required": "no", + "default": "5", + "description": "Configure the amendment version to use." + }, + { + "name": "instance_mode", + "type": "string", + "required": "no", + "default": "InstanceNumber", + "description": "Configure the instance mode to use. Supported instance modes are : InstanceNumber and InstanceNumber." + }, + { + "name": "session_timeout", + "type": "uinteger", + "required": "no", + "default": "60", + "description": "Represents the number of seconds that should be used by the ACS as the amount of time to wait before timing out a CWMP session due to the CPE not responding." + }, + { + "name": "notification", + "type": "boolean", + "required": "no", + "default": "", + "description": "If set to **1**, it enables the notification feature." + }, + { + "name": "exec_download", + "type": "boolean", + "required": "no", + "default": "", + "description": "If set to **1**, Specifies if Download method is executed." + }, + { + "name": "log_to_syslog", + "type": "boolean", + "required": "no", + "default": "", + "description": "If set to **1**, the cwmp log will be appended to busybox syslog." + }, + { + "name": "periodic_notify_enable", + "type": "boolean", + "required": "no", + "default": "", + "description": "If set to **1**, icwmp will be able to detect parameter value change at any time." + }, + { + "name": "periodic_notify_interval", + "type": "integer", + "required": "no", + "default": "10", + "description": "Interval in sec to check for value change notifications" + }, + { + "name": "forced_inform_json", + "type": "string", + "required": "no", + "default": "", + "description": "Define additional parameters as forced inform parameter. See readme for examples." + } + ] }, { - "section": "lwn", - "description": "Lightweight notification configuration", - "multi": false, - "options":[ + "section": "lwn", + "description": "Lightweight notification configuration", + "multi": false, + "options": [ { - "name": "enable", - "type": "boolean", - "required": "no", - "default": "", - "description": "if set to **1**, the Lightweight Notifications will be enabled. " + "name": "enable", + "type": "boolean", + "required": "no", + "default": "", + "description": "if set to **1**, the Lightweight Notifications will be enabled. " }, { - "name": "hostname", - "type": "host", - "required": "no", - "default": "", - "description": "The hostname or address to be used when sending the UDP Lightweight Notifications." + "name": "hostname", + "type": "host", + "required": "no", + "default": "", + "description": "The hostname or address to be used when sending the UDP Lightweight Notifications." }, { - "name": "port", - "type": "port", - "required": "no", - "default": "", - "description": "The port number to be used when sending UDP Lightweight Notifications." + "name": "port", + "type": "port", + "required": "no", + "default": "", + "description": "The port number to be used when sending UDP Lightweight Notifications." } - ] + ] } - ] + ] }