__network_set_confips() et __network_set_confbrs()
This commit is contained in:
parent
fb7a744e27
commit
c6727703ef
87
ulib/debian
87
ulib/debian
|
@ -318,32 +318,34 @@ function __network_resolve_mainiface() {
|
||||||
[ -n "${!__nrm_mainiface}" ] || set_var "$__nrm_mainiface" eth0
|
[ -n "${!__nrm_mainiface}" ] || set_var "$__nrm_mainiface" eth0
|
||||||
}
|
}
|
||||||
|
|
||||||
function __network_set_mainip() {
|
function __network_set_confip() {
|
||||||
# XXX modifier pour en faire set_confips, qui initialise confips en fonction
|
|
||||||
# des adresses actuelles, principale et supplémentaire
|
|
||||||
eval "$(ip addr show dev "$1" | awk "BEGIN {
|
eval "$(ip addr show dev "$1" | awk "BEGIN {
|
||||||
mainipvar = \"${2:-mainip}\"
|
mainipvar = \"${2:-mainip}\"
|
||||||
suffixvar = \"${3:-suffix}\"
|
supplipsvar = \"${3:-supplips}\"
|
||||||
broadcastvar = \"${4:-broadcast}\"
|
|
||||||
"'
|
"'
|
||||||
print mainipvar "="
|
print mainipvar "="
|
||||||
print suffixvar "="
|
print supplipsvar "=()"
|
||||||
print broadcastvar "="
|
mainip = ""
|
||||||
|
supplips = 0
|
||||||
}
|
}
|
||||||
$1 == "inet" {
|
$1 == "inet" {
|
||||||
mainip = ""; suffix = ""; broadcast = ""
|
if (mainip == "") {
|
||||||
if (match($0, "inet ([^ ]*)/([^ ]*) ", vs) != 0) {
|
mainip = $2
|
||||||
mainip = vs[1]
|
|
||||||
suffix = vs[2]
|
|
||||||
}
|
|
||||||
if (match($0, "brd ([^ ]*) ", vs) != 0) {
|
|
||||||
broadcast = vs[1]
|
|
||||||
}
|
|
||||||
print mainipvar "=\"" mainip "\""
|
print mainipvar "=\"" mainip "\""
|
||||||
print suffixvar "=\"" suffix "\""
|
} else {
|
||||||
print broadcastvar "=\"" broadcast "\""
|
if (!supplips) {
|
||||||
exit 0
|
supplips = 1
|
||||||
|
print supplipsvar "=("
|
||||||
|
}
|
||||||
|
print "\"" $2 "\""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (supplips) {
|
||||||
|
print ")"
|
||||||
|
}
|
||||||
}')"
|
}')"
|
||||||
|
set_var "$2" "$(array_join "$2" ,)"
|
||||||
}
|
}
|
||||||
|
|
||||||
function __network_set_gateway() {
|
function __network_set_gateway() {
|
||||||
|
@ -359,6 +361,36 @@ $1 == "0.0.0.0" && $8 == iface {
|
||||||
}
|
}
|
||||||
#BUG")"
|
#BUG")"
|
||||||
|
|
||||||
|
function __network_set_confips() {
|
||||||
|
local -a __nsc_confips __nsc_ifaces __nsc_supplips
|
||||||
|
local __nsc_iface __nsc_mainip __nsc_gateway
|
||||||
|
array_from_lines __nsc_ifaces "$(ip link | grep -v '<.*LOOPBACK.*>' | grep '<.*UP.*>' | awk '{ sub(/:$/, "", $2); print $2}')"
|
||||||
|
for __nsc_iface in "${__nsc_ifaces[@]}"; do
|
||||||
|
__network_set_confip "$__nsc_iface" __nsc_mainip __nsc_supplips
|
||||||
|
[ -n "$__nsc_mainip" ] || continue
|
||||||
|
__network_set_gateway "$__nsc_iface" __nsc_gateway
|
||||||
|
array_add __nsc_confips "$__nsc_iface:$__nsc_mainip${__nsc_gateway:++$__nsc_gateway}${__nsc_supplips:+,$__nsc_supplips}"
|
||||||
|
done
|
||||||
|
array_copy "${1:-confips}" __nsc_confips
|
||||||
|
}
|
||||||
|
|
||||||
|
function __network_set_confbrs() {
|
||||||
|
local -a __nsc_ifaces __nsc_tmpconfbrs __nsc_confbrs
|
||||||
|
local __nsc_confbr __nsc_br __nsc_iface
|
||||||
|
array_from_lines __nsc_ifaces "$(ip link | grep -v '<.*LOOPBACK.*>' | grep '<.*UP.*>' | awk '{ sub(/:$/, "", $2); print $2}')"
|
||||||
|
array_from_lines __nsc_tmpconfbrs "$(brctl show 2>/dev/null | awk 'BEGIN { br = "" }
|
||||||
|
NR == 1 { next }
|
||||||
|
$1 != "" { br = $1 }
|
||||||
|
{ print br ":" $4 }
|
||||||
|
')"
|
||||||
|
for __nsc_confbr in "${__nsc_tmpconfbrs[@]}"; do
|
||||||
|
splitpair "$__nsc_confbr" __nsc_br __nsc_iface
|
||||||
|
array_contains __nsc_ifaces "$__nsc_br" || continue
|
||||||
|
array_add __nsc_confbrs "$__nsc_confbr"
|
||||||
|
done
|
||||||
|
array_copy "${1:-confbrs}" __nsc_confbrs
|
||||||
|
}
|
||||||
|
|
||||||
__DEBIAN_NETWORK_UPDATE_BASE_SCRIPT='
|
__DEBIAN_NETWORK_UPDATE_BASE_SCRIPT='
|
||||||
BEGIN {
|
BEGIN {
|
||||||
method = "dhcp"
|
method = "dhcp"
|
||||||
|
@ -618,8 +650,10 @@ function write_conf() {
|
||||||
if (ipspecs_count > 0 && method == "static") {
|
if (ipspecs_count > 0 && method == "static") {
|
||||||
print " address " ips[1]
|
print " address " ips[1]
|
||||||
print " netmask " get_netmask(suffixes[1])
|
print " netmask " get_netmask(suffixes[1])
|
||||||
|
if (gateways[1] != "" && gateways[1] != ips[1]) {
|
||||||
print " gateway " gateways[1]
|
print " gateway " gateways[1]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ports = " bridge_ports"
|
ports = " bridge_ports"
|
||||||
if (ifaces_count == 0) {
|
if (ifaces_count == 0) {
|
||||||
ports = ports " none"
|
ports = ports " none"
|
||||||
|
@ -806,8 +840,10 @@ function write_conf() {
|
||||||
if (ipspecs_count > 0 && method == "static") {
|
if (ipspecs_count > 0 && method == "static") {
|
||||||
print " address " ips[1]
|
print " address " ips[1]
|
||||||
print " netmask " get_netmask(suffixes[1])
|
print " netmask " get_netmask(suffixes[1])
|
||||||
|
if (gateways[1] != "" && gateways[1] != ips[1]) {
|
||||||
print " gateway " gateways[1]
|
print " gateway " gateways[1]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
serial = 0
|
serial = 0
|
||||||
for (i = 2; i <= ipspecs_count; i++) {
|
for (i = 2; i <= ipspecs_count; i++) {
|
||||||
print " up ip addr add " ips[i] "/" suffixes[i] " dev " iface " label " iface ":" serial
|
print " up ip addr add " ips[i] "/" suffixes[i] " dev " iface " label " iface ":" serial
|
||||||
|
@ -832,12 +868,17 @@ END {
|
||||||
|
|
||||||
function network_config() {
|
function network_config() {
|
||||||
# (Re)configurer le réseau sur l'hôte courant.
|
# (Re)configurer le réseau sur l'hôte courant.
|
||||||
# $1 (host) est le nom d'hôte. $2 (confips) est le nom d'un tableau
|
# $1 (host) est le nom d'hôte.
|
||||||
# contenant la configuration des adresses ips pour les interfaces. $3
|
# $2 (confips) est le nom d'un tableau contenant la configuration des
|
||||||
# (confbrs) est le nom d'un tableau contenant la configuration des bridges à
|
# adresses ips pour les interfaces.
|
||||||
# créer/mettre à jour. $4 (mainiface) est le nom de l'interface
|
# $3 (confbrs) est le nom d'un tableau contenant la configuration des
|
||||||
# principale. En principe, l'interface principale est le premier bridge
|
# bridges à créer/mettre à jour.
|
||||||
|
# $4 (mainiface) est le nom de l'interface principale, c'est à dire
|
||||||
|
# l'interface qui est sélectionnée si une adresse ip n'est pas préfixée de
|
||||||
|
# son interface. En principe, l'interface principale est le premier bridge
|
||||||
# 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
|
||||||
|
# fichier /etc/network/interfaces, mais de le recréer depuis zéro.
|
||||||
# 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:
|
||||||
|
|
Loading…
Reference in New Issue