|
|
@ -36,7 +36,7 @@ gather_interface_info() { |
|
|
gather_if_info_ip() { |
|
|
gather_if_info_ip() { |
|
|
eval $(${IP} -o link | ${AWK} '{ |
|
|
eval $(${IP} -o link | ${AWK} '{ |
|
|
sub(/:/,"",$1); |
|
|
sub(/:/,"",$1); |
|
|
no=$1; |
|
|
|
|
|
|
|
|
ifno=$1; |
|
|
sub(/:/,"",$2); |
|
|
sub(/:/,"",$2); |
|
|
name=$2; |
|
|
name=$2; |
|
|
classes=classes "net_iface_" name " "; |
|
|
classes=classes "net_iface_" name " "; |
|
|
@ -50,35 +50,82 @@ gather_if_info_ip() { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";"; |
|
|
print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";"; |
|
|
if ("UP" == state) classes=classes mac " " |
|
|
|
|
|
|
|
|
if ("UP" == state) classes=classes mac " "; |
|
|
|
|
|
if_numbers=if_numbers " " ifno; |
|
|
|
|
|
no+=1 |
|
|
} |
|
|
} |
|
|
BEGIN { |
|
|
BEGIN { |
|
|
classes="" |
|
|
|
|
|
|
|
|
classes=""; |
|
|
|
|
|
no=1; |
|
|
|
|
|
if_numbers="" |
|
|
} |
|
|
} |
|
|
END { |
|
|
END { |
|
|
print "set_class " classes ";"; |
|
|
print "set_class " classes ";"; |
|
|
print "NINTERFACES=" FNR ";" |
|
|
print "NINTERFACES=" FNR ";" |
|
|
|
|
|
sub(/^ */,"",if_numbers); |
|
|
|
|
|
sub(/ *$/,"",if_numbers); |
|
|
|
|
|
print "IF_NUMBERS=\"" if_numbers "\";"; |
|
|
}') |
|
|
}') |
|
|
|
|
|
|
|
|
eval $(${IP} -o addr | ${AWK} '{ |
|
|
|
|
|
sub(/:/,"",$1); |
|
|
|
|
|
no=$1; |
|
|
|
|
|
if ($3 == "inet") { |
|
|
|
|
|
sub(/[\/%].*/,"",$4); |
|
|
|
|
|
print "IF" no "_IPV4=\"${IF" no "_IPV4}" $4 " \";"; |
|
|
|
|
|
classes=classes $4 " " |
|
|
|
|
|
} |
|
|
|
|
|
if ($3 == "inet6") { |
|
|
|
|
|
sub(/[\/%].*/,"",$4); |
|
|
|
|
|
print "IF" no "_IPV6=\"${IF" no "_IPV6}" $4 " \";"; |
|
|
|
|
|
classes=classes $4 " " |
|
|
|
|
|
|
|
|
echo "DEBUG: ${IF_NO}" |
|
|
|
|
|
|
|
|
|
|
|
eval $(${IP} -o addr | ${AWK} -v if_numbers="${IF_NUMBERS}" '{ |
|
|
|
|
|
sub(/:/,"",$1); |
|
|
|
|
|
if_no=$1; |
|
|
|
|
|
no=r_if_numbers[if_no]; |
|
|
|
|
|
if ($3 == "inet") { |
|
|
|
|
|
split($4,addr,/[\/]/); |
|
|
|
|
|
print "IF" no "_IPV4=\"${IF" no "_IPV4}" addr[1] " \";"; |
|
|
|
|
|
network(no, addr[1], addr[2]); |
|
|
|
|
|
classes=classes $4 " " |
|
|
|
|
|
} |
|
|
|
|
|
if ($3 == "inet6") { |
|
|
|
|
|
split($4,addr,/[\/]/); |
|
|
|
|
|
print "IF" no "_IPV6=\"${IF" no "_IPV6}" addr[1] " \";"; |
|
|
|
|
|
classes=classes $4 " " |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
BEGIN { |
|
|
|
|
|
classes=""; |
|
|
|
|
|
sub(/^ */,"",if_numbers); |
|
|
|
|
|
sub(/ *$/,"",if_numbers); |
|
|
|
|
|
split(if_numbers,tmp_array,/ /) |
|
|
|
|
|
for(no in tmp_array) { |
|
|
|
|
|
if_no=tmp_array[no]; |
|
|
|
|
|
r_if_numbers[if_no]=no; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
BEGIN { |
|
|
|
|
|
classes="" |
|
|
|
|
|
} |
|
|
|
|
|
END { |
|
|
|
|
|
print "set_class " classes ";" |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
END { |
|
|
|
|
|
print "set_class " classes ";" |
|
|
|
|
|
} |
|
|
|
|
|
function network(no, addr, cidr) { |
|
|
|
|
|
mask=""; |
|
|
|
|
|
net=""; |
|
|
|
|
|
full_octets=cidr/8; |
|
|
|
|
|
part_octets=cidr%8; |
|
|
|
|
|
split(addr,parts,/\./); |
|
|
|
|
|
for(i=1; i<5; i++) { |
|
|
|
|
|
if(i-1 < full_octets) { |
|
|
|
|
|
mask=mask "255"; |
|
|
|
|
|
net=net parts[i]; |
|
|
|
|
|
} else { |
|
|
|
|
|
if (i-1 == full_octets) { |
|
|
|
|
|
mpart=256-lshift(1, 8-part_octets); |
|
|
|
|
|
mask=mask mpart; |
|
|
|
|
|
net=net and(parts[i],mpart); |
|
|
|
|
|
} else { |
|
|
|
|
|
mask=mask "0"; |
|
|
|
|
|
net=net "0"; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (i < 4) { |
|
|
|
|
|
mask=mask "."; |
|
|
|
|
|
net=net "."; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
classes=classes " " net; |
|
|
|
|
|
print "IF" no "_NETWORK=\"" net "\"; export " name "_NETWORK;"; |
|
|
|
|
|
print "IF" no "_MASK=\"" mask "\"; export " name "_MASK;"; |
|
|
}') |
|
|
}') |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|