diff --git a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/dialogEditFreeRADIUSUser.xml b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/dialogEditFreeRADIUSUser.xml
index c6f714a99..b92100f7a 100644
--- a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/dialogEditFreeRADIUSUser.xml
+++ b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/dialogEditFreeRADIUSUser.xml
@@ -35,6 +35,20 @@
text
Subnet to receive, e.g. 255.255.255.0
+
+ user.route
+
+
+ select_multiple
+ true
+ Add routes in CIDR notation, e.g. 192.168.2.0/24. Multiple entries are allowed
+
+
+ user.ip6
+
+ text
+ Set the IPv6 address the user should receive.
+
user.vlan
diff --git a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/User.xml b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/User.xml
index cc803cbb1..3951c3ab6 100644
--- a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/User.xml
+++ b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/User.xml
@@ -1,7 +1,7 @@
//OPNsense/freeradius/user
FreeRADIUS user configuration
- 1.0.0
+ 1.0.1
@@ -28,6 +28,13 @@
N
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
+
+ N
+ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2},)*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2})$/
+
+
+ N
+
N
1
diff --git a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/users b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/users
index 188af107f..2e9272f1d 100644
--- a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/users
+++ b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/users
@@ -5,19 +5,44 @@
{% if user_list.enabled == '1' %}
{{ user_list.username }} Cleartext-Password := "{{ user_list.password }}"{% if user_list.sessionlimit_max_session_limit is defined %}, Max-Daily-Session := {{ user_list.sessionlimit_max_session_limit }}{% endif %}
- Framed-Protocol = PPP{% if user_list.ip is defined %},
- Framed-IP-Address = {{ user_list.ip }}{% endif %}{% if user_list.subnet is defined %},
- Framed-IP-Netmask = {{ user_list.subnet }}{% endif %}{% if user_list.vlan is defined %},
+{% if user_list.ip is defined %}
+ Framed-IP-Address = {{ user_list.ip }},
+{% endif %}
+{% if user_list.subnet is defined %}
+ Framed-IP-Netmask = {{ user_list.subnet }},
+{% endif %}
+{% if user_list.route is defined %}
+{% for network in user_list.route.split(',') %}
+ Framed-Route += "{{ network }}",
+{% endfor %}
+{% endif %}
+{% if user_list.ip6 is defined %}
+ Framed-IPv6-Address = {{ user_list.ip6 }},
+{% endif %}
+{% if user_list.vlan is defined %}
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
- Tunnel-Private-Group-Id = {{ user_list.vlan }}{% endif %}{% if user_list.wispr_bw_min_up is defined %},
- WISPr-Bandwidth-Min-Up = {{ user_list.wispr_bw_min_up }}{% endif %}{% if user_list.wispr_bw_max_up is defined %},
- WISPr-Bandwidth-Max-Up = {{ user_list.wispr_bw_max_up }}{% endif %}{% if user_list.wispr_bw_min_down is defined %},
- WISPr-Bandwidth-Min-Down = {{ user_list.wispr_bw_min_down }}{% endif %}{% if user_list.wispr_bw_max_down is defined %},
- WISPr-Bandwidth-Max-Down = {{ user_list.wispr_bw_max_down }}{% endif %}{% if user_list.chillispot_bw_max_up is defined %},
- ChilliSpot-Bandwidth-Max-Up = {{ user_list.chillispot_bw_max_up }}{% endif %}{% if user_list.chillispot_bw_max_down is defined %},
- ChilliSpot-Bandwidth-Max-Down = {{ user_list.chillispot_bw_max_down }}
+ Tunnel-Private-Group-Id = {{ user_list.vlan }},
{% endif %}
+{% if user_list.wispr_bw_min_up is defined %}
+ WISPr-Bandwidth-Min-Up = {{ user_list.wispr_bw_min_up }},
+{% endif %}
+{% if user_list.wispr_bw_max_up is defined %}
+ WISPr-Bandwidth-Max-Up = {{ user_list.wispr_bw_max_up }},
+{% endif %}
+{% if user_list.wispr_bw_min_down is defined %}
+ WISPr-Bandwidth-Min-Down = {{ user_list.wispr_bw_min_down }},
+{% endif %}
+{% if user_list.wispr_bw_max_down is defined %}
+ WISPr-Bandwidth-Max-Down = {{ user_list.wispr_bw_max_down }},
+{% endif %}
+{% if user_list.chillispot_bw_max_up is defined %}
+ ChilliSpot-Bandwidth-Max-Up = {{ user_list.chillispot_bw_max_up }},
+{% endif %}
+{% if user_list.chillispot_bw_max_down is defined %}
+ ChilliSpot-Bandwidth-Max-Down = {{ user_list.chillispot_bw_max_down }},
+{% endif %}
+ Framed-Protocol = PPP
{% endif %}