summaryrefslogtreecommitdiff
path: root/routers/juniper.php
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 /routers/juniper.php
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.
Diffstat (limited to 'routers/juniper.php')
-rw-r--r--routers/juniper.php77
1 files changed, 57 insertions, 20 deletions
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.');
}