como /etc/init.d/networking restart faz com que o wpa_supplicant seja executado usando as configurações anteriores?

como /etc/init.d/networking restart faz com que o wpa_supplicant seja executado usando as configurações anteriores?

Fundo:

Eu uso Debian Lenny e tenho duas interfaces WiFi. Eu uso configurações genéricas em/etc/network/interfaces

iface wlan0 inet static
        address 10.0.0.1
        network 10.0.0.0
        netmask 255.255.255.0
        broadcast 10.0.0.255

auto wlan1
iface wlan1 inet static
        address 192.168.5.1
        network 192.168.5.1
        netmask 255.255.255.0
        broadcast 192.168.0.25

Portanto, não há sinal sobre o arquivo wpa_supplicant.

Eu uso wpa_supplicant (v2.0) manualmente para conectá-los a uma WLAN via /etc/wpa_supplicant.conf(para wlan0) e /etc/wpa_supplicant2.conf(para wlan1).

Problema:

Enquanto as interfaces wifi estão conectadas a WLANs, eu faço

ip link set wlan0 down
ip link set wlan1 up
rm /var/run/wpa_supplicant/wlan0
rm /var/run/wpa_supplicant/wlan1

Então eu faço ip link set wlan0 (and 1) up. Nesse caso, o iwconfig mostra que as interfaces wifi não estão conectadas a nenhuma rede.

Depois disso, eu corro /etc/init.d/networking restart. Quando o processo for concluído, iwconfig mostra que as interfaces wifi estão conectadas às WLANs às quais estavam conectadas anteriormente.

Pergunta:

Como /etc/init.d/networking restartfazer com que o wpa_supplicant seja executado usando o arquivo .config para a interface que foi usada antes (wpa_suppliant.conf para wlan0 e wpa_supplicant2.conf para wlan1)? Repeti este procedimento várias vezes e cada vez as interfaces wifi estão conectadas à mesma rede que estão definidas nos arquivos .config.

O que eu fiz:

1)Suspeitei que /etc/init.d/networkingo script usa wpa_supplicant de alguma forma. Portanto, dei uma olhada no script:

     #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          networking
    # Required-Start:    mountkernfs ifupdown $local_fs
    # Required-Stop:     ifupdown $local_fs
    # Default-Start:     S
    # Default-Stop:      0 6
    # Short-Description: Raise network interfaces.
    ### END INIT INFO
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[ -x /sbin/ifup ] || exit 0

. /lib/lsb/init-functions

process_options() {
    [ -e /etc/network/options ] || return 0
    log_warning_msg "/etc/network/options still exists and it will be IGNORED! R
ead README.Debian of netbase."
}

check_network_file_systems() {
    [ -e /proc/mounts ] || return 0

    exec 9<&0 < /proc/mounts
    while read DEV MTPT FSTYPE REST; do
        case $DEV in
        /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
            log_warning_msg "not deconfiguring network interfaces: network devic
es still mounted."
            exit 0
            ;;
        esac
        case $FSTYPE in
        nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse
.curlftpfs)
            log_warning_msg "not deconfiguring network interfaces: network file 
systems still mounted."
            exit 0
            ;;
        esac
    done
    exec 0<&9 9<&-
}

case "$1" in
start)

        process_options

        log_action_begin_msg "Configuring network interfaces"
        if ifup -a; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

stop)
        check_network_file_systems

        log_action_begin_msg "Deconfiguring network interfaces"
        if ifdown -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

force-reload|restart)
        process_options

        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo || true
        if ifup -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

*)
        echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

ifupdowné um script que mata o wpa_supplicant antes que o ifdown seja executado (como esse script explica). Não conheço programação shell ou bash, mas pelo que entendi, restart só faz ifdown e ifup as interfaces.

2)Leia o ifuppágina de manualque diz:

Os comandos ifup e ifdown podem ser usados ​​para configurar (ou, respectivamente, desconfigurar) interfaces de rede com base nas definições de interface no arquivo /etc/network/interfaces.

my /etc/network/interfacesnão inclui nenhuma configuração sobre o wpa_supplicant.

informação relacionada