Commit 625b767798470b5890cda834767436c1eda12971

Authored by Georg Hopp
1 parent a549d6e5

get all ips configured on an interface

... ... @@ -73,25 +73,34 @@ gather_if_info_ip() {
73 73 no=r_if_numbers[if_no];
74 74 if ($3 == "inet") {
75 75 split($4,addr,/[\/]/);
76   - print "IF" no "_IPV4=\"${IF" no "_IPV4}" addr[1] " \";";
  76 + ipv4=ipv4 addr[1] " ";
77 77 network(no, addr[1], addr[2]);
78 78 classes=classes addr[1] " "
79 79 }
80 80 if ($3 == "inet6") {
81 81 split($4,addr,/[\/]/);
82   - print "IF" no "_IPV6=\"${IF" no "_IPV6}" addr[1] " \";";
  82 + ipv6=ipv6 addr[1] " ";
83 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 94 BEGIN {
87 95 classes="";
88 96 sub(/^ */,"",if_numbers);
89 97 sub(/ *$/,"",if_numbers);
90   - split(if_numbers,tmp_array,/ /)
  98 + split(if_numbers,tmp_array,/ /);
91 99 for(no in tmp_array) {
92 100 if_no=tmp_array[no];
93 101 r_if_numbers[if_no]=no;
94 102 }
  103 + current_if=$1;
95 104 }
96 105 END {
97 106 print "set_class " classes ";"
... ... @@ -122,8 +131,8 @@ gather_if_info_ip() {
122 131 }
123 132 }
124 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 142 #
134 143 gather_if_info_ifconfig() {
135 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 147 /^[^ \t]/ {
140   - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN";
  148 + if ("UP" == state) classes=classes mac " ";
141 149 if ("" != name) {
142 150 print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \
143 151 "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \
144 152 "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";";
145 153 no++;
146 154 }
147   - ipv4=ipv6="";
  155 + ipv4=ipv6=mac="";
148 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 166 BEGIN {
  167 + classes="";
  168 + state="DOWN";
152 169 no=1;
  170 + mac="";
153 171 }
154 172 END {
155   - if ("" != ipv4 || "" != ipv6) state="UP"; else state="DOWN";
  173 + if ("UP" == state) classes=classes mac " ";
156 174 print "IF" no "_NAME=" name ";IF" no "_STATE=" state ";IF" no "_MAC=" mac ";" \
157 175 "IF" no "_IPV4=\"${IF" no "_IPV4}" ipv4 " \";" \
158 176 "IF" no "_IPV6=\"${IF" no "_IPV6}" ipv6 " \";";
  177 + print "set_class " classes ";";
159 178 print "NINTERFACES=" no
160 179 }')
161 180 }
... ...
Please register or login to post a comment