Age | Commit message (Collapse) | Author |
|
(cherry picked from commit 489e6fababa60d9c0fbfdb421305cbe563432499)
# Conflicts:
# src/migration-scripts/dhcp-server/9-to-10
# src/migration-scripts/dhcpv6-server/3-to-4
|
|
The current op-mode script simply calls sudo systemctl restart "dhclient@$4.service"
with no additional information about a client interface at all.
This results in useless dhclient processes
root 47812 4.7 0.0 5848 3584 ? Ss 00:30 0:00 /sbin/dhclient -4 -d
root 48121 0.0 0.0 4188 3072 ? S 00:30 0:00 \_ /bin/sh /sbin/dhclient-script
root 48148 50.0 0.2 18776 11264 ? R 00:30 0:00 \_ python3 -
Which also assign client leases to all local interfaces, if we receive one
valid DHCPOFFER
vyos@vyos:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address MAC VRF MTU S/L Description
----------- ----------------- ----------------- ------- ----- ----- -------------
eth0 - 00:50:56:bf:c5:6d default 1500 u/u
eth0.10 172.16.33.102/24 00:50:56:bf:c5:6d default 1500 u/u
eth1 172.16.33.131/24 00:50:56:b3:38:c5 default 1500 u/u
172.16.33.102/24 and 172.16.33.131/24 are stray DHCP addresses.
This commit moved the renew command to the DHCP op-mode script to properly
validate if the interface we request a renew for, has actually a dhcp address
configured. In additional this exposes the renew feature to the API.
(cherry picked from commit 7dbaa25a199a781aaa9f269741547e576410cb11)
|
|
does not show any result
|
|
(cherry picked from commit 57761a370d2217eeb79827e8c20384f6de649c66)
|
|
*pool* empty, this means that lease was granted by fail-over server. Also fix issue that <show dhcp server leases state all> print nothing.
(cherry picked from commit da83b3f96dcedaa8e4d926d9f5bdc963abd9a813)
|
|
Fix helpers was moved to vyos.utils package
Fix empty new address from the lease file causes
OSError: illegal IP address string passed to inet_pton
|
|
|
|
Multiple scripts use the same hardcoded path for DHCP client leases in
different direcotries - this can't be worse.
|
|
ISC dhcp client contains least_update timestamp in human readable format this
makes less sense for an API and also the expiry timestamp is provided in UNIX
time. Convert string (e.g. Sun Jul 30 18:13:44 CEST 2023) to UNIX time (1690733624)
vyos@vyos:~$ ${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet --interface eth0.10
Interface eth0.10
IP address 172.16.33.123 [Active]
Subnet Mask 255.255.255.0
Domain Name vyos.net
Router 172.16.33.254
Name Server 172.16.254.30
DHCP Server 172.16.33.254
DHCP Server 86400
Last Update Sun Jul 30 18:13:44 CEST 2023
Expiry Mon Jul 31 18:13:43 CEST 2023
vyos@vyos:~$ ${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet --interface eth0.10 --raw
[
{
"last_update": 1690733624,
"reason": "RENEW",
"interface": "eth0.10",
"new_expiry": "1690820023",
"new_dhcp_lease_time": "86400",
"medium": "",
"alias_ip_address": "",
"new_ip_address": "172.16.33.123",
"new_broadcast_address": "172.16.33.255",
"new_subnet_mask": "255.255.255.0",
"new_domain_name": "vyos.net",
"new_network_number": "172.16.33.0",
"new_domain_name_servers": "172.16.254.30",
"new_routers": "172.16.33.254",
"new_static_routes": "",
"new_dhcp_server_identifier": "172.16.33.254",
"new_dhcp_message_type": "5",
"old_ip_address": "172.16.33.123",
"old_subnet_mask": "255.255.255.0",
"old_domain_name": "vyos.net",
"old_domain_name_servers": "172.16.254.30",
"old_routers": "172.16.33.254",
"old_static_routes": ""
}
]
|
|
vyos@vyos# ${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet --interface eth0.10
Interface eth0.10
IP address 172.16.33.123 [Active]
Subnet Mask 255.255.255.0
Domain Name vyos.net
Router 172.16.33.254
Name Server 172.16.254.30
DHCP Server 172.16.33.254
DHCP Server 86400
Last Update Sat Jul 29 21:13:32 CEST 2023
Expiry Sun Jul 30 21:13:31 CEST 2023
vyos@vyos# ${vyos_op_scripts_dir}/dhcp.py show_client_leases --family inet --interface eth0.10 --raw
[
{
"last_update": "Sat Jul 29 21:13:32 CEST 2023",
"reason": "BOUND",
"interface": "eth0.10",
"new_expiry": "1690744411",
"new_dhcp_lease_time": "86400",
"medium": "",
"alias_ip_address": "",
"new_ip_address": "172.16.33.123",
"new_broadcast_address": "172.16.33.255",
"new_subnet_mask": "255.255.255.0",
"new_domain_name": "vyos.net",
"new_network_number": "172.16.33.0",
"new_domain_name_servers": "172.16.254.30",
"new_routers": "172.16.33.254",
"new_static_routes": "",
"new_dhcp_server_identifier": "172.16.33.254",
"new_dhcp_message_type": "5",
"old_ip_address": "",
"old_subnet_mask": "",
"old_domain_name": "",
"old_domain_name_servers": "",
"old_routers": "",
"old_static_routes": ""
}
]
|
|
* T5195: move run, cmd, call, rc_cmd helper to vyos.utils.process
* T5195: use read_file and write_file implementation from vyos.utils.file
Changed code automatically using:
find . -type f -not -path '*/\.*' -exec sed -i 's/^from vyos.util import read_file$/from vyos.utils.file import read_file/g' {} +
find . -type f -not -path '*/\.*' -exec sed -i 's/^from vyos.util import write_file$/from vyos.utils.file import write_file/g' {} +
* T5195: move chmod* helpers to vyos.utils.permission
* T5195: use colon_separated_to_dict from vyos.utils.dict
* T5195: move is_systemd_service_* to vyos.utils.process
* T5195: fix boot issues with missing imports
* T5195: move dict_search_* helpers to vyos.utils.dict
* T5195: move network helpers to vyos.utils.network
* T5195: move commit_* helpers to vyos.utils.commit
* T5195: move user I/O helpers to vyos.utils.io
|
|
The operational command "show dhcpv6 server leases" shows a warning message e
ven if dhcpv6 setting are configured and ipv6 address
got assigned to clients.
|
|
With long lease time for example lease '4294967295' seconds
it is impossible to get end lease as value is 'ends never;'
It cause error to get timestamp() from 'ends never' and remaining
time 'lease.end - datetime.utcnow()'
Set default remaining and end lease to '-' if we cannot get this
info
|
|
|
|
script
Sorting DHCP pools and filtering for state can now be done using the new op-mode
mode scripts in DHCP. This allows us to drop the old helpers show_dhcp.py and
show_dhcpv6.py.
|
|
Rewrite op-mode DHCP and DHCPv6 leases to vyos.opmode format
Abbility to show 'raw' format
show dhcp server leases
show dhcpv6 server leases
|