This avoids leaking file descriptors and potential deadlock in case
the command fills the pipe. Output is sent to /dev/null and dmcmd will
return the exit status instead of a file descriptor.
- Fix all errors catched by cppcheck threadsafety (cppcheck --error-exitcode=0 --addon=threadsafety bbf)
- Fix some errors catched by cppcheck cert (cppcheck --error-exitcode=0 --addon=cert bbf)
- Add new str-protected macros instead of using str functions directly to avoid crashes
- Don't create a network interface when adding a new 'DHCPv4.Client.' instance, therefore the network interface will only be managed with 'Device.IP.Interface.' object
- Fix get/set of LeaseTime, StaticAddressNumberOfEntries parameters
- Fix an issue in add object of DHCPv4.Server.Pool.{i}. object
- enhance get/set of some parameters: Enable, Status, SubnetMask, DomainName, IPRouters. so get the value from data instead of the mapping for all the sections and get the corresponding section based on its section name
Fix multiple issues in StaticAddress implementation
- "StaticAddress.{i}.Yiaddr" accepting any IP address -> According to standard, It should accept IP address from DHCP IP pool
- Same IP address can be assigned to multiple MAC address -> According to standard, Once a IP got bind to a MAC, it should not get bind to other MAC
- Able to create multiple entry for same MAC -> According to standard, It should accept only one entry for one MAC
- Able to create multiple object with same Alias -> According to standard, Alias should be unique
- remove unused argument from dmuci_add_section() and dmuci_add_section_bbfdm() functions
- use snprintf instead of dmasptintf
- change function name: add_list_paramameter -> add_list_parameter
Fix Get/Set value of these parameters which has a hexbinary encoded value according to the TR-181 standard
- Device.DHCPv4.Server.Pool.{i}.Option.{i}.Value
- Device.DHCPv4.Client.{i}.SentOption.{i}.Value
- Device.DHCPv4.Relay.Forwarding.{i}.UserClassID
- Device.DHCPv6.Server.Pool.{i}.VendorClassID
- Device.DHCPv6.Server.Pool.{i}.UserClassID
- Device.DHCPv6.Server.Pool.{i}.Option.{i}.Value