diff --git a/src/nl.c b/src/nl.c index 54395ce45552f1c0165b222f3528ad7e898df16d..9e3cdbb3d98472942c3e8a7f68479aba97164853 100644 --- a/src/nl.c +++ b/src/nl.c @@ -299,18 +299,26 @@ static void ts_set_iface_vlan(struct ts_context *ts, struct ts_iface *tsif) static void ts_set_system(struct ts_context *ts) { char buf[16] = {0}; + char cmd[128] = {0}; uint16_t vid; int i; if (ts->primary_vid == 0) return; + strncpy(cmd, "/lib/wifi/multiap ts keep", sizeof(cmd)); + for (i = 0; i < ts->num_vids; i++) { vid = ts->all_vids[i]; warn("/lib/wifi/multiap ts create %u\n",vid); Cmd(buf, sizeof(buf), "/lib/wifi/multiap ts create %u", vid); + snprintf(cmd + strlen(cmd), sizeof(cmd) - strlen(cmd), " %hu", vid); } + /* remove any stale vids from network config */ + if (ts->num_vids) + Cmd(buf, sizeof(buf), cmd); + warn("/lib/wifi/multiap ts reload\n"); Cmd(buf, sizeof(buf), "/lib/wifi/multiap ts reload"); }