diff --git a/src/agent.h b/src/agent.h
index 1d7b6933b61d0eaa9ba57342a433fa49034b3add..e44fc068ce318956bf78249c34885c5d6be6d617 100644
--- a/src/agent.h
+++ b/src/agent.h
@@ -596,7 +596,10 @@ struct wifi_backhaul_element {
 };
 
 struct wsc_ext {
+#if VENDOR_EXTENSION
 	bool enabled;
+	char bridge[16];
+#endif
 #define VEN_IES_MAX 16
 	uint8_t num_ven_ies;
 	struct wsc_vendor_ie ven_ies[VEN_IES_MAX];
diff --git a/src/agent_map.c b/src/agent_map.c
index 6216d19a6ccdec4e2d97a3de9bc7e0411169c220..8931fc824f4fb8b2b2859fb19b9908b858d6f2c9 100644
--- a/src/agent_map.c
+++ b/src/agent_map.c
@@ -1928,7 +1928,8 @@ int wsc_get_exts(uint8_t *msg, uint16_t msglen, struct wsc_ext *exts)
 	uint8_t *p;
 	uint8_t *msg_end;
 #ifdef EASYMESH_VENDOR_EXT
-#define ATTR_ENABLED (0x4C) /* IOPSYS m2 vendor extension */
+#define ATTR_ENABLED (0x4C) /* provisioning of disabled APs */
+#define ATTR_BRIDGE (0x4D) /* provisioning of custom bridge */
 	const uint8_t vendor_oui[4] = {0};
 	uint32_t oui = 0;
 
@@ -1983,8 +1984,17 @@ int wsc_get_exts(uint8_t *msg, uint16_t msglen, struct wsc_ext *exts)
 					p += 1;
 					attr_len -= 1;
 
-					if (subelem == ATTR_ENABLED)
+					switch (subelem) {
+					case ATTR_ENABLED:
 						memcpy(&exts->enabled, p, len);
+						break;
+					case ATTR_BRIDGE:
+						memcpy(exts->bridge, p, len);
+						break;
+					default:
+						trace("%s: unknown subelem:%u\n", __func__, subelem);
+						break;
+					}
 
 					p += len;
 					attr_len -= len;
@@ -1997,6 +2007,10 @@ int wsc_get_exts(uint8_t *msg, uint16_t msglen, struct wsc_ext *exts)
 		p += attr_len;
 	}
 
+#ifdef EASYMESH_VENDOR_EXT
+#undef ATTR_ENABLED
+#undef ATTR_BRIDGE
+#endif
 	return 0;
 }
 
diff --git a/src/config.c b/src/config.c
index df0997f3f68154e697849cc1ec3c37156e8a094d..5230858e4852e08ced1ef2512e74838bb98d3441 100644
--- a/src/config.c
+++ b/src/config.c
@@ -889,7 +889,10 @@ struct netif_apcfg *uci_apply_wps_credentials(struct agent_config *cfg, char *if
 	int mfp = 0;
 
 	bridge = cfg->al_bridge;
-
+#ifdef VENDOR_EXTENSION
+	if (strlen(exts->bridge))
+		bridge = exts->bridge;
+#endif
 	/* step past br- prefix if present*/
 	if (!strncmp("br-", bridge, 3))
 		bridge += 3;