Commit e7599d9e33b4d7bab49c5ca0703b8b90f12700a4
1 parent
625b7677
more fixes in network identification.
Showing
1 changed file
with
33 additions
and
8 deletions
| @@ -86,10 +86,11 @@ gather_if_info_ip() { | @@ -86,10 +86,11 @@ gather_if_info_ip() { | ||
| 86 | $1 != current_if { | 86 | $1 != current_if { |
| 87 | print "IF" no "_IPV4=\"" ipv4 "\";"; | 87 | print "IF" no "_IPV4=\"" ipv4 "\";"; |
| 88 | print "IF" no "_IPV6=\"" ipv6 " \";"; | 88 | print "IF" no "_IPV6=\"" ipv6 " \";"; |
| 89 | - print "IF" no "_NETWORK=\"" net "\";"; | ||
| 90 | - print "IF" no "_MASK=\"" mask "\";"; | 89 | + print "IF" no "_NETWORK=\"" networks "\";"; |
| 90 | + print "IF" no "_MASK=\"" netmasks "\";"; | ||
| 91 | current_if=$1; | 91 | current_if=$1; |
| 92 | ipv6=ipv4=""; | 92 | ipv6=ipv4=""; |
| 93 | + networks=netmasks=""; | ||
| 93 | } | 94 | } |
| 94 | BEGIN { | 95 | BEGIN { |
| 95 | classes=""; | 96 | classes=""; |
| @@ -119,7 +120,7 @@ gather_if_info_ip() { | @@ -119,7 +120,7 @@ gather_if_info_ip() { | ||
| 119 | if (i-1 == full_octets) { | 120 | if (i-1 == full_octets) { |
| 120 | mpart=256-lshift(1, 8-part_octets); | 121 | mpart=256-lshift(1, 8-part_octets); |
| 121 | mask=mask mpart; | 122 | mask=mask mpart; |
| 122 | - net=net and(parts[i],mpart); | 123 | + net=net and(parts[i],mpart); |
| 123 | } else { | 124 | } else { |
| 124 | mask=mask "0"; | 125 | mask=mask "0"; |
| 125 | net=net "0"; | 126 | net=net "0"; |
| @@ -141,22 +142,46 @@ gather_if_info_ip() { | @@ -141,22 +142,46 @@ gather_if_info_ip() { | ||
| 141 | # FIXME This is outdated. It does not set classes at all. | 142 | # FIXME This is outdated. It does not set classes at all. |
| 142 | # | 143 | # |
| 143 | gather_if_info_ifconfig() { | 144 | gather_if_info_ifconfig() { |
| 144 | - eval $(${IFCONFIG} -a | ${AWK} ' | ||
| 145 | - /ether/ { mac=$2 } | ||
| 146 | - /inet / { ipv4=ipv4 $2 " "; classes=classes $2 " " } | 145 | + eval $(${IFCONFIG} -a | ${AWK} --non-decimal-data ' |
| 147 | /^[^ \t]/ { | 146 | /^[^ \t]/ { |
| 148 | if ("UP" == state) classes=classes mac " "; | 147 | if ("UP" == state) classes=classes mac " "; |
| 149 | if ("" != name) { | 148 | if ("" != name) { |
| 150 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | 149 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ |
| 151 | - "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | ||
| 152 | - "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | 150 | + "IF" no "_IPV4=\"" ipv4 "\";" \ |
| 151 | + "IF" no "_IPV6=\"" ipv6 "\";" \ | ||
| 152 | + "IF" no "_NETWORK=\"" networks "\";" \ | ||
| 153 | + "IF" no "_MASK=\"" netmasks "\";"; | ||
| 153 | no++; | 154 | no++; |
| 154 | } | 155 | } |
| 155 | ipv4=ipv6=mac=""; | 156 | ipv4=ipv6=mac=""; |
| 157 | + networks=netmasks=""; | ||
| 156 | sub(/:/,"",$1); | 158 | sub(/:/,"",$1); |
| 157 | name=$1; | 159 | name=$1; |
| 158 | state="DOWN"; | 160 | state="DOWN"; |
| 159 | } | 161 | } |
| 162 | + /ether/ { mac=$2 } | ||
| 163 | + /inet / { | ||
| 164 | + ipv4=ipv4 $2 " "; | ||
| 165 | + if("0x" == substr($4,0,2)) { | ||
| 166 | + mask=netmask sprintf("%d.%d.%d.%d ", | ||
| 167 | + "0x" substr($4,2,2), | ||
| 168 | + "0x" substr($4,4,2), | ||
| 169 | + "0x" substr($4,6,2), | ||
| 170 | + "0x" substr($4,8,2)); | ||
| 171 | + } else { | ||
| 172 | + mask=mask $4 " "; | ||
| 173 | + } | ||
| 174 | + split($2,parts,/\./); | ||
| 175 | + split(mask,mparts,/\./); | ||
| 176 | + for(i=1; i<5; i++) { | ||
| 177 | + net=net and(parts[i],mparts[i]); | ||
| 178 | + if(i < 4) net=net "."; | ||
| 179 | + } | ||
| 180 | + classes=classes $2 " "; | ||
| 181 | + classes=classes net " "; | ||
| 182 | + networks=networks net " "; | ||
| 183 | + netmasks=netmasks mask " "; | ||
| 184 | + } | ||
| 160 | /inet6/ { | 185 | /inet6/ { |
| 161 | sub(/%.*/,"",$2); | 186 | sub(/%.*/,"",$2); |
| 162 | ipv6=ipv6 $2 " "; | 187 | ipv6=ipv6 $2 " "; |
Please
register
or
login
to post a comment