Revision c3a0d2a5
Added by Seth Mos almost 14 years ago
etc/inc/gwlb.inc | ||
---|---|---|
321 | 321 |
else |
322 | 322 |
$iflist = get_configured_interface_with_descr(false, true); |
323 | 323 |
|
324 |
/* Process/add dynamic gateways. */ |
|
324 |
/* Process/add dynamic v4 gateways. */
|
|
325 | 325 |
foreach($iflist as $ifname => $friendly ) { |
326 | 326 |
if(! interface_has_gateway($ifname)) |
327 | 327 |
continue; |
... | ... | |
330 | 330 |
continue; |
331 | 331 |
|
332 | 332 |
$ifcfg = &$config['interfaces'][$ifname]; |
333 |
if (!empty($ifcfg['ipaddr']) && is_ipaddr($ifcfg['ipaddr']))
|
|
333 |
if(!empty($ifcfg['ipaddr']) && is_ipaddrv4($ifcfg['ipaddr']))
|
|
334 | 334 |
continue; |
335 | 335 |
|
336 | 336 |
$gateway = array(); |
337 | 337 |
$gateway['dynamic'] = false; |
338 |
$gateway['ipprotocol'] = "inet"; |
|
338 | 339 |
$gateway['gateway'] = get_interface_gateway($ifname, $gateway['dynamic']); |
339 | 340 |
$gateway['interface'] = get_real_interface($ifname); |
340 | 341 |
$gateway['friendlyiface'] = $ifname; |
... | ... | |
346 | 347 |
$gateway['dynamic'] = true; |
347 | 348 |
} |
348 | 349 |
/* Loopback dummy for dynamic interfaces without a IP */ |
349 |
if (!is_ipaddr($gateway['gateway']) && $gateway['dynamic'] == true) |
|
350 |
if (!is_ipaddrv4($gateway['gateway']) && $gateway['dynamic'] == true)
|
|
350 | 351 |
$gateway['gateway'] = "dynamic"; |
351 | 352 |
|
352 | 353 |
/* automatically skip known static and dynamic gateways we have a array entry for */ |
353 | 354 |
foreach($gateways_arr as $gateway_item) { |
354 |
if (($ifname == $gateway_item['friendlyiface'] && $friendly == $gateway_item['name']) ||
|
|
355 |
($ifname == $gateway_item['friendlyiface'] && $gateway_item['dynamic'] == true)) |
|
355 |
if ((($ifname == $gateway_item['friendlyiface'] && $friendly == $gateway_item['name'])&& ($gateway['ipprotocol'] == $gateway_item['ipprotocol'])) ||
|
|
356 |
($ifname == $gateway_item['friendlyiface'] && $gateway_item['dynamic'] == true) && ($gateway['ipprotocol'] == $gateway_item['ipprotocol']))
|
|
356 | 357 |
continue 2; |
357 | 358 |
} |
358 | 359 |
|
359 |
if (is_ipaddr($gateway['gateway'])) |
|
360 |
if (is_ipaddrv4($gateway['gateway']))
|
|
360 | 361 |
$gateway['monitor'] = $gateway['gateway']; |
361 | 362 |
|
362 | 363 |
$gateway['descr'] = "Interface {$friendly} Dynamic Gateway"; |
363 |
$gateways_arr[$friendly] = $gateway; |
|
364 |
$gateways_arr[$gateway['name']] = $gateway; |
|
365 |
} |
|
366 |
|
|
367 |
/* Process/add dynamic v6 gateways. */ |
|
368 |
foreach($iflist as $ifname => $friendly ) { |
|
369 |
if(! interface_has_gateway($ifname)) |
|
370 |
continue; |
|
371 |
|
|
372 |
if (empty($config['interfaces'][$ifname])) |
|
373 |
continue; |
|
374 |
|
|
375 |
$ifcfg = &$config['interfaces'][$ifname]; |
|
376 |
if(!empty($ifcfg['ipaddrv6']) && is_ipaddrv6($ifcfg['ipaddrv6'])) |
|
377 |
continue; |
|
378 |
|
|
379 |
echo "found dynamic v6 interface $ifname\n"; |
|
380 |
|
|
381 |
$gateway = array(); |
|
382 |
$gateway['dynamic'] = false; |
|
383 |
$gateway['ipprotocol'] = "inet6"; |
|
384 |
$gateway['gateway'] = get_interface_gateway_v6($ifname, $gateway['dynamic']); |
|
385 |
$gateway['interface'] = get_real_interface($ifname); |
|
386 |
$gateway['friendlyiface'] = $ifname; |
|
387 |
$gateway['name'] = "{$friendly}_v6"; |
|
388 |
$gateway['attribute'] = "system"; |
|
389 |
|
|
390 |
if ($gateway['dynamic'] === "default") { |
|
391 |
$gateway['defaultgw'] = true; |
|
392 |
$gateway['dynamic'] = true; |
|
393 |
} |
|
394 |
|
|
395 |
/* Loopback dummy for dynamic interfaces without a IP */ |
|
396 |
if (!is_ipaddrv6($gateway['gateway']) && $gateway['dynamic'] == true) |
|
397 |
$gateway['gateway'] = "dynamic"; |
|
398 |
|
|
399 |
/* automatically skip known static and dynamic gateways we have a array entry for */ |
|
400 |
foreach($gateways_arr as $gateway_item) { |
|
401 |
if ((($ifname == $gateway_item['friendlyiface'] && $friendly == $gateway_item['name']) && ($gateway['ipprotocol'] == $gateway_item['ipprotocol'])) || |
|
402 |
($ifname == $gateway_item['friendlyiface'] && $gateway_item['dynamic'] == true) && ($gateway['ipprotocol'] == $gateway_item['ipprotocol'])) |
|
403 |
continue 2; |
|
404 |
} |
|
405 |
print_r($gateway); |
|
406 |
|
|
407 |
|
|
408 |
if (is_ipaddrv6($gateway['gateway'])) |
|
409 |
$gateway['monitor'] = $gateway['gateway']; |
|
410 |
|
|
411 |
$gateway['descr'] = "Interface {$friendly} Dynamic Gateway"; |
|
412 |
$gateways_arr[$gateway['name']] = $gateway; |
|
364 | 413 |
} |
365 | 414 |
|
366 | 415 |
return($gateways_arr); |
Also available in: Unified diff
Automatically pick up on dynamic IPv6 interfaces. For Example dhcp6.