Page MenuHomeVyOS Platform

show dhcpv6 server leases fails
Closed, ResolvedPublicBUG

Description

VyOS config:

set interfaces ethernet eth1 address '2001:db8::1/64'
set service dhcpv6-server shared-network-name LAN subnet 2001:db8::/64 prefix-delegation start 2001:db8:1:: prefix-length '60'
set service dhcpv6-server shared-network-name LAN subnet 2001:db8::/64 prefix-delegation start 2001:db8:1:: stop '2001:db8:1:fff0::'

Show leases:

vyos@server:~$ show dhcpv6 server leases 
Traceback (most recent call last):
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 427, in <module>
    res = vyos.opmode.run(sys.modules[__name__])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/vyos/opmode.py", line 263, in run
    res = func(**args)
          ^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 264, in _wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 317, in show_server_leases
    lease_data = _get_raw_server_leases(family=family, pool=pool, sorted=sorted, state=state, origin=origin)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 108, in _get_raw_server_leases
    data_lease['duid'] = _format_hex_string(lease.duid)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 54, in _format_hex_string
    out_str = ':'.join(a+b for a,b in zip(in_str[::2], in_str[1::2]))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, int found
vyos@server:~$

The leases file:

vyos@server:~$ cat /config/dhcpdv6.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.4.3-P1

# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;

server-duid "\000\001\000\001.>X\261\014\337l\370\000\001";

ia-pd "\036\000\000\000\000\0048\202l\266\345\257IJ\236c\245\212\000\204D\014" {
  cltt 4 2024/08/01 14:38:45;
  iaprefix 2001:db8:1:ffe0::/60 {
    binding state active;
    preferred-life 4294967295;
    max-life 4294967295;
    ends never;
    set shared-networkname = "LAN";
  }
}

server-duid "\000\001\000\001.>X\261\014\337l\370\000\001";

ia-pd "\036\000\000\000\000\0048\202l\266\345\257IJ\236c\245\212\000\204D\014" {
  cltt 4 2024/08/01 14:55:43;
  iaprefix 2001:db8:1:ffe0::/60 {
    binding state released;
    preferred-life 4294967295;
    max-life 4294967295;
    ends never;
  }
}

ia-pd "\036\000\000\000\000\0048\202l\266\345\257IJ\236c\245\212\000\204D\014" {
  cltt 4 2024/08/01 14:56:08;
  iaprefix 2001:db8:1:fff0::/60 {
    binding state active;
    preferred-life 4294967295;
    max-life 4294967295;
    ends never;
    set shared-networkname = "LAN";
  }
}

Details

Difficulty level
Normal (likely a few hours)
Version
VyOS 1.4.0
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)

Event Timeline

Viacheslav triaged this task as Normal priority.

With these changes https://github.com/vyos/vyos-1x/commit/253bf34371173e3cdd4871c18148ed75c3fa0832

vyos@server:~$ show dhcpv6 server leases 
Traceback (most recent call last):
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 438, in <module>
    res = vyos.opmode.run(sys.modules[__name__])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/vyos/opmode.py", line 263, in run
    res = func(**args)
          ^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 265, in _wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 322, in show_server_leases
    return _get_formatted_server_leases(lease_data, family=family)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 175, in _get_formatted_server_leases
    end =  _utc_to_local(end).strftime('%Y/%m/%d %H:%M:%S')
           ^^^^^^^^^^^^^^^^^^
  File "/usr/libexec/vyos/op_mode/dhcp.py", line 47, in _utc_to_local
    return datetime.fromtimestamp((datetime.fromtimestamp(utc_dt) - datetime(1970, 1, 1)).total_seconds())
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object cannot be interpreted as an integer
vyos@server:~$
natali-rs1985 changed the task status from Open to In progress.Fri, Sep 13, 12:50 PM
natali-rs1985 claimed this task.