Skip to content

Commit 899b0a4

Browse files
committed
Merge remote-tracking branch 'vyos/current' into feature/dhcpv4-ddns
2 parents 8756d20 + 2ad3c28 commit 899b0a4

File tree

169 files changed

+6251
-2491
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

169 files changed

+6251
-2491
lines changed

Diff for: .github/workflows/package-smoketest.yml

+38-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ env:
1717
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for PR comments
1818
1919
DEBIAN_MIRROR: http://deb.debian.org/debian/
20-
VYOS_MIRROR: https://rolling-packages.vyos.net/current/
20+
VYOS_MIRROR: https://packages.vyos.net/repositories/current/
2121

2222
jobs:
2323
build_iso:
@@ -83,12 +83,43 @@ jobs:
8383
with:
8484
name: vyos-${{ needs.build_iso.outputs.build_version }}
8585
path: build
86-
- name: VyOS CLI smoketests
86+
- name: VyOS CLI smoketests (no interfaces)
8787
id: test
8888
shell: bash
8989
run: |
9090
set -e
91-
sudo make test
91+
sudo make test-no-interfaces
92+
if [[ $? == 0 ]]; then
93+
echo "exit_code=success" >> $GITHUB_OUTPUT
94+
else
95+
echo "exit_code=fail" >> $GITHUB_OUTPUT
96+
fi
97+
98+
test_interfaces_cli:
99+
needs: build_iso
100+
runs-on: ubuntu-24.04
101+
timeout-minutes: 180
102+
container:
103+
image: vyos/vyos-build:current
104+
options: --sysctl net.ipv6.conf.lo.disable_ipv6=0 --privileged
105+
outputs:
106+
exit_code: ${{ steps.test.outputs.exit_code }}
107+
steps:
108+
# We need the test script from vyos-build repo
109+
- name: Clone vyos-build source code
110+
uses: actions/checkout@v4
111+
with:
112+
repository: vyos/vyos-build
113+
- uses: actions/download-artifact@v4
114+
with:
115+
name: vyos-${{ needs.build_iso.outputs.build_version }}
116+
path: build
117+
- name: VyOS CLI smoketests (interfaces only)
118+
id: test
119+
shell: bash
120+
run: |
121+
set -e
122+
sudo make test-interfaces
92123
if [[ $? == 0 ]]; then
93124
echo "exit_code=success" >> $GITHUB_OUTPUT
94125
else
@@ -191,6 +222,7 @@ jobs:
191222
result:
192223
needs:
193224
- test_smoketest_cli
225+
- test_interfaces_cli
194226
- test_config_load
195227
- test_raid1_install
196228
- test_encrypted_config_tpm
@@ -203,13 +235,14 @@ jobs:
203235
uses: mshick/add-pr-comment@v2
204236
with:
205237
message: |
206-
CI integration ${{ needs.test_smoketest_cli.outputs.exit_code == 'success' && needs.test_config_load.outputs.exit_code == 'success' && needs.test_raid1_install.outputs.exit_code == 'success' && '👍 passed!' || '❌ failed!' }}
238+
CI integration ${{ needs.test_smoketest_cli.outputs.exit_code == 'success' && needs.test_interfaces_cli.outputs.exit_code == 'success' && needs.test_config_load.outputs.exit_code == 'success' && needs.test_raid1_install.outputs.exit_code == 'success' && '👍 passed!' || '❌ failed!' }}
207239
208240
### Details
209241
210242
[CI logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
211243
212-
* CLI Smoketests ${{ needs.test_smoketest_cli.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}
244+
* CLI Smoketests (no interfaces) ${{ needs.test_smoketest_cli.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}
245+
* CLI Smoketests (interfaces only) ${{ needs.test_interfaces_cli.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}
213246
* Config tests ${{ needs.test_config_load.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}
214247
* RAID1 tests ${{ needs.test_raid1_install.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}
215248
* TPM tests ${{ needs.test_encrypted_config_tpm.outputs.exit_code == 'success' && '👍 passed' || '❌ failed' }}

Diff for: .github/workflows/repo-sync.yml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ on:
66
- closed
77
branches:
88
- current
9+
- equuleus
910
workflow_dispatch:
1011

1112
jobs:

Diff for: Jenkinsfile

-23
This file was deleted.

Diff for: data/config-mode-dependencies/vyos-1x.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
"pki": {
2727
"ethernet": ["interfaces_ethernet"],
2828
"openvpn": ["interfaces_openvpn"],
29+
"haproxy": ["load-balancing_haproxy"],
2930
"https": ["service_https"],
3031
"ipsec": ["vpn_ipsec"],
3132
"openconnect": ["vpn_openconnect"],
32-
"reverse_proxy": ["load-balancing_reverse-proxy"],
3333
"rpki": ["protocols_rpki"],
3434
"sstp": ["vpn_sstp"],
3535
"sstpc": ["interfaces_sstpc"],

Diff for: data/op-mode-standardized.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"otp.py",
2626
"qos.py",
2727
"reset_vpn.py",
28-
"reverseproxy.py",
28+
"load-balancing_haproxy.py",
2929
"route.py",
3030
"storage.py",
3131
"system.py",

Diff for: data/templates/accel-ppp/ipoe.config.j2

+5-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ level={{ log.level }}
3838

3939
[ipoe]
4040
verbose=1
41+
{% if lua_file is vyos_defined %}
42+
lua-file={{ lua_file }}
43+
{% endif %}
4144
{% if interface is vyos_defined %}
4245
{% for iface, iface_config in interface.items() %}
4346
{% set tmp = 'interface=' %}
@@ -55,7 +58,8 @@ verbose=1
5558
{% set range = 'range=' ~ iface_config.client_subnet ~ ',' if iface_config.client_subnet is vyos_defined else '' %}
5659
{% set relay = ',' ~ 'relay=' ~ iface_config.external_dhcp.dhcp_relay if iface_config.external_dhcp.dhcp_relay is vyos_defined else '' %}
5760
{% set giaddr = ',' ~ 'giaddr=' ~ iface_config.external_dhcp.giaddr if iface_config.external_dhcp.giaddr is vyos_defined else '' %}
58-
{{ tmp }},{{ shared }}mode={{ iface_config.mode | upper }},ifcfg=1,{{ range }}start=dhcpv4,ipv6=1{{ relay }}{{ giaddr }}
61+
{% set username = ',' ~ 'username=lua:' ~ iface_config.lua_username if iface_config.lua_username is vyos_defined else '' %}
62+
{{ tmp }},{{ shared }}mode={{ iface_config.mode | upper }},ifcfg=1,{{ range }}start=dhcpv4,ipv6=1{{ relay }}{{ giaddr }}{{ username }}
5963
{% if iface_config.vlan_mon is vyos_defined %}
6064
vlan-mon={{ iface }},{{ iface_config.vlan | join(',') }}
6165
{% endif %}

Diff for: data/templates/dhcp-server/kea-dhcp4.conf.j2

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"interfaces": [ "*" ],
1212
"dhcp-socket-type": "raw",
1313
{% endif %}
14-
"service-sockets-max-retries": 5,
14+
"service-sockets-max-retries": 60,
1515
"service-sockets-retry-wait-time": 5000
1616
},
1717
"control-socket": {
@@ -29,14 +29,14 @@
2929
"code": 121,
3030
"type": "record",
3131
"array": true,
32-
"record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8"
32+
"record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8"
3333
},
3434
{
3535
"name": "windows-static-route",
3636
"code": 249,
3737
"type": "record",
3838
"array": true,
39-
"record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8"
39+
"record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8"
4040
},
4141
{
4242
"name": "wpad-url",

Diff for: data/templates/dhcp-server/kea-dhcp6.conf.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{% else %}
77
"interfaces": [ "*" ],
88
{% endif %}
9-
"service-sockets-max-retries": 5,
9+
"service-sockets-max-retries": 60,
1010
"service-sockets-retry-wait-time": 5000
1111
},
1212
"control-socket": {

Diff for: data/templates/firewall/nftables-nat.j2

+13
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ table ip vyos_nat {
1919
{% endfor %}
2020
{% endif %}
2121
}
22+
{% for set_name in ip_fqdn %}
23+
set FQDN_nat_{{ set_name }} {
24+
type ipv4_addr
25+
flags interval
26+
}
27+
{% endfor %}
2228

2329
#
2430
# Source NAT rules build up here
@@ -31,7 +37,14 @@ table ip vyos_nat {
3137
{{ config | nat_rule(rule, 'source') }}
3238
{% endfor %}
3339
{% endif %}
40+
41+
}
42+
{% for set_name in ip_fqdn %}
43+
set FQDN_nat_{{ set_name }} {
44+
type ipv4_addr
45+
flags interval
3446
}
47+
{% endfor %}
3548

3649
chain VYOS_PRE_DNAT_HOOK {
3750
return

Diff for: data/templates/frr_exporter/frr_exporter.service.j2

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{% set vrf_command = 'ip vrf exec ' ~ vrf ~ ' runuser -u frr -- ' if vrf is vyos_defined else '' %}
2+
[Unit]
3+
Description=FRR Exporter
4+
Documentation=https://github.com/tynany/frr_exporter
5+
After=network.target
6+
7+
[Service]
8+
{% if vrf is not vyos_defined %}
9+
User=frr
10+
{% endif %}
11+
ExecStart={{ vrf_command }}/usr/sbin/frr_exporter \
12+
{% if listen_address is vyos_defined %}
13+
{% for address in listen_address %}
14+
--web.listen-address={{ address }}:{{ port }}
15+
{% endfor %}
16+
{% else %}
17+
--web.listen-address=:{{ port }}
18+
{% endif %}
19+
[Install]
20+
WantedBy=multi-user.target

Diff for: data/templates/getty/serial-getty.service.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Before=rescue.service
2222
# The '-o' option value tells agetty to replace 'login' arguments with an
2323
# option to preserve environment (-p), followed by '--' for safety, and then
2424
# the entered username.
25-
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud {{ speed }} %I $TERM
25+
ExecStart=-/sbin/agetty -o '-p -- \\u' %I {{ speed }} $TERM
2626
Type=idle
2727
Restart=always
2828
UtmpIdentifier=%I

Diff for: data/templates/https/nginx.default.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ server {
4848
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
4949

5050
# proxy settings for HTTP API, if enabled; 503, if not
51-
location ~ ^/(retrieve|configure|config-file|image|import-pki|container-image|generate|show|reboot|reset|poweroff|docs|openapi.json|redoc|graphql) {
51+
location ~ ^/(retrieve|configure|config-file|image|import-pki|container-image|generate|show|reboot|reset|poweroff|traceroute|docs|openapi.json|redoc|graphql) {
5252
{% if api is vyos_defined %}
5353
proxy_pass http://unix:/run/api.sock;
5454
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Diff for: data/templates/ipsec/swanctl.conf.j2

+4
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@ secrets {
8787
id-{{ gen_uuid }} = "{{ id }}"
8888
{% endfor %}
8989
{% endif %}
90+
{% if psk_config.secret_type is vyos_defined('base64') %}
91+
secret = 0s{{ psk_config.secret }}
92+
{% elif psk_config.secret_type is vyos_defined('plaintext') %}
9093
secret = "{{ psk_config.secret }}"
94+
{% endif %}
9195
}
9296
{% endfor %}
9397
{% endif %}

Diff for: data/templates/load-balancing/haproxy.cfg.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### Autogenerated by load-balancing_reverse-proxy.py ###
1+
### Autogenerated by load-balancing_haproxy.py ###
22

33
global
44
chroot /var/lib/haproxy

Diff for: data/templates/login/motd_vyos_nonproduction.j2

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
---
3+
WARNING: This VyOS system is not a stable long-term support version and
4+
is not intended for production use.

Diff for: data/templates/mdns-repeater/avahi-daemon.conf.j2

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ allow-interfaces={{ interface | join(', ') }}
66
{% if browse_domain is vyos_defined and browse_domain | length %}
77
browse-domains={{ browse_domain | join(', ') }}
88
{% endif %}
9+
{% if cache_entries is vyos_defined %}
10+
cache-entries-max={{ cache_entries }}
11+
{% endif %}
912
disallow-other-stacks=no
1013

1114
[wide-area]
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{% set vrf_command = 'ip vrf exec ' ~ vrf ~ ' runuser -u node_exporter -- ' if vrf is vyos_defined else '' %}
2+
[Unit]
3+
Description=Node Exporter
4+
Documentation=https://github.com/prometheus/node_exporter
5+
After=network.target
6+
7+
[Service]
8+
{% if vrf is not vyos_defined %}
9+
User=node_exporter
10+
{% endif %}
11+
ExecStart={{ vrf_command }}/usr/sbin/node_exporter \
12+
{% if listen_address is vyos_defined %}
13+
{% for address in listen_address %}
14+
--web.listen-address={{ address }}:{{ port }}
15+
{% endfor %}
16+
{% else %}
17+
--web.listen-address=:{{ port }}
18+
{% endif %}
19+
[Install]
20+
WantedBy=multi-user.target

Diff for: data/templates/ocserv/radius_conf.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ authserver {{ authsrv }}
2222
{% endif %}
2323
{% endfor %}
2424
radius_timeout {{ authentication['radius']['timeout'] }}
25-
{% if source_address %}
25+
{% if authentication.radius.source_address is vyos_defined %}
2626
bindaddr {{ authentication['radius']['source_address'] }}
2727
{% else %}
2828
bindaddr *

Diff for: data/templates/rsyslog/rsyslog.conf.j2

-2
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ $outchannel {{ file_name }},/var/log/user/{{ file_name }},{{ file_options.archiv
5757
{% endfor %}
5858
{% endif %}
5959
{% if host_options.protocol is vyos_defined('tcp') %}
60-
{% if host_options.format.octet_counted is vyos_defined %}
6160
{{ tmp | join(';') }} @@{{ '(o)' if host_options.format.octet_counted is vyos_defined }}{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }}
62-
{% endif %}
6361
{% else %}
6462
{{ tmp | join(';') }} @{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }}
6563
{% endif %}

Diff for: debian/control

+8-2
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@ Depends:
202202
# For "service router-advert"
203203
radvd,
204204
# End "service route-advert"
205-
# For "load-balancing reverse-proxy"
205+
# For "load-balancing haproxy"
206206
haproxy,
207-
# End "load-balancing reverse-proxy"
207+
# End "load-balancing haproxy"
208208
# For "load-balancing wan"
209209
vyatta-wanloadbalance,
210210
# End "load-balancing wan"
@@ -235,6 +235,12 @@ Depends:
235235
squidclient,
236236
squidguard,
237237
# End "service webproxy"
238+
# For "service monitoring node-exporter"
239+
node-exporter,
240+
# End "service monitoring node-exporter"
241+
# For "service monitoring frr-exporter"
242+
frr-exporter,
243+
# End "service monitoring frr-exporter"
238244
# For "service monitoring telegraf"
239245
telegraf (>= 1.20),
240246
# End "service monitoring telegraf"

Diff for: debian/vyos-1x.install

+2
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ srv/localui
2525
usr/sbin
2626
usr/bin/config-mgmt
2727
usr/bin/initial-setup
28+
usr/bin/vyos-show-config
2829
usr/bin/vyos-config-file-query
2930
usr/bin/vyos-config-to-commands
3031
usr/bin/vyos-config-to-json
32+
usr/bin/vyos-commands-to-config
3133
usr/bin/vyos-hostsd-client
3234
usr/lib
3335
usr/libexec/vyos/activate

Diff for: debian/vyos-1x.postinst

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ if ! grep -q '^openvpn' /etc/passwd; then
2121
adduser --quiet --firstuid 100 --system --group --shell /usr/sbin/nologin openvpn
2222
fi
2323

24+
# node_exporter should get its own user
25+
if ! grep -q '^node_exporter' /etc/passwd; then
26+
adduser --quiet --firstuid 100 --system --group --shell /bin/false node_exporter
27+
fi
28+
2429
# We need to have a group for RADIUS service users to use it inside PAM rules
2530
if ! grep -q '^radius' /etc/group; then
2631
addgroup --firstgid 1000 --quiet radius

Diff for: interface-definitions/container.xml.in

+1
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,7 @@
501501
</properties>
502502
<children>
503503
#include <include/generic-description.xml.i>
504+
#include <include/interface/mtu-68-16000.xml.i>
504505
<leafNode name="prefix">
505506
<properties>
506507
<help>Prefix which allocated to that network</help>

0 commit comments

Comments
 (0)