summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Mazoyer <gmazoyer@gravitons.in>2016-06-12 23:21:48 +0200
committerGuillaume Mazoyer <gmazoyer@gravitons.in>2016-06-12 23:21:48 +0200
commit28bf462793fc9c15e70b73d3eb2223f6328abb84 (patch)
treeb6fc16b5b7a94e48041cb941a6cb2934d2c5e0b2
parent7bca7a70b0bf840fbd821ef7e18ed86d7cf3f144 (diff)
Add new configuration options to enable/disable IPv6 or IPv4.
When disabling IPv6 or IPv4, the looking glass will not try to use both IP protocol versions when looking for an AS routes or when pinging or tracerouting. If an IP address of a disabling IP version is used, the user will have an error in return of its command. This error will tell him that the IP version he is trying to use is disabled. Please note that when trying to ping or traceroute a hostname from a Cisco or a Juniper device, this looking glass will not prevent the device to use a disabled IP version when executing its command. This commit also contains some small changes with HTML tags.
-rw-r--r--auth/authentication.php2
-rw-r--r--auth/ssh.php2
-rw-r--r--auth/telnet.php2
-rw-r--r--docs/configuration.md10
-rw-r--r--execute.php2
-rw-r--r--includes/config.defaults.php8
-rw-r--r--includes/utils.php18
-rw-r--r--index.php25
-rw-r--r--routers/bird.php60
-rw-r--r--routers/cisco.php59
-rw-r--r--routers/juniper.php77
-rw-r--r--routers/quagga.php40
-rw-r--r--routers/router.php2
13 files changed, 222 insertions, 85 deletions
diff --git a/auth/authentication.php b/auth/authentication.php
index b0079a6..366ffa1 100644
--- a/auth/authentication.php
+++ b/auth/authentication.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/auth/ssh.php b/auth/ssh.php
index e4d22a2..bce82ab 100644
--- a/auth/ssh.php
+++ b/auth/ssh.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/auth/telnet.php b/auth/telnet.php
index 15052ec..20b85a6 100644
--- a/auth/telnet.php
+++ b/auth/telnet.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/docs/configuration.md b/docs/configuration.md
index 9335a51..2483713 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -220,6 +220,16 @@ $config['misc']['allow_reserved_ip'] = true;
If set to true, allows reserved the use of IPv4 addresses (0.0.0.0/8,
169.254.0.0/16, 192.0.2.0/24 and 224.0.0.0/4) as parameters.
+```php
+$config['misc']['disable_ipv6'] = false;
+```
+If set to true, disable the use of IPv6.
+
+```php
+$config['misc']['disable_ipv4'] = false;
+```
+If set to true, disable the use of IPv4.
+
### Tools
The tools that are used by this software are **ping** and **traceroute** for
diff --git a/execute.php b/execute.php
index ac0f892..71dc304 100644
--- a/execute.php
+++ b/execute.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/includes/config.defaults.php b/includes/config.defaults.php
index 25eaf6f..dfc0d58 100644
--- a/includes/config.defaults.php
+++ b/includes/config.defaults.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -92,7 +92,11 @@ $config = array(
'allow_private_ip' => true,
// Allow reserved IPv4 addresses (0.0.0.0/8, 169.254.0.0/16,
// 192.0.2.0/24 and 224.0.0.0/4)
- 'allow_reserved_ip' => true
+ 'allow_reserved_ip' => true,
+ // Disable IPv6
+ 'disable_ipv6' => false,
+ // Disable IPv4
+ 'disable_ipv4' => false
),
// Tools used for some processing
diff --git a/includes/utils.php b/includes/utils.php
index b297d61..0fbf3f7 100644
--- a/includes/utils.php
+++ b/includes/utils.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -243,7 +243,20 @@ function match_aspath_regex($aspath_regex) {
* @return string an IPv6 or IPv4 address based on the DNS records.
*/
function hostname_to_ip_address($hostname) {
- $dns_record = dns_get_record($hostname, DNS_AAAA + DNS_A);
+ global $config;
+
+ $record_types = DNS_AAAA + DNS_A;
+
+ // IPv6 is disabled look for A records only
+ if ($config['misc']['disable_ipv6']) {
+ $record_types = DNS_A;
+ }
+ // IPv4 is disabled look for AAAA records only
+ if ($config['misc']['disabke_ipv4']) {
+ $record_types = DNS_AAAA;
+ }
+
+ $dns_record = dns_get_record($hostname, $record_types);
// No DNS record found
if (!$dns_record) {
@@ -265,7 +278,6 @@ function hostname_to_ip_address($hostname) {
// Several records found
if ($records_nb > 1) {
- // TODO: this could probably be more optimal
foreach ($dns_record as $record) {
if ($record['type'] == 'AAAA') {
return $record['ipv6'];
diff --git a/index.php b/index.php
index 1936a4b..5cef958 100644
--- a/index.php
+++ b/index.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -100,7 +100,7 @@ final class LookingGlass {
}
print('<div class="header_bar">');
if ($this->frontpage['show_title']) {
- print('<h1>'.htmlentities($this->frontpage['title']).'</h1><br />');
+ print('<h1>'.htmlentities($this->frontpage['title']).'</h1><br>');
}
if ($this->frontpage['image']) {
print('<img src="'.$this->frontpage['image'].'" alt="Logo" />');
@@ -112,6 +112,17 @@ final class LookingGlass {
}
private function render_content() {
+ if ($this->misc['disable_ipv6'] && $this->misc['disable_ipv4']) {
+ print('<div class="content">');
+ print('<strong>Configuration error!</strong><br>');
+ print('It looks like you have disabled IPv6 and IPv4. Do you want to do any networking someday?<br>');
+ print('Please enable IPv6 or IPv4 (or even both) by using the following lines in your configuration:<br><br>');
+ print('<pre>$config[\'misc\'][\'disable_ipv6\'] = false;</pre>');
+ print('<pre>$config[\'misc\'][\'disable_ipv4\'] = false;</pre>');
+ print('</div>');
+ return;
+ }
+
print('<div class="alert alert-danger alert-dismissable" id="error">');
print('<button type="button" class="close" aria-hidden="true">&times;</button>');
print('<strong>Error!</strong>&nbsp;<span id="error-text"></span>');
@@ -165,20 +176,20 @@ final class LookingGlass {
if ($this->frontpage['show_visitor_ip']) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- print('Your IP address: '.htmlentities($_SERVER['HTTP_X_FORWARDED_FOR']).'<br />');
+ print('Your IP address: '.htmlentities($_SERVER['HTTP_X_FORWARDED_FOR']).'<br>');
} else {
- print('Your IP address: '.htmlentities($_SERVER['REMOTE_ADDR']).'<br />');
+ print('Your IP address: '.htmlentities($_SERVER['REMOTE_ADDR']).'<br>');
}
}
if ($this->frontpage['disclaimer']) {
print($this->frontpage['disclaimer']);
- print('<br /><br />');
+ print('<br><br>');
}
if ($this->frontpage['peering_policy_file']) {
print('<button type="button" class="btn btn-default btn-sm" data-toggle="modal" data-target="#peering-policy"><span class="glyphicon glyphicon-list-alt"></span> Peering Policy</button>');
- print('<br/><br/>');
+ print('<br><br>');
}
if ($this->contact['name'] && $this->contact['mail']) {
@@ -187,7 +198,7 @@ final class LookingGlass {
htmlentities($this->contact['name']).'</a>');
}
- print('<br /><br />');
+ print('<br><br>');
print('<span class="origin">Powered by <a href="https://github.com/respawner/looking-glass" title="Looking Glass Project">Looking Glass '.$this->release['version'].'</a></span>');
print('</p>');
print('</div>');
diff --git a/routers/bird.php b/routers/bird.php
index 6d74672..34f1a96 100644
--- a/routers/bird.php
+++ b/routers/bird.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,7 +31,7 @@ final class Bird extends Router {
$destination = hostname_to_ip_address($hostname);
if (!$destination) {
- throw new Exception('No AAAA or A record found for '.$hostname);
+ throw new Exception('No record found for '.$hostname);
}
}
@@ -42,7 +42,7 @@ final class Bird extends Router {
$ping = 'ping '.$this->global_config['tools']['ping_options'].' '.
(isset($hostname) ? $hostname : $destination);
} else {
- throw new Exception('The parameter does not resolve to an IPv6/IPv4 address.');
+ throw new Exception('The parameter does not resolve to an IP address.');
}
if (($ping != null) && $this->has_source_interface_id()) {
@@ -68,7 +68,7 @@ final class Bird extends Router {
$destination = hostname_to_ip_address($hostname);
if (!$destination) {
- throw new Exception('No AAAA or A record found for '.$hostname);
+ throw new Exception('No record found for '.$hostname);
}
}
@@ -81,20 +81,20 @@ final class Bird extends Router {
$this->global_config['tools']['traceroute_options'].' '.
(isset($hostname) ? $hostname : $destination);
} else {
- throw new Exception('The parameter does not resolve to an IPv6/IPv4 address.');
+ throw new Exception('The parameter does not resolve to an IP address.');
}
if (($traceroute != null) && $this->has_source_interface_id()) {
- if (match_ipv4($destination) &&
- ($this->get_source_interface_id('ipv4') != null)) {
- $traceroute .= ' '.
- $this->global_config['tools']['traceroute_source_option'].' '.
- $this->get_source_interface_id('ipv4');
- } else if (match_ipv6($destination) &&
+ if (match_ipv6($destination) &&
($this->get_source_interface_id('ipv6') != null)) {
$traceroute .= ' '.
$this->global_config['tools']['traceroute_source_option'].' '.
$this->get_source_interface_id('ipv6');
+ } else if (match_ipv4($destination) &&
+ ($this->get_source_interface_id('ipv4') != null)) {
+ $traceroute .= ' '.
+ $this->global_config['tools']['traceroute_source_option'].' '.
+ $this->get_source_interface_id('ipv4');
}
}
@@ -110,20 +110,32 @@ final class Bird extends Router {
switch ($command) {
case 'bgp':
if (match_ipv6($parameter, false)) {
- $commands[] = $birdc6.' \'show route for '.$parameter.'\'';
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $commands[] = $birdc6.' \'show route for '.$parameter.'\'';
+ }
} else if (match_ipv4($parameter, false)) {
- $commands[] = $birdc.' \'show route for '.$parameter.'\'';
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $commands[] = $birdc.' \'show route for '.$parameter.'\'';
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address.');
+ throw new Exception('The parameter is not an IP address.');
}
break;
case 'as-path-regex':
if (match_aspath_regex($parameter)) {
- $commands[] = $birdc6.' \'show route where bgp_path ~ [= '.
- $parameter.' =]\'';
- $commands[] = $birdc.' \'show route where bgp_path ~ [= '.
- $parameter.' =]\'';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = $birdc6.' \'show route where bgp_path ~ [= '.
+ $parameter.' =]\'';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = $birdc.' \'show route where bgp_path ~ [= '.
+ $parameter.' =]\'';
+ }
} else {
throw new Exception('The parameter is not an AS-Path regular expression.');
}
@@ -131,10 +143,14 @@ final class Bird extends Router {
case 'as':
if (match_as($parameter)) {
- $commands[] = $birdc6.' \'show route where bgp_path ~ [= '.
- $parameter.' =]\'';
- $commands[] = $birdc.' \'show route where bgp_path ~ [= '.
- $parameter.' =]\'';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = $birdc6.' \'show route where bgp_path ~ [= '.
+ $parameter.' =]\'';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = $birdc.' \'show route where bgp_path ~ [= '.
+ $parameter.' =]\'';
+ }
} else {
throw new Exception('The parameter is not an AS number.');
}
diff --git a/routers/cisco.php b/routers/cisco.php
index 4529d2d..0a7cb76 100644
--- a/routers/cisco.php
+++ b/routers/cisco.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,11 +26,22 @@ final class Cisco extends Router {
protected function build_ping($destination) {
$ping = null;
- if (match_ipv6($destination) || match_ipv4($destination) ||
- match_hostname($destination)) {
+ if (match_hostname($destination)) {
$ping = 'ping '.$destination.' repeat 10';
+ } else if (match_ipv6($destination)) {
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $ping = 'ping '.$destination.' repeat 10';
+ }
+ } else if (match_ipv4($destination)) {
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $ping = 'ping '.$destination.' repeat 10';
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address or a hostname.');
+ throw new Exception('The parameter is not an IP address or a hostname.');
}
if (($ping != null) && $this->has_source_interface_id()) {
@@ -51,7 +62,7 @@ final class Cisco extends Router {
$destination = hostname_to_ip_address($hostname);
if (!$destination) {
- throw new Exception('No AAAA or A record found for '.$hostname);
+ throw new Exception('No record found for '.$hostname);
}
if (match_ipv6($destination)) {
@@ -59,10 +70,10 @@ final class Cisco extends Router {
} else if (match_ipv4($destination)) {
$traceroute = 'traceroute ip '.(isset($hostname) ? $hostname : $destination);
} else {
- throw new Exception('The parameter does not resolve to an IPv6/IPv4 address.');
+ throw new Exception('The parameter does not resolve to an IP address.');
}
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address or a hostname.');
+ throw new Exception('The parameter is not an IP address or a hostname.');
}
if (($traceroute != null) && $this->has_source_interface_id() &&
@@ -79,18 +90,32 @@ final class Cisco extends Router {
switch ($command) {
case 'bgp':
if (match_ipv6($parameter, false)) {
- $commands[] = 'show bgp ipv6 unicast '.$parameter;
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $commands[] = 'show bgp ipv6 unicast '.$parameter;
+ }
} else if (match_ipv4($parameter, false)) {
- $commands[] = 'show bgp ipv4 unicast '.$parameter;
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $commands[] = 'show bgp ipv4 unicast '.$parameter;
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address.');
+ throw new Exception('The parameter is not an IP address.');
}
break;
case 'as-path-regex':
if (match_aspath_regex($parameter)) {
- $commands[] = 'show bgp ipv6 unicast quote-regexp "'.$parameter.'"';
- $commands[] = 'show bgp ipv4 unicast quote-regexp "'.$parameter.'"';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = 'show bgp ipv6 unicast quote-regexp "'.$parameter.
+ '"';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = 'show bgp ipv4 unicast quote-regexp "'.$parameter.
+ '"';
+ }
} else {
throw new Exception('The parameter is not an AS-Path regular expression.');
}
@@ -98,8 +123,14 @@ final class Cisco extends Router {
case 'as':
if (match_as($parameter)) {
- $commands[] = 'show bgp ipv6 unicast quote-regexp "^'.$parameter.'_"';
- $commands[] = 'show bgp ipv4 unicast quote-regexp "^'.$parameter.'_"';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = 'show bgp ipv6 unicast quote-regexp "^'.$parameter.
+ '_"';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = 'show bgp ipv4 unicast quote-regexp "^'.$parameter.
+ '_"';
+ }
} else {
throw new Exception('The parameter is not an AS number.');
}
diff --git a/routers/juniper.php b/routers/juniper.php
index 53c9473..355a1d3 100644
--- a/routers/juniper.php
+++ b/routers/juniper.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,11 +26,22 @@ final class Juniper extends Router {
protected function build_ping($destination) {
$ping = null;
- if (match_ipv6($destination) || match_ipv4($destination) ||
- match_hostname($destination)) {
+ if (match_hostname($destination)) {
$ping = 'ping count 10 rapid '.$destination;
+ } else if (match_ipv6($destination)) {
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $ping = 'ping inet6 count 10 rapid '.$destination;
+ }
+ } else if (match_ipv4($destination)) {
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $ping = 'ping inet count 10 rapid '.$destination;
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address or a hostname.');
+ throw new Exception('The parameter is not an IP address or a hostname.');
}
if (($ping != null) && $this->has_source_interface_id()) {
@@ -43,12 +54,22 @@ final class Juniper extends Router {
protected function build_traceroute($destination) {
$traceroute = null;
- if (match_ipv6($destination) || match_hostname($destination)) {
+ if (match_hostname($destination)) {
$traceroute = 'traceroute '.$destination;
+ } else if (match_ipv6($destination)) {
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $traceroute = 'traceroute inet6 '.$destination;
+ }
} else if (match_ipv4($destination)) {
- $traceroute = 'traceroute as-number-lookup '.$destination;
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $traceroute = 'traceroute inet as-number-lookup '.$destination;
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address or a hostname.');
+ throw new Exception('The parameter is not an IP address or a hostname.');
}
if (($traceroute != null) && $this->has_source_interface_id()) {
@@ -64,22 +85,34 @@ final class Juniper extends Router {
switch ($command) {
case 'bgp':
if (match_ipv6($parameter, false)) {
- $commands[] = 'show route '.$parameter.
- ' protocol bgp table inet6.0 active-path';
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $commands[] = 'show route '.$parameter.
+ ' protocol bgp table inet6.0 active-path';
+ }
} else if (match_ipv4($parameter, false)) {
- $commands[] = 'show route '.$parameter.
- ' protocol bgp table inet.0 active-path';
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $commands[] = 'show route '.$parameter.
+ ' protocol bgp table inet.0 active-path';
+ }
} else {
- throw new Exception('The parameter is not an IPv6/IPv4 address.');
+ throw new Exception('The parameter is not an IP address.');
}
break;
case 'as-path-regex':
if (match_aspath_regex($parameter)) {
- $commands[] = 'show route aspath-regex "'.$parameter.
- '" protocol bgp table inet6.0';
- $commands[] = 'show route aspath-regex "'.$parameter.
- '" protocol bgp table inet.0';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = 'show route aspath-regex "'.$parameter.
+ '" protocol bgp table inet6.0';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = 'show route aspath-regex "'.$parameter.
+ '" protocol bgp table inet.0';
+ }
} else {
throw new Exception('The parameter is not an AS-Path regular expression.');
}
@@ -87,10 +120,14 @@ final class Juniper extends Router {
case 'as':
if (match_as($parameter)) {
- $commands[] = 'show route aspath-regex "^'.$parameter.
- ' .*" protocol bgp table inet6.0';
- $commands[] = 'show route aspath-regex "^'.$parameter.
- ' .*" protocol bgp table inet.0';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = 'show route aspath-regex "^'.$parameter.
+ ' .*" protocol bgp table inet6.0';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = 'show route aspath-regex "^'.$parameter.
+ ' .*" protocol bgp table inet.0';
+ }
} else {
throw new Exception('The parameter is not an AS number.');
}
diff --git a/routers/quagga.php b/routers/quagga.php
index 55f423f..bc91cdf 100644
--- a/routers/quagga.php
+++ b/routers/quagga.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,7 +31,7 @@ final class Quagga extends Router {
$destination = hostname_to_ip_address($hostname);
if (!$destination) {
- throw new Exception('No AAAA or A record found for '.$hostname);
+ throw new Exception('No record found for '.$hostname);
}
}
@@ -42,7 +42,7 @@ final class Quagga extends Router {
$ping = 'ping '.$this->global_config['tools']['ping_options'].' '.
(isset($hostname) ? $hostname : $destination);
} else {
- throw new Exception('The parameter does not resolve to an IPv6/IPv4 address.');
+ throw new Exception('The parameter does not resolve to an IP address.');
}
if (($ping != null) && $this->has_source_interface_id()) {
@@ -68,7 +68,7 @@ final class Quagga extends Router {
$destination = hostname_to_ip_address($hostname);
if (!$destination) {
- throw new Exception('No AAAA or A record found for '.$hostname);
+ throw new Exception('No record found for '.$hostname);
}
}
@@ -81,7 +81,7 @@ final class Quagga extends Router {
$this->global_config['tools']['traceroute_options'].' '.
(isset($hostname) ? $hostname : $destination);
} else {
- throw new Exception('The parameter does not resolve to an IPv6/IPv4 address.');
+ throw new Exception('The parameter does not resolve to an IP address.');
}
if (($traceroute != null) && $this->has_source_interface_id()) {
@@ -109,18 +109,30 @@ final class Quagga extends Router {
switch ($command) {
case 'bgp':
if (match_ipv6($parameter, false)) {
- $commands[] = $vtysh.'show bgp ipv6 unicast '.$parameter.'"';
+ if ($this->global_config['misc']['disable_ipv6']) {
+ throw new Exception('IPv6 is disabled.');
+ } else {
+ $commands[] = $vtysh.'show bgp ipv6 unicast '.$parameter.'"';
+ }
} else if (match_ipv4($parameter, false)) {
- $commands[] = $vtysh.'show bgp ipv4 unicast '.$parameter.'"';
+ if ($this->global_config['misc']['disable_ipv4']) {
+ throw new Exception('IPv4 is disabled.');
+ } else {
+ $commands[] = $vtysh.'show bgp ipv4 unicast '.$parameter.'"';
+ }
} else {
- throw new Exception('The parameter is not an IPv4/IPv6 address.');
+ throw new Exception('The parameter is not an IP address.');
}
break;
case 'as-path-regex':
if (match_aspath_regex($parameter)) {
- $commands[] = $vtysh.'show ipv6 bgp regexp '.$parameter.'"';
- $commands[] = $vtysh.'show ip bgp regexp '.$parameter.'"';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = $vtysh.'show ipv6 bgp regexp '.$parameter.'"';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = $vtysh.'show ip bgp regexp '.$parameter.'"';
+ }
} else {
throw new Exception('The parameter is not an AS-Path regular expression.');
}
@@ -128,8 +140,12 @@ final class Quagga extends Router {
case 'as':
if (match_as($parameter)) {
- $commands[] = $vtysh.'show ipv6 bgp regexp ^'.$parameter.'_'.'"';
- $commands[] = $vtysh.'show ip bgp regexp ^'.$parameter.'_'.'"';
+ if (!$this->global_config['misc']['disable_ipv6']) {
+ $commands[] = $vtysh.'show ipv6 bgp regexp ^'.$parameter.'_'.'"';
+ }
+ if (!$this->global_config['misc']['disable_ipv4']) {
+ $commands[] = $vtysh.'show ip bgp regexp ^'.$parameter.'_'.'"';
+ }
} else {
throw new Exception('The parameter is not an AS number.');
}
diff --git a/routers/router.php b/routers/router.php
index 984de2d..f980982 100644
--- a/routers/router.php
+++ b/routers/router.php
@@ -2,7 +2,7 @@
/*
* Looking Glass - An easy to deploy Looking Glass
- * Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
+ * Copyright (C) 2014-2016 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by