__network_set_confips() et __network_set_confbrs()
This commit is contained in:
parent
fb7a744e27
commit
c6727703ef
89
ulib/debian
89
ulib/debian
|
@ -318,32 +318,34 @@ function __network_resolve_mainiface() {
|
|||
[ -n "${!__nrm_mainiface}" ] || set_var "$__nrm_mainiface" eth0
|
||||
}
|
||||
|
||||
function __network_set_mainip() {
|
||||
# XXX modifier pour en faire set_confips, qui initialise confips en fonction
|
||||
# des adresses actuelles, principale et supplémentaire
|
||||
function __network_set_confip() {
|
||||
eval "$(ip addr show dev "$1" | awk "BEGIN {
|
||||
mainipvar = \"${2:-mainip}\"
|
||||
suffixvar = \"${3:-suffix}\"
|
||||
broadcastvar = \"${4:-broadcast}\"
|
||||
supplipsvar = \"${3:-supplips}\"
|
||||
"'
|
||||
print mainipvar "="
|
||||
print suffixvar "="
|
||||
print broadcastvar "="
|
||||
print supplipsvar "=()"
|
||||
mainip = ""
|
||||
supplips = 0
|
||||
}
|
||||
$1 == "inet" {
|
||||
mainip = ""; suffix = ""; broadcast = ""
|
||||
if (match($0, "inet ([^ ]*)/([^ ]*) ", vs) != 0) {
|
||||
mainip = vs[1]
|
||||
suffix = vs[2]
|
||||
if (mainip == "") {
|
||||
mainip = $2
|
||||
print mainipvar "=\"" mainip "\""
|
||||
} else {
|
||||
if (!supplips) {
|
||||
supplips = 1
|
||||
print supplipsvar "=("
|
||||
}
|
||||
print "\"" $2 "\""
|
||||
}
|
||||
if (match($0, "brd ([^ ]*) ", vs) != 0) {
|
||||
broadcast = vs[1]
|
||||
}
|
||||
END {
|
||||
if (supplips) {
|
||||
print ")"
|
||||
}
|
||||
print mainipvar "=\"" mainip "\""
|
||||
print suffixvar "=\"" suffix "\""
|
||||
print broadcastvar "=\"" broadcast "\""
|
||||
exit 0
|
||||
}')"
|
||||
set_var "$2" "$(array_join "$2" ,)"
|
||||
}
|
||||
|
||||
function __network_set_gateway() {
|
||||
|
@ -359,6 +361,36 @@ $1 == "0.0.0.0" && $8 == iface {
|
|||
}
|
||||
#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='
|
||||
BEGIN {
|
||||
method = "dhcp"
|
||||
|
@ -618,7 +650,9 @@ function write_conf() {
|
|||
if (ipspecs_count > 0 && method == "static") {
|
||||
print " address " ips[1]
|
||||
print " netmask " get_netmask(suffixes[1])
|
||||
print " gateway " gateways[1]
|
||||
if (gateways[1] != "" && gateways[1] != ips[1]) {
|
||||
print " gateway " gateways[1]
|
||||
}
|
||||
}
|
||||
ports = " bridge_ports"
|
||||
if (ifaces_count == 0) {
|
||||
|
@ -806,7 +840,9 @@ function write_conf() {
|
|||
if (ipspecs_count > 0 && method == "static") {
|
||||
print " address " ips[1]
|
||||
print " netmask " get_netmask(suffixes[1])
|
||||
print " gateway " gateways[1]
|
||||
if (gateways[1] != "" && gateways[1] != ips[1]) {
|
||||
print " gateway " gateways[1]
|
||||
}
|
||||
}
|
||||
serial = 0
|
||||
for (i = 2; i <= ipspecs_count; i++) {
|
||||
|
@ -832,12 +868,17 @@ END {
|
|||
|
||||
function network_config() {
|
||||
# (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
|
||||
# contenant la configuration des adresses ips pour les interfaces. $3
|
||||
# (confbrs) est le nom d'un tableau contenant la configuration des bridges à
|
||||
# créer/mettre à jour. $4 (mainiface) est le nom de l'interface
|
||||
# principale. En principe, l'interface principale est le premier bridge
|
||||
# $1 (host) est le nom d'hôte.
|
||||
# $2 (confips) est le nom d'un tableau contenant la configuration des
|
||||
# adresses ips pour les interfaces.
|
||||
# $3 (confbrs) est le nom d'un tableau contenant la configuration des
|
||||
# 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.
|
||||
# $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é.
|
||||
# Le tableau confips doit contenir des définitions d'une des formes
|
||||
# suivantes:
|
||||
|
|
Loading…
Reference in New Issue