Skip to content

Commit

Permalink
2024-07-23: TR-181 Issue 2 Amendment 18
Browse files Browse the repository at this point in the history
  • Loading branch information
BBF Tools committed Jul 23, 2024
1 parent 3c3f4d5 commit 818487c
Show file tree
Hide file tree
Showing 237 changed files with 12,786 additions and 667,197 deletions.
64 changes: 60 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,61 @@
See <https://device-data-model.broadband-forum.org> for the
current TR-181 specification.

## 2024-07-23: [TR-181 Issue 2 Amendment 18]

*Tags: [v2.18.0] (TR-181),
[v1.14.0][TR-106-v1.14.0] (TR-106)*

### TR-181 Document
* Fixed logical interface table
* Added ToO chapter about network interface MTU
* Manually resized diagrams to look nice
* Updated all generated diagrams

### Data Model
* Added more counter types to IoT
* Improved MoCA network state parameter descriptions
* Added new parameter to support VLAN priority
* Added new parameter to indicate the used Ethernet duplex mode
* Improved example Ethernet PHY types by using more commonly used types
* Added new parameter to control the sending of ARP messages on an Ethernet link
* Corrected access type of multiple parameters
* Added new parameters for IP based access control in HTTP access
* Added new parameter to configure the MTU on an Ethernet link
* Added new parameter to link a USPService to an ExecutionUnit providing it
* Extended size of various QoS parameter types from 32 bits to 64 bits types
* Added new parameter to control filtering of ICMPv6 packets
* Changed one more missed parameter from hidden to secured
* Added new parameters to control DHCP retransmission/retry behavior
* Removed some dmr:fixedObject attributes from non-fixed objects
* Added Device.Schedules. mechanism to define time-based schedules for services to use
* Added new parameters indicate the reason for a device reboot
* Added new parameters to configure and check the Ethernet MDIX mode
* Deprecated a decent number of MultiAP commands and parameters due to being supported in DataElements
* Refactored many Interface and Link objects, parameters and commands into components for deduplication
* Refactored and improved the description of the NetworkConfig object
* Replaced outdated DHCPv6 bibref by latest RFC
* Added Reset() command to various interface stats objects
* Promoted some readOnly parameters to readWrite
* Added source and dest port ranges to more firewall objects
* Added success and failure counters to IEEE802.1x supplicant stats
* Added 3GPP-NAS auto configuration type to various enumerations
* Added RemainingLeastTime to port-mapping objects
* Demoted a few readWrite objects to readOnly since they were never meant to be the former
* Added histogram mode to PeriodicSampling mechanism
* Added more informational parameters and ShutdownDelay as well as user configuration to SMM DUs
* Added system capabilities configuration to Users
* Changed parameter type of some Wi-Fi timestamps from string to datetime
* Clarified the credentials allowed usages
* Added UUID, Version, and ExecEnvRef as output arguments to the InstallDU() command
* Adjusted indentation to fix rendering issues
* Added missing Alias keys throughout the data model
* Removed some inappropriate dmr:noUniqueKeys annotations

## 2024-01-18: [TR-181 Issue 2 Amendment 17]

*Tags: [v2.17.0] (TR-181),
[v1.11.0][TR-106-v1.11.0] (TR-106 didn't change)*
[v1.13.0][TR-106-v1.13.0] (TR-106)*

### TR-181 Document
* Refreshed some data model diagrams
Expand All @@ -27,8 +78,8 @@ current TR-181 specification.
to be used by the DNS forwarders
* Added new InterfaceSetting object to Device.Firewall.
* Added ModuleVersion parameter to InstallDU() and Update() commands
* Added Origin parameter to PinHole, PortMapping and AccesssControl
* Added PhysAddresMask parameter to AccessControl
* Added Origin parameter to PinHole, PortMapping and AccessControl
* Added PhysAddressMask parameter to AccessControl
* Added LeaseDuration and RemainLeaseTime parameters to the DMZ and Pinhole objects
* Added Device.Firewall.ConnectionTracking. object tree to configure ALGs
* Added missing DSL xTU-C and xTU-R parameters to DSL objects
Expand Down Expand Up @@ -59,7 +110,7 @@ current TR-181 specification.
## 2023-06-14: [TR-181 Issue 2 Amendment 16]

*Tags: [v2.16.0] (TR-181),
[v1.11.0][TR-106-v1.11.0] (TR-106 didn't change)*
[v1.12.0][TR-106-v1.12.0] (TR-106)*

### TR-181 Document
* Refreshed all diagrams
Expand Down Expand Up @@ -493,6 +544,9 @@ Incorporated new components from TR-157 Amendment 4
* Minor clarifications and additions

[TR-106-v1.11.0]: https://github.com/BroadbandForum/data-model-template/releases/tag/v1.11.0
[TR-106-v1.12.0]: https://github.com/BroadbandForum/data-model-template/releases/tag/v1.12.0
[TR-106-v1.13.0]: https://github.com/BroadbandForum/data-model-template/releases/tag/v1.13.0
[TR-106-v1.14.0]: https://github.com/BroadbandForum/data-model-template/releases/tag/v1.14.0
[TR-157 Amendment 10]: https://www.broadband-forum.org/download/TR-157_Amendment-10.pdf
[TR-157 Amendment 5]: https://www.broadband-forum.org/download/TR-157_Amendment-5.pdf
[TR-181 Issue 1]: https://www.broadband-forum.org/download/TR-181_Issue-1.pdf
Expand All @@ -505,6 +559,7 @@ Incorporated new components from TR-157 Amendment 4
[TR-181 Issue 2 Amendment 15]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-15.pdf
[TR-181 Issue 2 Amendment 16]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-16.pdf
[TR-181 Issue 2 Amendment 17]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-17.pdf
[TR-181 Issue 2 Amendment 18]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-18.pdf
[TR-181 Issue 2 Amendment 2]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-2.pdf
[TR-181 Issue 2 Amendment 5]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-5.pdf
[TR-181 Issue 2 Amendment 6]: https://www.broadband-forum.org/download/TR-181_Issue-2_Amendment-6.pdf
Expand Down Expand Up @@ -541,3 +596,4 @@ Incorporated new components from TR-157 Amendment 4
[v2.15.1]: https://github.com/BroadbandForum/device-data-model/releases/tag/v2.15.1
[v2.16.0]: https://github.com/BroadbandForum/device-data-model/releases/tag/v2.16.0
[v2.17.0]: https://github.com/BroadbandForum/device-data-model/releases/tag/v2.17.0
[v2.18.0]: https://github.com/BroadbandForum/device-data-model/releases/tag/v2.18.0
64 changes: 59 additions & 5 deletions PROJECT.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,60 @@ resources:
resname: Device

versions:
v2.18.0:
date: 2024-07-23
depends-on:
WT-106: v1.14.0
changes:
specification: |
* Fixed logical interface table
* Added ToO chapter about network interface MTU
* Manually resized diagrams to look nice
* Updated all generated diagrams
data-model: |
* Added more counter types to IoT
* Improved MoCA network state parameter descriptions
* Added new parameter to support VLAN priority
* Added new parameter to indicate the used Ethernet duplex mode
* Improved example Ethernet PHY types by using more commonly used types
* Added new parameter to control the sending of ARP messages on an Ethernet link
* Corrected access type of multiple parameters
* Added new parameters for IP based access control in HTTP access
* Added new parameter to configure the MTU on an Ethernet link
* Added new parameter to link a USPService to an ExecutionUnit providing it
* Extended size of various QoS parameter types from 32 bits to 64 bits types
* Added new parameter to control filtering of ICMPv6 packets
* Changed one more missed parameter from hidden to secured
* Added new parameters to control DHCP retransmission/retry behavior
* Removed some dmr:fixedObject attributes from non-fixed objects
* Added Device.Schedules. mechanism to define time-based schedules for services to use
* Added new parameters indicate the reason for a device reboot
* Added new parameters to configure and check the Ethernet MDIX mode
* Deprecated a decent number of MultiAP commands and parameters due to being supported in DataElements
* Refactored many Interface and Link objects, parameters and commands into components for deduplication
* Refactored and improved the description of the NetworkConfig object
* Replaced outdated DHCPv6 bibref by latest RFC
* Added Reset() command to various interface stats objects
* Promoted some readOnly parameters to readWrite
* Added source and dest port ranges to more firewall objects
* Added success and failure counters to IEEE802.1x supplicant stats
* Added 3GPP-NAS auto configuration type to various enumerations
* Added RemainingLeastTime to port-mapping objects
* Demoted a few readWrite objects to readOnly since they were never meant to be the former
* Added histogram mode to PeriodicSampling mechanism
* Added more informational parameters and ShutdownDelay as well as user configuration to SMM DUs
* Added system capabilities configuration to Users
* Changed parameter type of some Wi-Fi timestamps from string to datetime
* Clarified the credentials allowed usages
* Added UUID, Version, and ExecEnvRef as output arguments to the InstallDU() command
* Adjusted indentation to fix rendering issues
* Added missing Alias keys throughout the data model
* Removed some inappropriate dmr:noUniqueKeys annotations
v2.17.0:
date: 2024-01-18
depends-on:
WT-106: v1.13.0
changes:
specification: |
* Refreshed some data model diagrams
Expand All @@ -58,8 +110,8 @@ versions:
to be used by the DNS forwarders
* Added new InterfaceSetting object to Device.Firewall.
* Added ModuleVersion parameter to InstallDU() and Update() commands
* Added Origin parameter to PinHole, PortMapping and AccesssControl
* Added PhysAddresMask parameter to AccessControl
* Added Origin parameter to PinHole, PortMapping and AccessControl
* Added PhysAddressMask parameter to AccessControl
* Added LeaseDuration and RemainLeaseTime parameters to the DMZ and Pinhole objects
* Added Device.Firewall.ConnectionTracking. object tree to configure ALGs
* Added missing DSL xTU-C and xTU-R parameters to DSL objects
Expand Down Expand Up @@ -89,6 +141,8 @@ versions:
v2.16.0:
date: 2023-06-14
depends-on:
WT-106: v1.12.0
changes:
specification: |
* Refreshed all diagrams
Expand Down Expand Up @@ -575,7 +629,7 @@ versions:
# Work Area Directors
WADs:
- Jason Walls, QA Cafe
- John Blackford, CommScope
- John Blackford, Vantiva

# Project Stream Leaders
PSLs:
Expand All @@ -597,12 +651,12 @@ acknowledgments:
- David Cluytens, Orange
- Jason Walls, QA Cafe
- Johan Jacobs, Orange
- John Blackford, Commscope
- John Blackford, Vantiva
- Ken Kerpez, DZS
- Laurent Alarcon, Sagemcom
- Matthieu Anne, Orange
- Patrick Rogier, Orange
- Ramesh Rajasekaran, Nokia
- Richard Holme, Commscope
- Richard Holme, Vantiva
- Tim Spets, Nokia
- William Lupton, BBF
129 changes: 29 additions & 100 deletions bin/use-alias-component.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

"""Edit an XML file to use the Alias component.
** UPDATED APRIL 2024 to use replace Alias-1-0 and Alias-2-0 with Alias **
(Based on edit-file-headers.py.)
The changes are illustrated by the tr-181-2-atm.xml diffs shown below:
Expand Down Expand Up @@ -98,30 +100,19 @@
spec_regex = re.compile(r'(.*spec\s*=\s*"urn:[^:]+:tr-181-2-)(\d+-\d+)(.+)',
re.S)
file_regex = re.compile(r'(.*file\s*=\s*"tr-181-2-)(\d+-\d+)(.+)', re.S)
import_regex = re.compile(r'(\s*)(<dataType\s+name="Alias"'
r'(?:\s+ref="_AliasCommon")?/>)(.+)', re.S)

object_open_regex = re.compile(r'(\s*<object\s+name\s*=\s*")([^"]+)(".+)',
re.S)
object_version_regex = re.compile(r'(.*version\s*=\s*")([^"]+)(".+)', re.S)
object_close_regex = re.compile(r'(.*)(>)(\s+)', re.S)

alias_open_regex = re.compile(r'(\s*)(<parameter\s+name="Alias"\s+access=")'
r'(\w+)(".+)', re.S)
alias_version_regex = re.compile(r'(.*version\s*=\s*")([^"]+)(".+)', re.S)
alias_descr_regex = re.compile(r'(\s*)({{datatype\|expand}}.+)', re.S)
alias_close_regex = re.compile(r'(\s*)(</parameter>)(.+)', re.S)

alias_prof_regex = re.compile(r'(\s*<parameter\s+ref="Alias"\s+'
r'requirement=")(readWrite)("/>.+)', re.S)

import_regex = re.compile(r'(\s*)(<component\s+name="Alias[^"]*"/>)(.+)', re.S)
ref_regex = re.compile(r'(\s*)(<component\s+ref=")(Alias[^"]*)(".+)',
re.S)

model_regex = re.compile(r'(\s*<model\s+name="[^:]+:2\.)(\d+)(">.+)', re.S)

# these could be command-line arguments
copyright_year = '2023'
amend = '17'
copyright_year = '2024'
amend = '18'
amend_corr = '%s-0' % amend
import_comp = '<component name="Alias-2-0"/>'
ref_comp = '<component ref="Alias-2-0"%s/>' # version is substituted
import_comp = '<component name="Alias"/>'
ref_comp = '<component ref="Alias"/>'
param_access = 'readWrite'
prof_req = 'writeOnceReadOnly'

Expand All @@ -139,22 +130,23 @@ def main(argv=None):
lines = open(file).readlines()

# if nothing matches the Alias import regex there's nothing to be done
do_nothing = not any(import_regex.match(line) for line in lines)
if do_nothing:
not_imported = not any(import_regex.match(line) for line in lines)
if not_imported:
logger.info('%s: no Alias import; nothing to be done' % base)

state = 'outer'
seen_alias_descr = False
object_name = None
object_version = None
alias_version = None
# check whether the import is used
not_referenced = not any(ref_regex.match(line) for line in lines)
if not not_imported and not_referenced:
logger.warning('%s: no Alias references; should remove the import' %
base)

for line in lines:
ignore = False

if do_nothing:
if not_imported:
pass

elif state == 'outer':
else:
# update the copyright year
if match := copyright_regex.match(line):
prefix, year, suffix = match.groups()
Expand All @@ -181,49 +173,21 @@ def main(argv=None):
logger.info('%s: file %s -> %s' % (base, version,
amend_corr))

# replace the Alias data type import with the Alias-2-0
# component import
# replace the Alias-2-0 component import with Alias
if match := import_regex.match(line):
prefix, entity, suffix = match.groups()
if entity != import_comp:
line = '%s%s%s' % (prefix, import_comp, suffix)
logger.info('%s: import %s -> %s' % (base, entity,
import_comp))

# note object names and versions
if match := object_open_regex.match(line):
version, closed = None, None
_, name, _ = match.groups()
if name:
object_name = name
if match := object_version_regex.match(line):
_, version, _ = match.groups()
if match := object_close_regex.match(line):
_, closed, _ = match.groups()
if version:
object_version = version
if not closed:
state = 'object'

# look for Alias parameter definition
if match := alias_open_regex.match(line):
indent, prefix, access, suffix = match.groups()
if access != param_access:
logger.warning('%s: Alias access is unexpected %s' %
(base, access))
else:
ignore = True
state = 'alias'
alias_version = None
seen_alias_descr = False

# replace Alias profile readWrite requirements with
# writeOnceReadOnly
if match := alias_prof_regex.match(line):
prefix, req, suffix = match.groups()
if req != prof_req:
line = '%s%s%s' % (prefix, prof_req, suffix)
logger.info('%s: req %s -> %s' % (base, req, prof_req))
# replace the Alias-2-0 component reference with Alias
# (discard any attributes)
if match := ref_regex.match(line):
indent, prefix, name, suffix = match.groups()
if name == 'Alias-2-0':
line = '%s%sAlias"/>\n' % (indent, prefix)
logger.info('%s: reference Alias-2-0 -> Alias' % base)

# update the local model version
if match := model_regex.match(line):
Expand All @@ -232,41 +196,6 @@ def main(argv=None):
line = '%s%s%s' % (prefix, amend, suffix)
logger.info('%s: model %s -> %s' % (base, version, amend))

# capture object version (if not on the <object line)
elif state == 'object':
if match := object_version_regex.match(line):
_, version, _ = match.groups()
if version:
object_version = version
if match := object_close_regex.match(line):
_, closed, _ = match.groups()
state = 'outer'

# replace Alias parameter definition with Alias-2-0 component reference
elif state == 'alias':
ignore = True

if alias_descr_regex.match(line):
seen_alias_descr = True

if match := alias_version_regex.match(line):
alias_version = match.group(2)

if match := alias_close_regex.match(line):
if seen_alias_descr:
ignore = False
state = 'outer'
prefix, _, suffix = match.groups()
version = alias_version or object_version or ''
if version:
version = ' version="%s"' % version
line = '%s%s%s' % (prefix, ref_comp % version, suffix)
logger.info('%s: %s Alias -> %s' % (
base, object_name, ref_comp % version))

else:
logger.error('invalid state %r' % state)

if loglevel != logging.INFO and not ignore:
sys.stdout.write(line)

Expand Down
Loading

0 comments on commit 818487c

Please sign in to comment.