--- a/interfaces/opensync.ovsschema +++ b/interfaces/opensync.ovsschema @@ -1424,6 +1424,14 @@ "min": 0, "max": 1 } + }, + "custom_options": { + "type": { + "key": "string", + "value": "string", + "min": 0, + "max": "unlimited" + } } }, "isRoot": true, @@ -1756,6 +1764,14 @@ "min": 0, "max": 1 } + }, + "custom_options": { + "type": { + "key": "string", + "value": "string", + "min": 0, + "max": "unlimited" + } } }, "isRoot": true, --- a/src/lib/schema/inc/schema_consts.h +++ b/src/lib/schema/inc/schema_consts.h @@ -151,6 +151,8 @@ typedef enum { #define SCHEMA_CONSTS_RTS_THRESHOLD "rts_threshold" #define SCHEMA_CONSTS_FRAG_THRESHOLD "frag_threshold" #define SCHEMA_CONSTS_DTIM_PERIOD "dtim_period" +#define SCHEMA_CONSTS_DISABLE_B_RATES "disable_b_rates" +#define SCHEMA_CONSTS_IEEE80211k "ieee80211k" /* Captive Portal */ #define SCHEMA_CONSTS_SESSION_TIMEOUT "session_timeout" --- a/src/wm2/src/wm2_radio.c +++ b/src/wm2/src/wm2_radio.c @@ -593,6 +593,7 @@ wm2_rconf_changed(const struct schema_Wi CMP(CHANGED_MAP_INTSTR, temperature_control); CMP(CHANGED_MAP_STRINT, fallback_parents); CMP(CHANGED_STR, zero_wait_dfs); + CMP(CHANGED_MAP_STRSTR, custom_options); if (changed) LOGD("%s: changed (forced=%d)", conf->if_name, changedf->_uuid); --- a/src/wm2/src/wm2_radio1.c +++ b/src/wm2/src/wm2_radio1.c @@ -493,6 +493,22 @@ wm2_radio_equal( rconf_set->tx_power_exists = true; } } + if (ovsdb_update_changed(mon, SCHEMA_COLUMN(Wifi_Radio_Config, custom_options))) { + if (rconf->custom_options_len == rstate.custom_options_len) { + for (index = 0; index < rconf->custom_options_len; index++) { + RADIO_EQUAL(SCHEMA_FIELD_CMP_MAP_STR(rconf, &rstate, custom_options, index)); + } + } else { + is_equal = false; + } + if (!is_equal) { + for (index = 0; index < rconf->custom_options_len; index++) { + strcpy(rconf_set->custom_options[index], rconf->custom_options[index]); + strcpy(rconf_set->custom_options_keys[index], rconf->custom_options_keys[index]); + } + rconf_set->custom_options_len = rconf->custom_options_len; + } + } #undef RADIO_EQUAL