hostapd: Support for overriding the bridge name per VLAN via vlan_file
This makes it easier to integrate dynamic VLANs in custom network configurations. The bridge name is added after the interface name in the vlan_file line, also separated by whitespace. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
d2b5138116
commit
4d663233e6
5 changed files with 26 additions and 8 deletions
|
@ -390,12 +390,16 @@ static void vlan_newlink_tagged(int vlan_naming, const char *tagged_interface,
|
|||
}
|
||||
|
||||
|
||||
static void vlan_bridge_name(char *br_name, struct hostapd_data *hapd, int vid)
|
||||
static void vlan_bridge_name(char *br_name, struct hostapd_data *hapd,
|
||||
struct hostapd_vlan *vlan, int vid)
|
||||
{
|
||||
char *tagged_interface = hapd->conf->ssid.vlan_tagged_interface;
|
||||
int ret;
|
||||
|
||||
if (hapd->conf->vlan_bridge[0]) {
|
||||
if (vlan->bridge[0]) {
|
||||
os_strlcpy(br_name, vlan->bridge, IFNAMSIZ);
|
||||
ret = 0;
|
||||
} else if (hapd->conf->vlan_bridge[0]) {
|
||||
ret = os_snprintf(br_name, IFNAMSIZ, "%s%d",
|
||||
hapd->conf->vlan_bridge, vid);
|
||||
} else if (tagged_interface) {
|
||||
|
@ -456,7 +460,7 @@ void vlan_newlink(const char *ifname, struct hostapd_data *hapd)
|
|||
!br_addif(hapd->conf->bridge, ifname))
|
||||
vlan->clean |= DVLAN_CLEAN_WLAN_PORT;
|
||||
} else if (untagged > 0 && untagged <= MAX_VLAN_ID) {
|
||||
vlan_bridge_name(br_name, hapd, untagged);
|
||||
vlan_bridge_name(br_name, hapd, vlan, untagged);
|
||||
|
||||
vlan_get_bridge(br_name, hapd, untagged);
|
||||
|
||||
|
@ -469,7 +473,7 @@ void vlan_newlink(const char *ifname, struct hostapd_data *hapd)
|
|||
tagged[i] <= 0 || tagged[i] > MAX_VLAN_ID ||
|
||||
(i > 0 && tagged[i] == tagged[i - 1]))
|
||||
continue;
|
||||
vlan_bridge_name(br_name, hapd, tagged[i]);
|
||||
vlan_bridge_name(br_name, hapd, vlan, tagged[i]);
|
||||
vlan_get_bridge(br_name, hapd, tagged[i]);
|
||||
vlan_newlink_tagged(DYNAMIC_VLAN_NAMING_WITH_DEVICE,
|
||||
ifname, br_name, tagged[i], hapd);
|
||||
|
@ -561,7 +565,7 @@ void vlan_dellink(const char *ifname, struct hostapd_data *hapd)
|
|||
tagged[i] <= 0 || tagged[i] > MAX_VLAN_ID ||
|
||||
(i > 0 && tagged[i] == tagged[i - 1]))
|
||||
continue;
|
||||
vlan_bridge_name(br_name, hapd, tagged[i]);
|
||||
vlan_bridge_name(br_name, hapd, vlan, tagged[i]);
|
||||
vlan_dellink_tagged(DYNAMIC_VLAN_NAMING_WITH_DEVICE,
|
||||
ifname, br_name, tagged[i], hapd);
|
||||
vlan_put_bridge(br_name, hapd, tagged[i]);
|
||||
|
@ -573,7 +577,7 @@ void vlan_dellink(const char *ifname, struct hostapd_data *hapd)
|
|||
(vlan->clean & DVLAN_CLEAN_WLAN_PORT))
|
||||
br_delif(hapd->conf->bridge, ifname);
|
||||
} else if (untagged > 0 && untagged <= MAX_VLAN_ID) {
|
||||
vlan_bridge_name(br_name, hapd, untagged);
|
||||
vlan_bridge_name(br_name, hapd, vlan, untagged);
|
||||
|
||||
if (vlan->clean & DVLAN_CLEAN_WLAN_PORT)
|
||||
br_delif(br_name, vlan->ifname);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue