finir implémentation de network_config
This commit is contained in:
parent
ac63d8456a
commit
71d1308188
118
ulib/debian
118
ulib/debian
|
@ -915,10 +915,11 @@ function network_config() {
|
||||||
# défini ou la première interface définie.
|
# défini ou la première interface définie.
|
||||||
# $5 (reset_interfaces) spécifie de ne pas chercher à mettre à jour le
|
# $5 (reset_interfaces) spécifie de ne pas chercher à mettre à jour le
|
||||||
# fichier /etc/network/interfaces, mais de le recréer depuis zéro.
|
# fichier /etc/network/interfaces, mais de le recréer depuis zéro.
|
||||||
|
# $6 (oldhost) est le nom d'hôte actuel, avant la modification
|
||||||
# Si un des arguments n'est pas spécifié, il est ignoré.
|
# Si un des arguments n'est pas spécifié, il est ignoré.
|
||||||
# Le tableau confips doit contenir des définitions d'une des formes
|
# Le tableau confips doit contenir des définitions d'une des formes
|
||||||
# suivantes:
|
# suivantes:
|
||||||
# [iface:]address[/suffix][+gateway],...
|
# [[iface][//gateway]:]address[/suffix],...
|
||||||
# [iface:]dhcp
|
# [iface:]dhcp
|
||||||
# La deuxième forme est pour spécifier qu'une interface est configurée par
|
# La deuxième forme est pour spécifier qu'une interface est configurée par
|
||||||
# DHCP. iface vaut par défaut eth0, sauf si une définition de bridge
|
# DHCP. iface vaut par défaut eth0, sauf si une définition de bridge
|
||||||
|
@ -932,28 +933,22 @@ function network_config() {
|
||||||
# séparées par une virgule. e.g. br0:eth0,eth1
|
# séparées par une virgule. e.g. br0:eth0,eth1
|
||||||
# Bien que ce soit techniquement possible, ce script interdit que l'on
|
# Bien que ce soit techniquement possible, ce script interdit que l'on
|
||||||
# définisse une adresse IP pour une interface faisant partie d'un bridge.
|
# définisse une adresse IP pour une interface faisant partie d'un bridge.
|
||||||
urequire ipcalc conf
|
|
||||||
|
|
||||||
local -a __nc_confips __nc_confbrs
|
local -a __nc_confips __nc_confbrs
|
||||||
[ -n "$2" ] && array_copy __nc_confips "$2"
|
[ -n "$2" ] && array_copy __nc_confips "$2"
|
||||||
[ -n "$3" ] && array_copy __nc_confbrs "$3"
|
[ -n "$3" ] && array_copy __nc_confbrs "$3"
|
||||||
|
|
||||||
local host="$1" mainiface="$4" reset_interfaces="$5"
|
local host="$1"
|
||||||
local -a confips confbrs
|
local -a confips; array_copy confips __nc_confips
|
||||||
array_copy confips __nc_confips
|
local -a confbrs; array_copy confbrs __nc_confbrs
|
||||||
array_copy confbrs __nc_confbrs
|
local mainiface="$4" reset_interfaces="$5" oldhost="$6"
|
||||||
|
local modified
|
||||||
|
|
||||||
network_fix_confips confips
|
network_fix_confs confbrs confips "$mainiface"
|
||||||
network_fix_confbrs confbrs
|
|
||||||
|
|
||||||
local mainbr # bridge principal
|
local confbr br; local -a ifaces
|
||||||
local mainip # adresse IP principale de l'interface principale
|
local confip iface gateway mainip suffix; local -a ipsuffixes
|
||||||
local confbr confip br iface suffix gateway
|
network_parse_confip "${confips[0]}" iface gateway ipsuffixes
|
||||||
local -a ipspecs
|
network_parse_ipsuffix "${ipsuffixes[0]}" mainip suffix
|
||||||
|
|
||||||
__old_network_resolve_mainiface mainiface "${confbrs[0]}" "${confips[0]}"
|
|
||||||
__old_network_parse_confbr "${confbrs[0]}" mainbr
|
|
||||||
[ -n "$mainbr" ] || mainbr=br0
|
|
||||||
|
|
||||||
if [ -n "${confips[*]}" -o -n "${confbrs[*]}" ]; then
|
if [ -n "${confips[*]}" -o -n "${confbrs[*]}" ]; then
|
||||||
# Vérifier qu'une interface avec une adresse IP ne figure pas dans les
|
# Vérifier qu'une interface avec une adresse IP ne figure pas dans les
|
||||||
|
@ -965,11 +960,11 @@ function network_config() {
|
||||||
local -a brifaces
|
local -a brifaces
|
||||||
ifaces_with_ips=()
|
ifaces_with_ips=()
|
||||||
for confip in "${confips[@]}"; do
|
for confip in "${confips[@]}"; do
|
||||||
__old_network_parse_confip "$confip" iface
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
array_addu ifaces_with_ips "$iface"
|
array_addu ifaces_with_ips "$iface"
|
||||||
done
|
done
|
||||||
for confbr in "${confbrs[@]}"; do
|
for confbr in "${confbrs[@]}"; do
|
||||||
__old_network_parse_confbr "$confbr" br ifaces
|
network_parse_confbr "$confbr" br ifaces
|
||||||
array_add brifaces "$br"
|
array_add brifaces "$br"
|
||||||
for iface in "${ifaces[@]}"; do
|
for iface in "${ifaces[@]}"; do
|
||||||
if array_contains ifaces_with_ips "$iface"; then
|
if array_contains ifaces_with_ips "$iface"; then
|
||||||
|
@ -978,21 +973,30 @@ function network_config() {
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
local -a confstdips confbrips
|
|
||||||
for confip in "${confips[@]}"; do
|
# vérifier si une modification est nécessaire
|
||||||
__old_network_parse_confip "$confip" iface
|
local modify
|
||||||
[ -n "$iface" ] || iface="$mainiface"
|
for confbr in "${confbrs[@]}"; do
|
||||||
if array_contains brifaces "$iface"; then
|
network_parse_confbr "$confbr" br ifaces
|
||||||
array_add confbrips "$confip"
|
if ! network_interfaces_check_confbr "$br" iface; then
|
||||||
else
|
modify=1
|
||||||
array_add confstdips "$confip"
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
if [ -z "$modify" ]; then
|
||||||
|
for confip in "${confips[@]}"; do
|
||||||
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
|
if ! network_interfaces_check_confip "$iface" "$gateway" ipsuffixes; then
|
||||||
|
modify=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# maintenant, configurer /etc/network/interfaces: faire une copie de travail
|
# yes! il faut refaire la configuration
|
||||||
local interfaces workfile
|
if [ -n "$modify" ]; then
|
||||||
ac_set_tmpfile interfaces
|
# faire une copie de travail
|
||||||
ac_set_tmpfile workfile
|
local interfaces; ac_set_tmpfile interfaces
|
||||||
cat /etc/network/interfaces >"$interfaces"
|
cat /etc/network/interfaces >"$interfaces"
|
||||||
|
|
||||||
if [ -n "$reset_interfaces" ]; then
|
if [ -n "$reset_interfaces" ]; then
|
||||||
|
@ -1006,42 +1010,25 @@ iface lo inet loopback
|
||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# configurer chaque bridge
|
# d'abord supprimer l'ancienne configuration
|
||||||
local -a tmpifaces
|
|
||||||
local tmpbr
|
|
||||||
for confip in "${confbrips[@]}"; do
|
|
||||||
__old_network_parse_confip "$confip" br ipspecs
|
|
||||||
[ -n "$br" ] || br="$mainbr"
|
|
||||||
|
|
||||||
if [ -z "$mainip" -a "$br" == "$mainiface" ]; then
|
|
||||||
__old_network_parse_ipspec "${ipspecs[0]}" mainip suffix gateway
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifaces=()
|
|
||||||
for confbr in "${confbrs[@]}"; do
|
for confbr in "${confbrs[@]}"; do
|
||||||
__old_network_parse_confbr "$confbr" tmpbr tmpifaces
|
network_parse_confbr "$confbr" br ifaces
|
||||||
if [ "$tmpbr" == "$br" ]; then
|
network_interfaces_remove_confbr "$br" ifaces "$interfaces"
|
||||||
array_copy ifaces tmpifaces
|
done
|
||||||
break
|
for confip in "${confips[@]}"; do
|
||||||
fi
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
|
network_interfaces_remove_confip "$iface"
|
||||||
done
|
done
|
||||||
|
|
||||||
if __old_network_update_bridge "$interfaces" "$workfile" "$br" ipspecs ifaces; then
|
# puis recréer la configuration
|
||||||
cat "$workfile" >"$interfaces"
|
for confbr in "${confbrs[@]}"; do
|
||||||
fi
|
network_parse_confbr "$confbr" br ifaces
|
||||||
|
network_interfaces_add_confbr "$br" ifaces confips "$interfaces"
|
||||||
done
|
done
|
||||||
|
for confip in "${confips[@]}"; do
|
||||||
# configurer chaque interface classique
|
network_parse_confip "$confip" iface gateway ipsuffixes
|
||||||
for confip in "${confstdips[@]}"; do
|
if ! array_contains brifaces "$iface"; then
|
||||||
__old_network_parse_confip "$confip" iface ipspecs
|
network_interfaces_add_confip "$iface" "$gateway" ipsuffixes "$interfaces"
|
||||||
[ -n "$iface" ] || iface="$mainiface"
|
|
||||||
|
|
||||||
if [ -z "$mainip" -a "$iface" == "$mainiface" ]; then
|
|
||||||
__old_network_parse_ipspec "${ipspecs[0]}" mainip suffix gateway
|
|
||||||
fi
|
|
||||||
|
|
||||||
if __old_network_update_iface "$interfaces" "$workfile" "$iface" ipspecs; then
|
|
||||||
cat "$workfile" >"$interfaces"
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -1062,8 +1049,10 @@ iface lo inet loopback
|
||||||
estep /etc/network/interfaces
|
estep /etc/network/interfaces
|
||||||
fi
|
fi
|
||||||
cat "$interfaces" >/etc/network/interfaces
|
cat "$interfaces" >/etc/network/interfaces
|
||||||
|
modified=1
|
||||||
|
fi
|
||||||
|
ac_clean "$interfaces"
|
||||||
fi
|
fi
|
||||||
ac_clean "$interfaces" "$workfile"
|
|
||||||
|
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
|
@ -1097,5 +1086,6 @@ iface lo inet loopback
|
||||||
eend
|
eend
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -z "$modified" ] && return 10
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue