This is based on the patches submitted by Matthew Bowman: http://patchwork.openwrt.org/patch/1258/ http://patchwork.openwrt.org/patch/1261/
More recently hostapd has added support for setting the VLAN naming scheme (eth0.11 vs. vlan11), in commit a00237ceb8644fc270efd9fc0d0f8d0465db8410 upstream. So the updated patch (620-dynamic_vlan-correct_bridge_interface_names.patch) only corrects the bridge interface names (br-vlan11 vs. brvlan11). Rather than shipping a default hostapd VLAN file, one is created at runtime based on the wi-fi ifname. Should this be accepted (hopefully!), I suppose the additional UCI options would need to be documented; on the wiki? where else? Signed-off-by: Zenon Mousmoulas <[email protected]> --- package/network/services/hostapd/files/hostapd.sh | 17 +++++++++++++++++ ...namic_vlan-correct_bridge_interface_names.patch | 20 ++++++++++++++++++++ 2 files changed, 37 insertions(+), 0 deletions(-) create mode 100644 package/network/services/hostapd/patches/620-dynamic_vlan-correct_bridge_interface_names.patch diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh index d60c26f..a462fe2 100644 --- a/package/network/services/hostapd/files/hostapd.sh +++ b/package/network/services/hostapd/files/hostapd.sh @@ -2,6 +2,7 @@ hostapd_set_bss_options() { local var="$1" local vif="$2" local enc wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wps_possible + local vlan_enable ifname vlan_file vlan_interface vlan_naming config_get enc "$vif" encryption config_get wep_rekey "$vif" wep_rekey # 300 @@ -112,6 +113,22 @@ hostapd_set_bss_options() { [ -n "$wpa_group_rekey" ] && append "$var" "wpa_group_rekey=$wpa_group_rekey" "$N" [ -n "$wpa_pair_rekey" ] && append "$var" "wpa_ptk_rekey=$wpa_pair_rekey" "$N" [ -n "$wpa_master_rekey" ] && append "$var" "wpa_gmk_rekey=$wpa_master_rekey" "$N" + config_get vlan_enable "$vif" vlan_enable 0 + case "$vlan_enable" in + 1|2) + append "$var" "dynamic_vlan=$vlan_enable" "$N" + config_get ifname "$vif" ifname + config_get vlan_file "$vif" vlan_file "/var/run/hostapd.${ifname}.vlan" + [ "$vlan_file" = "/var/run/hostapd.${ifname}.vlan" ] && cat > "$vlan_file" <<-EOF + * ${ifname}.# + EOF + append "$var" "vlan_file=$vlan_file" "$N" + config_get vlan_interface "$vif" vlan_interface eth0 + append "$var" "vlan_tagged_interface=$vlan_interface" "$N" + config_get vlan_naming "$vif" vlan_naming 1 + append "$var" "vlan_naming=$vlan_naming" "$N" + ;; + esac ;; *wep*) config_get key "$vif" key diff --git a/package/network/services/hostapd/patches/620-dynamic_vlan-correct_bridge_interface_names.patch b/package/network/services/hostapd/patches/620-dynamic_vlan-correct_bridge_interface_names.patch new file mode 100644 index 0000000..ff87d3d --- /dev/null +++ b/package/network/services/hostapd/patches/620-dynamic_vlan-correct_bridge_interface_names.patch @@ -0,0 +1,20 @@ +--- a/src/ap/vlan_init.c 2012-10-14 22:30:08.000000000 +0300 ++++ b/src/ap/vlan_init.c 2012-10-14 23:51:12.000000000 +0300 +@@ -493,7 +493,7 @@ + while (vlan) { + if (os_strcmp(ifname, vlan->ifname) == 0) { + +- os_snprintf(br_name, sizeof(br_name), "brvlan%d", ++ os_snprintf(br_name, sizeof(br_name), "br-vlan%d", + vlan->vlan_id); + + if (!br_addbr(br_name)) +@@ -550,7 +550,7 @@ + + while (vlan) { + if (os_strcmp(ifname, vlan->ifname) == 0) { +- os_snprintf(br_name, sizeof(br_name), "brvlan%d", ++ os_snprintf(br_name, sizeof(br_name), "br-vlan%d", + vlan->vlan_id); + + if (vlan->clean & DVLAN_CLEAN_WLAN_PORT) _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
