Updated Readme

This commit is contained in:
Vivek Kumar Dutta 2021-07-29 13:22:29 +00:00
parent 55e2d94a9e
commit ab883852f9
7 changed files with 768 additions and 359 deletions

132
README.md
View file

@ -7,11 +7,11 @@ It is written in C programming language and depends on a number of libraries of
## Good to Know ## Good to Know
The icwmp client is : The icwmp client is :
* tested with several ACS such as **Axiros**, **AVSytem**, **GenieACS**, **OpenACS**, etc... * Tested with several ACS such as **Axiros**, **AVSytem**, **GenieACS**, **OpenACS**, etc...
* supports all required **TR069 RPCs**. * Supports all required **TR069 RPCs**.
* supports all DataModel of TR family such as **TR-181**, **TR-104**, **TR-143**, **TR-157**, etc... * 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 all types of connection requests such as **HTTP**, **XMPP**, **STUN**.
* supports integrated file transfer such as **HTTP**, **HTTPS**, **FTP**. * Supports integrated file transfer such as **HTTP**, **HTTPS**, **FTP**.
## Configuration File ## Configuration File
@ -37,7 +37,7 @@ config lwn 'lwn'
option port '' 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 ## RPCs Method supported
@ -85,7 +85,7 @@ the folowing tables provides a summary of all methods, and indicates the conditi
## Concepts and Workflow ## 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. 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: 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,18 +110,19 @@ You could set the uci config `cwmp.cpe.log_severity` option to `'DEBUG'` in orde
## icwmp uBus ## 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 ### 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 ```bash
root@iopsys:~# ubus -v list tr069 root@iopsys:~# ubus -v list tr069
'tr069' @04d3de4e 'tr069' @aadff65c
"notify":{} "command":{"command":"String"}
"command":{"command":"String"} "status":{}
"status":{} "inform":{"GetRPCMethods":"Boolean","event":"String"}
"inform":{"GetRPCMethods":"Boolean","event":"String"}
root@iopsys:~# root@iopsys:~#
``` ```
@ -132,26 +133,26 @@ Each object registered with the `'tr069'` namespace has a specific functionality
```bash ```bash
root@iopsys:~# ubus call tr069 status root@iopsys:~# ubus call tr069 status
{ {
"cwmp": { "cwmp": {
"status": "up", "status": "up",
"start_time": "2019-12-24T10:21:18+01:00", "start_time": "2021-07-29T09:29:02+02:00",
"acs_url": "http:\/\/genieacs:7547" "acs_url": "http://genieacs:7547"
}, },
"last_session": { "last_session": {
"status": "success", "status": "success",
"start_time": "2019-12-24T10:21:18+01:00", "start_time": "2021-07-29T09:29:59+02:00",
"end_time": "2019-12-24T10:21:19+01:00" "end_time": "2021-07-29T09:30:00+02:00"
}, },
"next_session": { "next_session": {
"status": "waiting", "status": "waiting",
"start_time": "2019-12-26T12:21:18+01:00", "start_time": "2021-07-29T09:59:59+02:00",
"end_time": "N\/A" "end_time": "N/A"
}, },
"statistics": { "statistics": {
"success_sessions": 1, "success_sessions": 2,
"failure_sessions": 0, "failure_sessions": 0,
"total_sessions": 1 "total_sessions": 2
} }
} }
root@iopsys:~# root@iopsys:~#
``` ```
@ -206,51 +207,70 @@ icwmpd command line options are described with `--help` option as below:
```bash ```bash
root@iopsys:~# icwmpd --help root@iopsys:~# icwmpd --help
Usage: icwmpd [OPTIONS] Usage: icwmpd [OPTIONS]
-s, --ubus_socket Ubus socket path for IPC
-b, --boot-event (CWMP daemon) Start CWMP with BOOT event -b, --boot-event (CWMP daemon) Start CWMP with BOOT event
-g, --get-rpc-methods (CWMP daemon) Start CWMP with GetRPCMethods request to ACS -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 -h, --help Display this help text
-v, --version Display the version -v, --version Display the version
``` ```
## icwmpd CLI ## 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: Different options of this CLI are described with help command as below:
```bash ```bash
root@iopsys:~# icwmpd -c help root@iopsys:~# icwmpd -c help
Valid commands: Valid commands:
help => show this help help => show this help
get [path-expr] => get parameter values get [path-expr] => get parameter values
get_names [path-expr] [next-level] => get parameter names get_names [path-expr] [next-level] => get parameter names
set [path-expr] [value] => set parameter value set [path-expr] [value] => set parameter value
add [object] => add object add [object] => add object
del [object] => delete object del [object] => delete object
get_notif [path-expr] => get parameter notifications get_notif [path-expr] => get parameter notifications
set_notif [path-expr] [notification] => set 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 ## 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. | Parameter name |
Those new inform parameters can be set in a json file as following: | ---------------------------------------------- |
| 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 ```bash
root@iopsys:~# cat /etc/icwmpd/forced_inform.json
{ {
"forced_inform":[ "forced_inform":[
"Device.DeviceInfo.X_IOPSYS_EU_BaseMACAddress", "Device.DeviceInfo.X_IOPSYS_EU_BaseMACAddress",
"Device.DeviceInfo.UpTime" "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 > - 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
Please be sure that 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 ## Dependencies
@ -265,3 +285,13 @@ To successfully build icwmp, the following libraries are needed:
| libopenssl | http://ftp.fi.muni.cz/pub/openssl/source/ | OpenSSL | | libopenssl | http://ftp.fi.muni.cz/pub/openssl/source/ | OpenSSL |
| libcurl | https://dl.uxnr.de/mirror/curl | MIT | | libcurl | https://dl.uxnr.de/mirror/curl | MIT |
| libmicroxml | https://dev.freecwmp.org/microxml | LGPL 2.0 | | 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.

View file

@ -50,18 +50,20 @@ int get_global_config(struct config *conf)
if (value != NULL) { if (value != NULL) {
log_set_log_file_name(value); log_set_log_file_name(value);
FREE(value); FREE(value);
} } else
log_set_log_file_name(NULL);
} else { } else {
return error; log_set_log_file_name(NULL);
} }
if ((error = uci_get_value(UCI_CPE_LOG_MAX_SIZE, &value)) == CWMP_OK) { if ((error = uci_get_value(UCI_CPE_LOG_MAX_SIZE, &value)) == CWMP_OK) {
if (value != NULL) { if (value != NULL) {
log_set_file_max_size(value); log_set_file_max_size(value);
FREE(value); FREE(value);
} } else
log_set_file_max_size(NULL);
} else { } else {
return error; log_set_file_max_size(NULL);
} }
if ((error = uci_get_value(UCI_CPE_ENABLE_STDOUT_LOG, &value)) == CWMP_OK) { 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); CWMP_LOG(DEBUG, "CWMP CONFIG - acs compression: %d", conf->compression);
} else { } else {
return error; conf->compression = COMP_NONE;
} }
if ((error = uci_get_value(UCI_ACS_RETRY_MIN_WAIT_INTERVAL, &value)) == CWMP_OK) { 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; 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 ((error = uci_get_value(UCI_CPE_INTERFACE_PATH, &value)) == CWMP_OK) {
if (value != NULL) { if (value != NULL) {
FREE(conf->interface); FREE(conf->interface);

File diff suppressed because one or more lines are too long

View file

@ -67,7 +67,6 @@ typedef struct config {
char *acs_userid; char *acs_userid;
char *acs_passwd; char *acs_passwd;
char *acs_ssl_capath; char *acs_ssl_capath;
char *acs_ssl_version;
char *https_ssl_capath; char *https_ssl_capath;
char *cpe_userid; char *cpe_userid;
char *cpe_passwd; char *cpe_passwd;

View file

@ -28,7 +28,6 @@
#define UCI_HTTPS_SSL_CAPATH "cwmp.acs.https_ssl_capath" #define UCI_HTTPS_SSL_CAPATH "cwmp.acs.https_ssl_capath"
#define UCI_ACS_INSECURE_ENABLE "cwmp.acs.insecure_enable" #define UCI_ACS_INSECURE_ENABLE "cwmp.acs.insecure_enable"
#define UCI_ACS_IPV6_ENABLE "cwmp.acs.ipv6_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_COMPRESSION "cwmp.acs.compression"
#define UCI_ACS_RETRY_MIN_WAIT_INTERVAL "cwmp.acs.retry_min_wait_interval" #define UCI_ACS_RETRY_MIN_WAIT_INTERVAL "cwmp.acs.retry_min_wait_interval"
#define HTTP_DISABLE_100CONTINUE "cwmp.acs.http_disable_100continue" #define HTTP_DISABLE_100CONTINUE "cwmp.acs.http_disable_100continue"

2
log.c
View file

@ -53,6 +53,8 @@ int log_set_file_max_size(char *value)
{ {
if (value != NULL) { if (value != NULL) {
log_max_size = atol(value); log_max_size = atol(value);
} else {
log_max_size = 102400;
} }
return 1; return 1;
} }

View file

@ -1,333 +1,312 @@
{ {
"cwmp": [ "cwmp": [
{ {
"section": "acs", "section": "acs",
"description": "This section configure the ACS parameters, used by cwmp client", "description": "Configure the ACS parameters, used by icwmp",
"multi": false, "multi": false,
"options": [ "options": [
{ {
"name": "url", "name": "url",
"type": "string", "type": "string",
"required": "yes", "required": "yes",
"default": "", "default": "",
"description": "URL of ACS server" "description": "URL of ACS server"
}, },
{ {
"name": "userid", "name": "userid",
"type": "string", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "Username for ACS server connection" "description": "Username for ACS server connection"
}, },
{ {
"name": "passwd", "name": "passwd",
"type": "string", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "Password for ACS server connection" "description": "Password for ACS server connection"
}, },
{ {
"name": "periodic_inform_enable", "name": "periodic_inform_enable",
"type": "boolean", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "If set to **1**, the CPE must periodically open session with ACS by sending Inform message to the ACS." "description": "If set to **1**, the CPE must periodically open session with ACS by sending Inform message to the ACS."
}, },
{ {
"name": "periodic_inform_interval", "name": "periodic_inform_interval",
"type": "uinteger", "type": "uinteger",
"required": "no", "required": "no",
"default": "", "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." "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", "name": "periodic_inform_time",
"type": "uinteger", "type": "uinteger",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "An absolute time reference to determine when the CPE will initiate the periodic Inform method calls." "description": "An absolute time reference to determine when the CPE will initiate the periodic Inform method calls."
}, },
{ {
"name": "ParameterKey", "name": "dhcp_discovery",
"type": "string", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "Provides the ACS a reliable and extensible means to track changes made by the ACS." "description": "if set to **enable**, the CPE will get the url of ACS from DHCP server Option 43."
}, },
{ {
"name": "dhcp_discovery", "name": "compression",
"type": "string", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "if set to **enable**, the CPE will get the url of ACS from DHCP server Option 43." "description": "if set to **1**, the CPE must use the HTTP Compression when communicating with the ACS."
}, },
{ {
"name": "compression", "name": "retry_min_wait_interval",
"type": "boolean", "type": "uinteger",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "if set to **1**, the CPE must use the HTTP Compression when communicating with the ACS." "description": "The minimum wait interval for session retry (in seconds)"
}, },
{ {
"name": "retry_min_wait_interval", "name": "retry_interval_multiplier",
"type": "uinteger", "type": "uinteger",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The min wait interval of rerty session (in seconds) as described in the standard." "description": "The retry interval multiplier for session retry session as described in the standard."
}, },
{ {
"name": "retry_interval_multiplier", "name": "https_ssl_capath",
"type": "uinteger", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The retry interval mulpilier of rerty session as described in the standard." "description": "The path of ssl certificates. ssl certificates used for Upload and Download methods."
}, },
{ {
"name": "https_ssl_capath", "name": "ipv6_enable",
"type": "string", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The path of ssl certicafications files. the ssl certification is for Upload and Downlod methods." "description": "Enables IPv6 in cwmp"
}, },
{ {
"name": "ipv6_enable", "name": "ssl_capath",
"type": "boolean", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "Enables IPv6 in cwmp" "description": "The path of ssl certificates for TR-069 sessions."
}, },
{ {
"name": "ssl_capath", "name": "insecure_enable",
"type": "string", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The path of ssl certicafications files. the ssl certification is for TR-069 sessions." "description": "if set to **1**, the CPE skips validation of the ACS certificates."
}, },
{ {
"name": "insecure_enable", "name": "http_disable_100continue",
"type": "boolean", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "if set to **1**, the CPE checks the validity of the ACS certificates." "description": "if set to **1**, disables the http 100 continue behaviour."
}, },
{ {
"name": "http_disable_100continue", "name": "dhcp_url",
"type": "boolean", "type": "string",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "if set to **1**, disables the http 100 continue behaviour." "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", "name": "ip_version",
"type": "string", "type": "string",
"required": "no", "required": "no",
"default": "", "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." "description": "ip_version of ConnectionRequestURL"
},
{
"name": "ip_version",
"type": "string",
"required": "no",
"default": "",
"description": "ip_version of ConnectionRequestURL"
} }
] ]
}, },
{ {
"section": "cpe", "section": "cpe",
"description": "CWMP client configuration", "description": "CWMP client configuration",
"multi": false, "multi": false,
"options": [ "options": [
{ {
"name": "interface", "name": "interface",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "Specifies the device interface to use for connecting to ACS." "description": "Configure the Layer3 device interface name to use for connecting to ACS."
}, },
{ {
"name": "default_wan_interface", "name": "default_wan_interface",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "Specifies the default wan interface of the device." "description": "Configure the default wan interface of the device."
}, },
{ {
"name": "log_to_console", "name": "log_to_console",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "If set to **1**, the log messages will be shown in the console." "description": "If set to **1**, the log messages will be shown in the console/stdout."
}, },
{ {
"name": "log_to_file", "name": "log_to_file",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "If set to **1**, the log messages will be saved in the log file." "description": "If set to **1**, the log messages will be saved in the log file."
}, },
{ {
"name": "log_severity", "name": "log_severity",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**." "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", "name": "log_file_name",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "/var/log/icwmpd.log",
"description": "Specifies the path of the log file, by default **'/var/log/icwmpd.log'**." "description": "Specifies the path of the log file, by default **'/var/log/icwmpd.log'**."
}, },
{ {
"name": "log_max_size", "name": "log_max_size",
"type": "uinteger", "type": "uinteger",
"required":"no", "required": "no",
"default": "", "default": "102400",
"description": "Size of the log file. The default value is **102400**." "description": "Size of the log file. The default value is **102400**."
}, },
{ {
"name": "userid", "name": "userid",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "The username of the device used in a connection request from ACS to CPE." "description": "The username of the device used in a connection request from ACS to CPE."
}, },
{ {
"name": "passwd", "name": "passwd",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "The password of the device when sending a connection request from ACS to CPE." "description": "The password of the device when sending a connection request from ACS to CPE."
}, },
{ {
"name": "port", "name": "port",
"type": "uinteger", "type": "uinteger",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "The port used for connection request." "description": "The port used for connection request."
}, },
{ {
"name": "ubus_socket", "name": "ubus_socket",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "NULL",
"description": "Specifies the path of the ubus socket file, by default **'NULL'**." "description": "Specifies the path of the ubus socket."
}, },
{ {
"name": "provisioning_code", "name": "provisioning_code",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "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." "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", "name": "amd_version",
"type": "uinteger", "type": "uinteger",
"required":"no", "required": "no",
"default": "", "default": "5",
"description": "Specifies the amendment version to use. The default amendment version is **'5'**." "description": "Configure the amendment version to use."
}, },
{ {
"name": "instance_mode", "name": "instance_mode",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "default": "InstanceNumber",
"description": "Specifies the instance mode to use, by default **'InstanceNumber'**. Two instance modes are supported: **'InstanceNumber' and 'InstanceNumber'**." "description": "Configure the instance mode to use. Supported instance modes are : <B>InstanceNumber</B> and <B>InstanceNumber</B>."
}, },
{ {
"name": "session_timeout", "name": "session_timeout",
"type": "uinteger", "type": "uinteger",
"required":"no", "required": "no",
"default": "", "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, by 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", "name": "notification",
"type": "boolean", "type": "boolean",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "If set to **1**, it enables the notification feature." "description": "If set to **1**, it enables the notification feature."
}, },
{ {
"name": "exec_download", "name": "exec_download",
"type": "boolean", "type": "boolean",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "If set to **1**, Specifies if Download method is executed." "description": "If set to **1**, Specifies if Download method is executed."
}, },
{ {
"name": "manufacturer", "name": "log_to_syslog",
"type": "string", "type": "boolean",
"required":"no", "required": "no",
"default": "", "default": "",
"description": "Specifies the manafacturer of the device, by default **iopsys**. If set, its value will be the value of **Device.DeviceInfo.Manufacturer** parameter." "description": "If set to **1**, the cwmp log will be appended to busybox syslog."
}, },
{ {
"name": "manufacturer_oui", "name": "periodic_notify_enable",
"type": "string", "type": "boolean",
"required":"no", "required": "no",
"default": "", "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." "description": "If set to **1**, icwmp will be able to detect parameter value change at any time."
}, },
{ {
"name": "model_name", "name": "periodic_notify_interval",
"type": "string", "type": "integer",
"required":"no", "required": "no",
"default": "", "default": "10",
"description": "Specifies the model name of the device, by default empty. If set, its value will be the value of **Device.DeviceInfo.ModelName** parameter." "description": "Interval in sec to check for value change notifications"
}, },
{ {
"name": "product_class", "name": "forced_inform_json",
"type": "string", "type": "string",
"required":"no", "required": "no",
"default": "", "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." "description": "Define additional parameters as forced inform parameter. See readme for examples."
}, }
{ ]
"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": "lwn", "section": "lwn",
"description": "Lightweight notification configuration", "description": "Lightweight notification configuration",
"multi": false, "multi": false,
"options":[ "options": [
{ {
"name": "enable", "name": "enable",
"type": "boolean", "type": "boolean",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "if set to **1**, the Lightweight Notifications will be enabled. " "description": "if set to **1**, the Lightweight Notifications will be enabled. "
}, },
{ {
"name": "hostname", "name": "hostname",
"type": "host", "type": "host",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The hostname or address to be used when sending the UDP Lightweight Notifications." "description": "The hostname or address to be used when sending the UDP Lightweight Notifications."
}, },
{ {
"name": "port", "name": "port",
"type": "port", "type": "port",
"required": "no", "required": "no",
"default": "", "default": "",
"description": "The port number to be used when sending UDP Lightweight Notifications." "description": "The port number to be used when sending UDP Lightweight Notifications."
} }
] ]
} }
] ]
} }