]> git.ipfire.org Git - people/stevee/network.git/blobdiff - src/hooks/ports/wireless-mesh
wpa_supplicant: Drop config helper
[people/stevee/network.git] / src / hooks / ports / wireless-mesh
index cee8d2604d1b190c52f1fe98d126debdb6409250..83c8b756cc52da07db924c1db480ba70ded4c7ee 100644 (file)
@@ -23,7 +23,7 @@
 
 HOOK_PORT_PATTERN="${PORT_PATTERN_MESH}"
 
-HOOK_SETTINGS="HOOK ADDRESS MESH_ID CHANNEL PHY"
+HOOK_SETTINGS="HOOK ADDRESS MESH_ID CHANNEL PHY PSK"
 
 hook_check_settings() {
        assert ismac ADDRESS
@@ -48,6 +48,9 @@ hook_parse_cmdline() {
                        --phy=*)
                                PHY=$(cli_get_val "${1}")
                                ;;
+                       --pre-shared-key=*)
+                               PSK=$(cli_get_val "${1}")
+                               ;;
                        *)
                                warning "Ignoring unknown argument '${1}'"
                                ;;
@@ -69,7 +72,6 @@ hook_parse_cmdline() {
                ADDRESS=$(mac_generate)
        fi
 
-       # XXX check if wireless channel is valid
        # Check if channel is valid
        if ! wireless_channel_is_valid "${CHANNEL}"; then
                log ERROR "Channel is invalid: ${CHANNEL}"
@@ -100,6 +102,13 @@ hook_create() {
                        --type="mesh-point" || return $?
        fi
 
+       # Write WPA supplicant configuration
+       wpa_supplicant_config_write "${port}" \
+               --channel="${CHANNEL}" \
+               --key="${PSK}" \
+               --mode="802.11s" \
+               --ssid="${MESH_ID}" || return $?
+
        return ${EXIT_OK}
 }
 
@@ -107,6 +116,9 @@ hook_remove() {
        local port="${1}"
        assert isset port
 
+       # Remove WPA supplicant configuration
+       wpa_supplicant_config_destroy "${port}"
+
        if device_exists "${port}"; then
                wireless_remove "${port}"
        fi
@@ -114,6 +126,19 @@ hook_remove() {
        exit ${EXIT_OK}
 }
 
+hook_up() {
+       local port="${1}"
+
+       # Start WPA supplicant
+       wpa_supplicant_start "${port}"
+}
+
+hook_down() {
+       local port="${1}"
+
+       wpa_supplicant_stop "${port}"
+}
+
 hook_hotplug() {
        local port="${1}"
        assert isset port