Commit 625b767798470b5890cda834767436c1eda12971
1 parent
a549d6e5
get all ips configured on an interface
Showing
1 changed file
with
31 additions
and
12 deletions
| @@ -73,25 +73,34 @@ gather_if_info_ip() { | @@ -73,25 +73,34 @@ gather_if_info_ip() { | ||
| 73 | no=r_if_numbers[if_no]; | 73 | no=r_if_numbers[if_no]; |
| 74 | if ($3 == "inet") { | 74 | if ($3 == "inet") { |
| 75 | split($4,addr,/[\/]/); | 75 | split($4,addr,/[\/]/); |
| 76 | - print "IF" no "_IPV4=\"${IF" no "_IPV4}" addr[1] " \";"; | 76 | + ipv4=ipv4 addr[1] " "; |
| 77 | network(no, addr[1], addr[2]); | 77 | network(no, addr[1], addr[2]); |
| 78 | classes=classes addr[1] " " | 78 | classes=classes addr[1] " " |
| 79 | } | 79 | } |
| 80 | if ($3 == "inet6") { | 80 | if ($3 == "inet6") { |
| 81 | split($4,addr,/[\/]/); | 81 | split($4,addr,/[\/]/); |
| 82 | - print "IF" no "_IPV6=\"${IF" no "_IPV6}" addr[1] " \";"; | 82 | + ipv6=ipv6 addr[1] " "; |
| 83 | classes=classes addr[1] " " | 83 | classes=classes addr[1] " " |
| 84 | } | 84 | } |
| 85 | } | 85 | } |
| 86 | + $1 != current_if { | ||
| 87 | + print "IF" no "_IPV4=\"" ipv4 "\";"; | ||
| 88 | + print "IF" no "_IPV6=\"" ipv6 " \";"; | ||
| 89 | + print "IF" no "_NETWORK=\"" net "\";"; | ||
| 90 | + print "IF" no "_MASK=\"" mask "\";"; | ||
| 91 | + current_if=$1; | ||
| 92 | + ipv6=ipv4=""; | ||
| 93 | + } | ||
| 86 | BEGIN { | 94 | BEGIN { |
| 87 | classes=""; | 95 | classes=""; |
| 88 | sub(/^ */,"",if_numbers); | 96 | sub(/^ */,"",if_numbers); |
| 89 | sub(/ *$/,"",if_numbers); | 97 | sub(/ *$/,"",if_numbers); |
| 90 | - split(if_numbers,tmp_array,/ /) | 98 | + split(if_numbers,tmp_array,/ /); |
| 91 | for(no in tmp_array) { | 99 | for(no in tmp_array) { |
| 92 | if_no=tmp_array[no]; | 100 | if_no=tmp_array[no]; |
| 93 | r_if_numbers[if_no]=no; | 101 | r_if_numbers[if_no]=no; |
| 94 | } | 102 | } |
| 103 | + current_if=$1; | ||
| 95 | } | 104 | } |
| 96 | END { | 105 | END { |
| 97 | print "set_class " classes ";" | 106 | print "set_class " classes ";" |
| @@ -122,8 +131,8 @@ gather_if_info_ip() { | @@ -122,8 +131,8 @@ gather_if_info_ip() { | ||
| 122 | } | 131 | } |
| 123 | } | 132 | } |
| 124 | classes=classes net " "; | 133 | classes=classes net " "; |
| 125 | - print "IF" no "_NETWORK=\"" net "\"; export " name "_NETWORK;"; | ||
| 126 | - print "IF" no "_MASK=\"" mask "\"; export " name "_MASK;"; | 134 | + networks=networks net " "; |
| 135 | + netmasks=netmasks mask " "; | ||
| 127 | }') | 136 | }') |
| 128 | } | 137 | } |
| 129 | 138 | ||
| @@ -133,29 +142,39 @@ gather_if_info_ip() { | @@ -133,29 +142,39 @@ gather_if_info_ip() { | ||
| 133 | # | 142 | # |
| 134 | gather_if_info_ifconfig() { | 143 | gather_if_info_ifconfig() { |
| 135 | eval $(${IFCONFIG} -a | ${AWK} ' | 144 | eval $(${IFCONFIG} -a | ${AWK} ' |
| 136 | - /ether/ { mac=$2 } | ||
| 137 | - /inet / { ipv4=ipv4 $2 " " } | ||
| 138 | - /inet6/ { ipv6=ipv6 $2 " " } | 145 | + /ether/ { mac=$2 } |
| 146 | + /inet / { ipv4=ipv4 $2 " "; classes=classes $2 " " } | ||
| 139 | /^[^ \t]/ { | 147 | /^[^ \t]/ { |
| 140 | - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | 148 | + if ("UP" == state) classes=classes mac " "; |
| 141 | if ("" != name) { | 149 | if ("" != name) { |
| 142 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | 150 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ |
| 143 | "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | 151 | "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ |
| 144 | "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | 152 | "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; |
| 145 | no++; | 153 | no++; |
| 146 | } | 154 | } |
| 147 | - ipv4=ipv6=""; | 155 | + ipv4=ipv6=mac=""; |
| 148 | sub(/:/,"",$1); | 156 | sub(/:/,"",$1); |
| 149 | - name=$1 | 157 | + name=$1; |
| 158 | + state="DOWN"; | ||
| 159 | + } | ||
| 160 | + /inet6/ { | ||
| 161 | + sub(/%.*/,"",$2); | ||
| 162 | + ipv6=ipv6 $2 " "; | ||
| 163 | + classes=classes $2 " " | ||
| 150 | } | 164 | } |
| 165 | + (/status/ && /active/) || /^lo[0-9]/ { state="UP" } | ||
| 151 | BEGIN { | 166 | BEGIN { |
| 167 | + classes=""; | ||
| 168 | + state="DOWN"; | ||
| 152 | no=1; | 169 | no=1; |
| 170 | + mac=""; | ||
| 153 | } | 171 | } |
| 154 | END { | 172 | END { |
| 155 | - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN"; | 173 | + if ("UP" == state) classes=classes mac " "; |
| 156 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ | 174 | print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \ |
| 157 | "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ | 175 | "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \ |
| 158 | "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; | 176 | "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";"; |
| 177 | + print "set_class " classes ";"; | ||
| 159 | print "NINTERFACES=" no | 178 | print "NINTERFACES=" no |
| 160 | }') | 179 | }') |
| 161 | } | 180 | } |
Please
register
or
login
to post a comment