diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/Makefile.in | 37 | ||||
-rw-r--r-- | util/README | 9 | ||||
-rw-r--r-- | util/cisco-load.exp | 331 | ||||
-rw-r--r-- | util/cisco-reload.exp | 141 | ||||
-rwxr-xr-x | util/configure | 990 | ||||
-rw-r--r-- | util/configure.in | 26 | ||||
-rwxr-xr-x | util/downreport.in | 62 | ||||
-rwxr-xr-x | util/getipacctg.in | 103 | ||||
-rw-r--r-- | util/lg/Makefile.in | 43 | ||||
-rw-r--r-- | util/lg/README | 76 | ||||
-rwxr-xr-x | util/lg/configure | 991 | ||||
-rw-r--r-- | util/lg/configure.in | 27 | ||||
-rw-r--r-- | util/lg/index.html | 9 | ||||
-rwxr-xr-x | util/lg/lg.cgi.in | 783 | ||||
-rw-r--r-- | util/lg/lg.conf.in | 105 | ||||
-rwxr-xr-x | util/lg/lgform.cgi.in | 245 | ||||
-rw-r--r-- | util/lg/lgnotes.html | 61 | ||||
-rw-r--r-- | util/rtrfilter.README | 14 | ||||
-rwxr-xr-x | util/rtrfilter.in | 158 |
19 files changed, 0 insertions, 4211 deletions
diff --git a/util/Makefile.in b/util/Makefile.in deleted file mode 100644 index ed8db01..0000000 --- a/util/Makefile.in +++ /dev/null @@ -1,37 +0,0 @@ -PREFIX = @prefix@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -UTIL_PROGS = @RD_UTIL_PROGS@ - -all: - -install: all - for file in $(UTIL_PROGS) ; do \ - $(INSTALL) $$file $(PREFIX)/util; \ - done; \ - for file in *README* *.exp; do \ - $(INSTALL_DATA) $$file $(PREFIX)/util; \ - done; \ - cd lg; $(MAKE) -e install - -clean: - @if [ -f lg/Makefile ] ; then \ - cd lg; $(MAKE) -e clean; \ - fi - -distclean: clean - @if [ -f lg/Makefile ] ; then \ - cd lg; $(MAKE) -e distclean; \ - fi - rm -f Makefile $(UTIL_PROGS) config.log config.status - -distdir: - for file in Makefile.in configure.in *README* *.exp; do \ - $(INSTALL_DATA) $$file $(distdir); \ - done; \ - for file in configure $(UTIL_PROGS:=.in) ; do \ - $(INSTALL) $$file $(distdir); \ - done; \ - cd lg; $(MAKE) -e distdir diff --git a/util/README b/util/README deleted file mode 100644 index 56d5673..0000000 --- a/util/README +++ /dev/null @@ -1,9 +0,0 @@ -rancid/util includes some utilities that either don't seem to belong -in rancid/bin (ie: not part of the core pkg), contributed sources, or -sources included for convenience/example. - -README This file. -downreport Daily report of routers not listed as up in router.db -getipacctg get and sort show ip accounting o/p from cisco router -lg looking glass pkg -rtrfilter mail filter for diffs diff --git a/util/cisco-load.exp b/util/cisco-load.exp deleted file mode 100644 index 58277e2..0000000 --- a/util/cisco-load.exp +++ /dev/null @@ -1,331 +0,0 @@ -## -## Copyright (C) 1997-2001 by Henry Kilmer. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed without -## fee for non-commerical purposes provided that this copyright notice is -## preserved intact on all copies and modified copies. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -# -# this expect snipit is sourced by clogin (-s option) to load a configuration -# file (named <routername>-confg into nvram from an rcp/tftp host. this is an -# _example_ as it not guaranteed to work for all applications. PLEASE test -# for your environment. -# -# it expects the following variables via the -E option: -# rcphost ='host to rcp from' such as 'foo.org' or '192.168.0.1' -# confgpath ='path under /tftpboot where configs are held' -# -# the config file is expected to be routername-confg, where routername is the -# name as grok'd from the router's cmd-line prompt -# -# example usage: -# % clogin -s ./cisco-load.exp -Ercphost=foo.shrubbery.net router -# router -# loading router config from foo.shrubbery.net -# -# keep in mind that it is important to NOT polute the global variable space. -# particularly, do not use variables used within clogin. this may result in -# indeterministic results. an easy way to avoid this is to use a variable -# name prefix (like 'E' or '_'). -# -# useful variables from clogin global space: -# router router name as provided on the cmd-line -# prompt cmd-line prompt as determined by clogin -# -# note: the tcl/expect parser is extremely stoopid. comment lines are NOT -# completely ignored!! so, a '{' or '}' in a comment might produce -# unexpected results. -## -# log_user 1 -# exp_internal 1 - -# sometimes this is a bit slow. note: this overrides clogin -t -set timeout 90 - -# take rcp host from -Ercphost='foo' -if ([info exists Ercphost]) { - #puts "CONFGHOST == $Ercphost" - set confghost [string tolower $Ercphost] -} else { - send_error "ERROR: -Ercphost= was not set on the command-line.\n" - exit -} - -# -# logout of the router -# -proc logout { ecode } { - global prompt - - send "quit\r" - expect { - "$prompt" { logout $ecode } - timeout { send_error "Error: timeout waiting for EOF after quit\n"} - eof { - send_user "\n" - exit $ecode } - } -} - -# -# erase the nvram -# -proc erase { } { - global prompt - - send "\r" - expect $prompt {} - send "write erase\r" - expect { - -re " Continue\[^\n\]\*confirm\]" { - send "\r" - exp_continue } - "$prompt" { } - timeout { - send_error "Error: timeout waiting for write erase.\n" - logout 1 } - eof { logout 1 } - } -} - -# -# load a config via rcp into nvram -# -proc doload { confghost routername config retry } { - global prompt - - # send a return just to be sure we have a prompt. - send "\r" - expect "$prompt" - # start the copy and send the host to load from - # use tftp if retry == 1 - if { $retry == 0 } { - send "copy tftp startup-config\r" - } else { - send "copy rcp startup-config\r" - } - expect { - timeout { - send_error "\nError: timeout exceeded waiting for rcp/tftp host prompt\r" - logout 1 } - "mbiguous command" { - if { $retry == 0 } { - send "copy tftp: startup-config\r" - } else { - send "copy rcp: startup-config\r" - } - exp_continue } - -re "Host or network .*\]\?" { - send "host\r" - exp_continue } - "\]\?" { - send "$confghost\r" } - } - - # - # fill in the rest of the blanks. username (12.0), filename, dest, etc. - # - expect { - -re "Source username .\*\]\?" { - send "$routername\r"; - exp_continue } - -re "Source filename .\*\]\?" { - send "$config\r"; - exp_continue } - -re "Name of configur.\*\]\?" { - send "$config\r"; - exp_continue } - -re "Destination filename .\*\]\?" { - send "startup-config\r"; - exp_continue } - -re "Configure using .\*confirm\]" { send "\r" } - "proceed\? \\\[" { send "yes\r" } - -re "Do you want to over write.\*confirm\]" { send "\r" } - -re "Accessing (rcp|tftp):" { } - timeout { - send_error "\n\tError: timeout exceeded while matching load prompts\n"; - send "" } - } - - expect { - timeout { - send_error "Error: timeout exceeded while loading config\n" - logout 1 } - -re "\[^\n\]*Connection refused" { - send_error "Error: $expect_out(0,string)\n" - logout 1 } - -re "\[^\n\]*Destination unreachable" { - send_error "Error: $expect_out(0,string)\n" - logout 1 } - -re "\[^\n\]*Permission denied" { - send_error "Error: $expect_out(0,string)\n" - logout 1 } - -re "\[^\n]*No such file or directory" { - send_error "Error: $expect_out(0,string)\n" - logout 1 } - -re "\[^\n]*Error copying\[^\n]*Not enough space on device\[^\n]*\r" { - send_error "Error: $expect_out(0,string)\n" - if { $retry == 2 } { -# erase stomps ssh rsa key -# send_user "erasing nvram\n" -# erase - send_user "retrying load\n" - doload $confghost $routername $config 1 - } elseif { $retry == 1 } { -# erase stomps ssh rsa key -# send_user "erasing nvram\n" -# erase - send_user "retrying load with tftp.\n" - doload $confghost $routername $config 0 - } else { - send_error "Error: $expect_out(0,string)\n" - logout 1 - } } - -re "\[^\n]*.*configuration is too large.*\n" { - send_error "Error: $expect_out(0,string)\n" - expect { - -re "\[^\n]*Truncate config.*:" { send "no\r" } - } - logout 1 } - -re "\[^\n]*Error (opening|copying).*\r" { - send_error "Error: $expect_out(0,string)\n" - logout 1 } - -nocase -re "\[^\n]* error\[^a-z\n]+\[^\n]*" { - send_error "$expect_out(0,string)\n" - logout 1 } - "\n" { exp_continue } - -re "^\[^ ]*\#" { - send_user "load successful.\n" - } - } - - return 0; -} - -send_user "loading $router config from $confghost\n"; - -# look for router hostname in prompt (ie: deal with fqdn) -send "\r" -expect { - timeout { - send_error "Error: did not receive prompt\n" - exit } - "\n" { exp_continue } - -re "^(\[^ ]*)\#" { - set routername $expect_out(1,string) } -} - -# deal with config subdir? from Econfgpath -if ([info exists confgpath]) { - set config "$confgpath/$routername-confg" -} else { - set config "$routername-confg" -} - -# load the config -if { [doload $confghost $routername $config 1] != 0 } { - logout 1 -} - -logout 0 - -# these were my original transcripts of performing loads. it is a useful -# example of info you may collect to get an idea of what needs to be handled -# in the expect{}s -# -# pdx-oob# -# pdx-oob#copy rcp start -# Address of remote host [255.255.255.255]? 205.238.52.35 -# Name of configuration file [a]? pdx-oob-confg -# Configure using pdx-oob-confg from 205.238.52.35? [confirm] -# -# Connected to 205.238.52.35 -# Loading 8131 byte file pdx-oob-confg: !!!! [OK] -# Compressing configuration from 8131 bytes to 3886 bytes -# [OK] -# pdx-oob# -# - -# 12.0S-isms -# pao2#cop rcp sta -# Address or name of remote host []? eng0 -# Translating "eng0"...domain server (205.238.52.46) [OK] -# -# Source username [pao2]? -# Source filename []? pao2-confg -# Destination filename [startup-config]? -# Warning: Copying this config directly into the nvram from a network server may -# cause damage the the startup config. It is advisable to copy the file -# into the running config first, and then save it using copy run start. -# Do you wish to proceed? [no]: yes -# Accessing rcp://pao2@eng0/pao2-confg... -# Connected to 205.238.52.35 -# Loading 30138 byte file pao2-confg: !!!!!! [OK] -# -# 30138 bytes copied in 2.576 secs (15069 bytes/sec) -# pao2# -# OR IS IT -# sea0#cop rcp sta -# Address or name of remote host []? eng0 -# Source username [sea0]? -# Source filename []? sea0-confg -# Destination filename [startup-config]? -# Accessing rcp://sea0@eng0/sea0-confg...!!!!!!!!!!!!!!!!!! -# 89794 bytes copied in 0.704 secs -# sea0#q -# Connection closed by foreign host. - -# pdx-oob#copy rcp start -# Address of remote host [255.255.255.255]? 205.238.52.35 -# Name of configuration file [a]? pdx-oob-confg -# Configure using pdx-oob-confg from 205.238.52.35? [confirm] -# -# Connected to 205.238.52.35 -# Loading 8131 byte file pdx-oob-confg: !!!! [OK] -# Compressing configuration from 8131 bytes to 3886 bytes -# [OK] -# pdx-oob#copy rcp start -# Address of remote host [205.238.52.35]? 205.238.52.35 -# Name of configuration file [pdx-oob-confg]? pdx-oob-confg -# Configure using pdx-oob-confg from 205.238.52.35? [confirm] -# -# Connected to 205.238.52.35 -# %rcp: /tftpboot/pdx-oob-confg: No such file or directory -# pdx-oob# -# - -# pdx-oob#copy rcp start -# Address of remote host [205.238.52.35]? 205.238.52.35 -# Name of configuration file [pdx-oob-confg]? pdx-oob-confg -# Configure using pdx-oob-confg from 205.238.52.35? [confirm] -# -# Connected to 205.238.52.35 -# %rcp: /tftpboot/pdx-oob-confg: Permission denied -# pdx-oob# -# - -# *** response from filtered pkt -# pdx-oob#copy rcp sta -# Address of remote host [205.238.52.35]? 205.238.1.94 -# Name of configuration file [pdx-oob-confg]? -# Configure using pdx-oob-confg from 205.238.1.94? [confirm] -# % Destination unreachable; gateway or host down -# -# pdx-oob# -# - -# *** response from host w/o rcp daemon -# pdx-oob#cop rcp sta -# Address of remote host [205.238.52.35]? 205.238.1.66 -# Name of configuration file [pdx-oob-confg]? -# Configure using pdx-oob-confg from 205.238.1.66? [confirm] -# % Connection refused by remote host -# -# pdx-oob# -# diff --git a/util/cisco-reload.exp b/util/cisco-reload.exp deleted file mode 100644 index 095a3b2..0000000 --- a/util/cisco-reload.exp +++ /dev/null @@ -1,141 +0,0 @@ -## -## Copyright (C) 1997-2001 by Henry Kilmer. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed without -## fee for non-commerical purposes provided that this copyright notice is -## preserved intact on all copies and modified copies. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -# -# this expect snipit is sourced by clogin (-s option) to issue a reload -# command on a cisco router. it DOES NOT save the config if it has been -# modified. this is an _example_ as it not guaranteed to work for all -# applications. PLEASE test for your environment. -# -# it expects the following variables via the -E option: -# reload_arg ='command argument' such as 'at 05:00' or 'cancel -# -# eg usage: -# % clogin -s cisco-reload.exp -Ereload_arg='at 01:00' router -# router -# Reload scheduled for 01:00:00 UTC Sat Jun 23 2001 (in 7 hours and 16 minutes) -# % clogin -s cisco-reload.exp -Ereload_arg='at cancel' router -# router -# % Ambiguous command: "reload at cancel" -# -# % clogin -s cisco-reload.exp -Ereload_arg='cancel' router -# router -# SHUTDOWN ABORTED -# -# -# keep in mind that it is important to NOT polute the global variable space. -# particularly, do not use variables used within clogin. this may result in -# indeterministic results. an easy way to avoid this is to use a variable -# name prefix (like 'E' or '_'). -# -# useful variables from clogin global space: -# router router name as provided on the cmd-line -# prompt cmd-line prompt as determined by clogin -# -# note: the tcl/expect parser is extremely stoopid. comment lines are NOT -# completely ignored!! so, a '{' or '}' in a comment might produce -# unexpected results. -## -# exp_internal 1 -# log_user 1 - -# take reload command from -Ereload_arg='at 05:00' -if ([info exists Ereload_arg]) { - #puts "reload_arg == $Ereload_arg" - set reloadcmd "reload $Ereload_arg" -} else { - send_error "ERROR: -Ereload_arg= was not set on the command-line.\n" - exit -} - -#send_user "$router\n" - -send "\r" -expect { - timeout { send_error "Error: did not receive prompt\n" - exit } - -re "^.*$prompt" { send "$reloadcmd\r" - expect * {} } -} -# look for response -expect { - -re "configuration has been modified.*no.:" { send "no\r"; - exp_continue } - -re "Reload scheduled .*\r" { set sched $expect_out(0,string) - exp_continue } - -re "SHUTDOWN ABORTED" { set sched $expect_out(0,string) } - -re "Proceed with .*confirm\]" { send "\r" } - -re "\n.*No reload " { set sched "no reload scheduled" - send "\r" } - -re "% Ambig\[^\n\r]*" { set sched $expect_out(0,string) } -} -send "\r" -expect "$prompt" -if ([info exists sched]) { - send_user "\t$sched\n" -} -send "quit\r" -expect { - timeout { send_error "Error: timeout waiting for EOF after quit\n"} - eof { exit 0 } -} - -## dennis#reload in ? -## Delay before reload (mmm or hhh:mm) -## -## dennis#reload in 100:10 -## -## System configuration has been modified. Save? [yes/no]: no -## Reload scheduled in 100 hours and 9 minutes -## Proceed with reload? [confirm] -## dennis#reload ca -## dennis#reload cancel -## dennis# -## -## -## *** -## *** --- SHUTDOWN ABORTED --- -## *** -## -## dennis#wr -## Building configuration... -## [OK] -## dennis#reload in 100:10 -## Reload scheduled in 100 hours and 10 minutes -## Proceed with reload? [confirm] -## dennis#rel -## dennis#reload can -## dennis#reload cancel -## dennis# -## -## -## *** -## *** --- SHUTDOWN ABORTED --- -## *** -## System configuration has been modified. Save? [yes/no]: no -## Reload scheduled for 11:51:48 PST Thu Dec 10 1998 (in 299 hours and 59 minutes) -## Proceed with reload? [confirm] -## ultra#reload can -## ultra# -## -## -## *** -## *** --- SHUTDOWN ABORTED --- -## *** -## ultra# reload at 8:10 10 dec -## -## System configuration has been modified. Save? [yes/no]: no -## Reload scheduled for 08:10:00 PST Thu Dec 10 1998 (in 296 hours and 17 minutes) -## Proceed with reload? [confirm] -## ultra# -## diff --git a/util/configure b/util/configure deleted file mode 100755 index fb8e766..0000000 --- a/util/configure +++ /dev/null @@ -1,990 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_default_prefix=/usr/local/rancid - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file= - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -subdirs="lg" - - - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:563: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -RD_UTIL_PROGS=$rd_cv_rd_util_progs - - -PERLV_PATH=$ac_cv_path_PERLV_PATH - -EXPECT_PATH=$ac_cv_path_EXPECT_PATH - - -MAILPLUS=$rd_cv_MAILPLUS - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <<EOF -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile $RD_UTIL_PROGS" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS <<EOF - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@subdirs@%$subdirs%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@RD_UTIL_PROGS@%$RD_UTIL_PROGS%g -s%@PERLV_PATH@%$PERLV_PATH%g -s%@EXPECT_PATH@%$EXPECT_PATH%g -s%@MAILPLUS@%$MAILPLUS%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <<EOF - -CONFIG_FILES=\${CONFIG_FILES-"Makefile $RD_UTIL_PROGS"} -EOF -cat >> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <<EOF - -EOF -cat >> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -if test "$no_recursion" != yes; then - - # Remove --cache-file and --srcdir arguments so they do not pile up. - ac_sub_configure_args= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case "$ac_arg" in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; - esac - done - - for ac_config_dir in lg; do - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - if test ! -d $srcdir/$ac_config_dir; then - continue - fi - - echo configuring in $ac_config_dir - - case "$srcdir" in - .) ;; - *) - if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; - else - { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } - fi - ;; - esac - - ac_popdir=`pwd` - cd $ac_config_dir - - # A "../" for each directory in /$ac_config_dir. - ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` - - case "$srcdir" in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_config_dir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure; then - ac_sub_configure=$ac_sub_srcdir/configure - elif test -f $ac_sub_srcdir/configure.in; then - ac_sub_configure=$ac_configure - else - echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - - # Make the cache file name correct relative to the subdirectory. - case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; - *) # Relative path. - ac_sub_cache_file="$ac_dots$cache_file" ;; - esac - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" - # The eval makes quoting arguments work. - if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir - then : - else - { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } - fi - fi - - cd $ac_popdir - done -fi - - -# fix permissions on scripts. -for file in $RD_UTIL_PROGS; do chmod a+x $file; done diff --git a/util/configure.in b/util/configure.in deleted file mode 100644 index c23c556..0000000 --- a/util/configure.in +++ /dev/null @@ -1,26 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT() - -AC_CONFIG_SUBDIRS(lg) - -dnl default install location -AC_PREFIX_DEFAULT(/usr/local/rancid) - -dnl install program(s) -AC_PROG_INSTALL - -RD_UTIL_PROGS=$rd_cv_rd_util_progs -AC_SUBST(RD_UTIL_PROGS) - -PERLV_PATH=$ac_cv_path_PERLV_PATH -AC_SUBST(PERLV_PATH) -EXPECT_PATH=$ac_cv_path_EXPECT_PATH -AC_SUBST(EXPECT_PATH) - -MAILPLUS=$rd_cv_MAILPLUS -AC_SUBST(MAILPLUS) - -AC_OUTPUT(Makefile $RD_UTIL_PROGS) - -# fix permissions on scripts. -for file in $RD_UTIL_PROGS; do chmod a+x $file; done diff --git a/util/downreport.in b/util/downreport.in deleted file mode 100755 index edb3ae0..0000000 --- a/util/downreport.in +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh - -# Reports the list of routers not listed as 'up'. - -# Put this in your crontab to run once a day: -# 0 0 * * * @prefix@/util/downreport - -# It can optionally -# take a space list of groups on the command line -# It will use the list of groups defined in env otherwise. - - -ENVFILE="`dirname $0`../bin/env" - -. $ENVFILE - -if [ $# -ge 1 ] ; then - LIST_OF_GROUPS="$*" -elif [ "$LIST_OF_GROUPS" = "" ] ; then - echo "LIST_OF_GROUPS is empty in $ENVFILE" - exit 1 -fi - - -for GROUP in $LIST_OF_GROUPS; do - ( - echo "To: @MAILPLUS@admin-$GROUP" - echo "Subject: Down router report - $GROUP" - echo "Precedence: bulk" - echo "" - DIR=$BASEDIR/$GROUP - if [ -s $DIR/routers.down ]; then - ( - - cat << EOM - - The following $GROUP routers are listed as other than up. - - Routers listed as "up" in rancid's router.db are polled several -times daily. This list is of routers that are not listed as up and therefore -not polled. - -EOM - - cat $DIR/routers.down; - - ) - - else - ( - - cat << EOM - - No routers are down/ticketed for router group $GROUP (yay). - -EOM - - ) - fi - ) | sendmail -t - -done diff --git a/util/getipacctg.in b/util/getipacctg.in deleted file mode 100755 index d77c919..0000000 --- a/util/getipacctg.in +++ /dev/null @@ -1,103 +0,0 @@ -#! /bin/sh -# -# getipacctg uses clogin to login to a cisco router, collect the o/p of -# show ip accounting, and sort by the greatest number of bytes. if a -# second argument is supplied, it is a number indicating the top N producers. -# a third (3 to N) argument(s) specify a prefix(es) to match/select src/dst -# IPs, while others will be filtered. -# -# usage: getipacctg <router name> [<number of lines off the top>] \ -# [<src/dest prefix filter> [...]] -# example: -# getipacctg router 25 192.168.0.0/24 -# will display the top 25 for src or dst ip's within prefix -# 192.168.0.0/24 -# -# contributed by steve neighorn. - -TMP="/tmp/ipacct.$$.prefixes" -TMP2="/tmp/ipacct.$$.sorted" -TMP3="/tmp/ipacct.$$.pl" - -if [ $# -eq 0 ] ; then - echo "usage: getipacctg router_name [<number of lines off the top>] [<src/dest prefix filter> [...]]" >&2 - exit 1; -fi - -trap 'rm -fr /tmp/ipacct.$$ $TMP $TMP2 $TMP3;' 1 2 15 -clogin -c 'show ip accounting' $1 > /tmp/ipacct.$$ - -if [ $? -ne 0 ] ; then - echo "clogin failed." >&2 - exit 1 -fi -# rest of the command-line options -exec 6>$TMP -HEAD="cat" -shift -while [ $# -ne 0 ] ; do - echo $1 | grep '/' > /dev/null - if [ $? -eq 1 ] ; then - HEAD="head -$1" - else - echo $1 1>&6 - fi - shift -done -6>&- - -egrep '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ +[0-9]+\.[0-9]+\.' /tmp/ipacct.$$ | \ - sed -e 's/^ *//' -e 's/ */ /g' -e 's/.$//' | \ - awk '{print $4":"$0;}' | sort -nr | \ - sed -e 's/^[^:]*://' > $TMP2 - -if [ -s $TMP ] ; then -cat > $TMP3 <<PERL - my(@prefs); - my(\$nprefs) = 0; - sub ip_to_int { - # Given xxx.xxx.xxx.xxx return corresponding integer. - my(\$int); - my(\$ip) = shift; - \$ip=~s/\s*//g; - \$ip =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\$/; - my (\$a,\$b,\$c,\$d) = (int(\$1),int(\$2),int(\$3),int(\$4)); - return 0 + ((\$a << 24) + (\$b << 16) + (\$c << 8) + \$d) ; - } - open(PREFS, "< \$ARGV[0]") || die "could not open \$ARGV[0]\n"; - while (<PREFS>) { - chomp; - s/\s*//g; - /(.*)\/(.*)\$/; - my(\$ip) = \$1; my(\$mask) = \$2; - \$ip = ip_to_int(\$ip); - \$mask = (~0) << (32 - \$mask); - \$ip = \$ip & (\$mask); - \$prefs[\$nprefs++] = \$ip; - \$prefs[\$nprefs++] = \$mask; - } - close(PREFS); - open(DATA, "< \$ARGV[1]") || die "could not open \$ARGV[1]\n"; - while (<DATA>) { - chomp; - @A = split(/ /); - \$A[0] = ip_to_int(\$A[0]); - \$A[1] = ip_to_int(\$A[1]); - for (\$f = 0; \$f < \$nprefs; \$f += 2) { - if ((\$A[0] & \$prefs[\$f + 1]) == \$prefs[\$f] || - (\$A[1] & \$prefs[\$f + 1]) == \$prefs[\$f]) { - print "\$_\n"; - break; - } - } - } -PERL - perl $TMP3 $TMP $TMP2 | $HEAD -else - $HEAD $TMP2 -fi - -rm -fr /tmp/ipacct.$$ $TMP $TMP2 $TMP3 -trap ';' 1 2 15 -exit 0 - diff --git a/util/lg/Makefile.in b/util/lg/Makefile.in deleted file mode 100644 index 54b42a6..0000000 --- a/util/lg/Makefile.in +++ /dev/null @@ -1,43 +0,0 @@ -PREFIX = @prefix@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -UTIL_LG_PROGS = @RD_UTIL_LG_PROGS@ - -DISTDIR=../$(distdir)/lg - -all: - -install: all - for file in $(UTIL_LG_PROGS) ; do \ - $(INSTALL) $$file $(PREFIX)/util/lg; \ - done; \ - if test -f $(PREFIX)/util/lg/lg.conf ; then \ - echo "WARNING: *** $(PREFIX)/util/lg/lg.conf exists: installing as lg.conf.new."; \ - echo " *** review lg.conf.new for new/deprecated switches"; \ - $(INSTALL_DATA) lg.conf $(PREFIX)/util/lg/lg.conf.new; \ - else \ - $(INSTALL_DATA) lg.conf $(PREFIX)/util/lg; \ - fi; \ - for file in *README* *.html; do \ - $(INSTALL_DATA) $$file $(PREFIX)/util/lg; \ - done - -clean: - -distclean: clean - rm -f Makefile $(UTIL_LG_PROGS) lg.conf - rm -f config.log config.status - -distdir: - test -d $(DISTDIR) \ - || mkdir $(DISTDIR) \ - || exit 1; \ - chmod 777 $(DISTDIR); \ - for file in Makefile.in configure.in *README* *.html lg.conf.in ; do \ - $(INSTALL_DATA) $$file $(DISTDIR); \ - done; \ - for file in configure $(UTIL_LG_PROGS:=.in) ; do \ - $(INSTALL) $$file $(DISTDIR); \ - done diff --git a/util/lg/README b/util/lg/README deleted file mode 100644 index faa4120..0000000 --- a/util/lg/README +++ /dev/null @@ -1,76 +0,0 @@ -This is a looking glass based on Ed Kern's which used to be available on -http://nitrous.digex.net/. This version supports cisco, juniper, and -foundry, using rancid's [cfj]login to login (so rcmd is not necessary, -it can use telnet, ssh, or rsh), and has some additional commands -implemented. There are a few cisco commands where either no juniper or -foundry equivalent exists or we have not had time to implement yet. - -packing list: -README This file. -index.html often the default document the server will load, contains - an html redirect to load lgform.cgi -lg.conf looking glass configuration file -lg.cgi work horse of the looking glass -lgform.cgi front-end form for the looking glass engine -lgnotes.html user info for the looking glass - -the looking glass requires the CGI and LockFile-Simple perl modules. -these can be retrieved from CPAN, http://www.cpan.org/. CGI's home is -ftp://ftp-genome.wi.mit.edu/pub/software/WWW/. it also requires -the POSIX module (for strftime) and Sys::Syslog, which i believe come -with perl5 and/or are converted with h2ph(1). - -basic installation instructions: - -The configure and make install process will make variable substitutions -and install bits in /usr/local/rancid/util/lg (or <prefix>/util/lg). - -1) make the scripts/html available to your server (httpd) by - creating a directory in your server's document root directory - (apache's httpd.conf "DocumentRoot" variable). - eg: assuming the default in freebsd's apache pkg - mkdir /usr/local/www/data/lg - - then either: - - copy the files {lgnotes.html, lg.cgi, lgform.cgi} to - /usr/local/www/data/lg - OR - - create symlinks from /usr/local/www/data/lg to each of {lgnotes.html, - lg.cgi, lgform.cgi} in /usr/local/rancid/util/lg - - note on links: if you use symlinks, you have to configure apache to - allow following symlinks. eg: - % cat /usr/local/www/data/lg/.htaccess - Options FollowSymLinks ExecCGI - - note on index.html: index.html is typically the default file loaded - when a url ends with a '/'. index.html can be used to redirect this - to lgform.cgi using a netscape meta refresh. Though this is supported - by many browsers, it is supposedly netscape specific and non-standard. - In apache, the same thing can be acheived by altering the default - directory index like this: - - % cat /usr/local/www/data/lg/.htaccess - DirectoryIndex lgform.cgi - -2) the LG needs to be able to find and read lg.conf. by default this - is installed as <PREFIX>/util/lg/lg.conf and the LG will first look in - its CWD (current working directory) and then <PREFIX>/util/lg/lg.conf if - it does not exist in the CWD. However the LG_CONF environment variable can - be used to move it elsewhere. - - to get LG_CONF into the enviroment, you can use SetEnvIf in apache's - httpd.conf. for example: - SetEnvIf Request_URI "\/lg/.*.cgi" LG_CONF=/usr/local/util/lg/lg.conf - -3) edit <PREFIX>/util/lg/lg.conf. - -4) set-up cron jobs to rotate the log file and clean out old cache files. - see LG_CACHE_DIR & LG_LOG in lg.conf. something like (YMMV): - - # rotate lookingglass log - #0 0 * * * cd /usr/local/www/data/lg/tmp; /usr/local/etc/savelog -m 666 -c14 lg.log - 0 0 * * * cd /usr/local/www/data/lg/tmp; /bin/mv lg.log lg.log.0 - # clean out the lookingglass cache - 0 0 * * * cd /usr/local/www/data/lg/tmp; /usr/local/bin/find . -type f -maxdepth 1 \( \! -name lg.log\* \) -mtime +1 -exec rm -f {} \; - diff --git a/util/lg/configure b/util/lg/configure deleted file mode 100755 index e41f619..0000000 --- a/util/lg/configure +++ /dev/null @@ -1,991 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_default_prefix=/usr/local/rancid - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file= - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -subdirs="lg" - - - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:563: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -RD_UTIL_LG_PROGS=$rd_cv_rd_util_lg_progs - - -PERLV_PATH=$ac_cv_path_PERLV_PATH - - -LG_PING_CMD=$rd_cv_lg_ping_cmd - - -ENV_PATH=$ac_cv_env_path - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <<EOF -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile lg.conf $RD_UTIL_LG_PROGS" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS <<EOF - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@subdirs@%$subdirs%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@RD_UTIL_LG_PROGS@%$RD_UTIL_LG_PROGS%g -s%@PERLV_PATH@%$PERLV_PATH%g -s%@LG_PING_CMD@%$LG_PING_CMD%g -s%@ENV_PATH@%$ENV_PATH%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <<EOF - -CONFIG_FILES=\${CONFIG_FILES-"Makefile lg.conf $RD_UTIL_LG_PROGS"} -EOF -cat >> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <<EOF - -EOF -cat >> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -if test "$no_recursion" != yes; then - - # Remove --cache-file and --srcdir arguments so they do not pile up. - ac_sub_configure_args= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case "$ac_arg" in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; - esac - done - - for ac_config_dir in lg; do - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - if test ! -d $srcdir/$ac_config_dir; then - continue - fi - - echo configuring in $ac_config_dir - - case "$srcdir" in - .) ;; - *) - if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; - else - { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } - fi - ;; - esac - - ac_popdir=`pwd` - cd $ac_config_dir - - # A "../" for each directory in /$ac_config_dir. - ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` - - case "$srcdir" in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_config_dir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure; then - ac_sub_configure=$ac_sub_srcdir/configure - elif test -f $ac_sub_srcdir/configure.in; then - ac_sub_configure=$ac_configure - else - echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - - # Make the cache file name correct relative to the subdirectory. - case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; - *) # Relative path. - ac_sub_cache_file="$ac_dots$cache_file" ;; - esac - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" - # The eval makes quoting arguments work. - if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir - then : - else - { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } - fi - fi - - cd $ac_popdir - done -fi - - -# fix permissions on scripts. -for file in $RD_UTIL_LG_PROGS; do chmod a+x $file; done diff --git a/util/lg/configure.in b/util/lg/configure.in deleted file mode 100644 index 445b74d..0000000 --- a/util/lg/configure.in +++ /dev/null @@ -1,27 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT() - -AC_CONFIG_SUBDIRS(lg) - -dnl default install location -AC_PREFIX_DEFAULT(/usr/local/rancid) - -dnl install program(s) -AC_PROG_INSTALL - -RD_UTIL_LG_PROGS=$rd_cv_rd_util_lg_progs -AC_SUBST(RD_UTIL_LG_PROGS) - -PERLV_PATH=$ac_cv_path_PERLV_PATH -AC_SUBST(PERLV_PATH) - -LG_PING_CMD=$rd_cv_lg_ping_cmd -AC_SUBST(LG_PING_CMD) - -ENV_PATH=$ac_cv_env_path -AC_SUBST(ENV_PATH) - -AC_OUTPUT(Makefile lg.conf $RD_UTIL_LG_PROGS) - -# fix permissions on scripts. -for file in $RD_UTIL_LG_PROGS; do chmod a+x $file; done diff --git a/util/lg/index.html b/util/lg/index.html deleted file mode 100644 index 0087a90..0000000 --- a/util/lg/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<!-- - this is just a redirection page to load lg.cgi - is there a way to - make the server load a .cgi as it's default document? - this can also be done with a redirect (which is supposedly more universally - supported. something like <redirect URL=lgform.cgi>. not sure...i'm not - a web person. but this works for netscape. ---> - -<meta http-equiv=Refresh content="0; URL=lgform.cgi"> diff --git a/util/lg/lg.cgi.in b/util/lg/lg.cgi.in deleted file mode 100755 index 2921f72..0000000 --- a/util/lg/lg.cgi.in +++ /dev/null @@ -1,783 +0,0 @@ -#!@PERLV_PATH@ -## The original original lookingglass s/w was written by Ed Kern. it -## is a single script and used to be available at http://nitrous.digex.net/ -# -## Copyright (C) 1997-2001 by Henry Kilmer. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed without -## fee for non-commerical purposes provided that this copyright notice is -## preserved intact on all copies and modified copies. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -# -# Looking glass -# vars: query, router, args - -BEGIN { -$me = $0; -$me =~ s/.*\/(\S+)$/$1/; -} - -use CGI qw/:standard/; -use POSIX qw(strftime); -use Sys::Syslog; -use LockFile::Simple qw(lock trylock unlock); - -my($BASEDIR) = "@prefix@"; -my($pingcmd) = "@LG_PING_CMD@"; - -my($query, $max_time_diff, $cache_dir, $cloginrc, @results); -my($type, $router_param, $remote_user, $arg, $router, $mfg); - -my($LG_CACHE_DIR, $LG_CLOGINRC, $LG_IMAGE, $LG_LOG, $LG_ROUTERDB, $LG_AS_REG); -my($LG_BGP_RT, $LG_CACHE_TIME, $LG_SINGLE, $LG_STRIP); - -if (!defined($ENV{HOME})) { $ENV{HOME} = "."; } - -# note: the following functions are duplicated between lgform.cgi and lg.cgi -# to avoid the need for module inclusion headaches from within a httpd context. -# it is just easier to be self-contained. -# SO, ANY CHANGES HERE SHOULD BE REFLECTED IN THE OTHER .cgi. - -# logging -sub dolog -{ - my($level, $msg) = @_; - - if (defined($LG_LOG) && $LG_LOG !~ /\//) { - openlog($me, "pid", $LG_LOG); - syslog($level, "%s", $msg); - closelog; - } else { - local(*LOG); - my($file); - if (defined($LG_LOG)) { - $file = $LG_LOG; - } else { - $file = "$cache_dir/lg.log"; - } - # log date, hostname, query, addr - if (open(LOG, ">>$file") == 0) { - # stderr, if all else fails - printf(STDERR "[" . strftime("%a %b %e %H:%M:%S %Y", gmtime) . - "] could not open log file $file: $!\n"); - printf(STDERR $msg); - } else { - printf(LOG $msg); - close(LOG); - } - } - return; -} -# read LG configuration file -sub readconf -{ - my($conffile, $cmds); - local(*CONF); - if (defined($env{LG_CONF})) { - $conffile = $env{LG_CONF}; - } elsif (-e "lg.conf") { - $conffile = "lg.conf"; - } else { - $conffile = "$BASEDIR/util/lg/lg.conf"; - } - - if (! -f $conffile) { - return; - } - - if (open(CONF, "< $conffile")) { - while (<CONF>) { - next if (/^\s*(#|$)/); - $cmds .= $_; - } - close(CONF); - eval $cmds; - } else { - printf(STDERR "ERROR: couldn\'t open the configuration file: $conffile: $!\n"); - exit(1); - } - - return; -} -# read router.db file -sub readrouters -{ - my($rtrdb); - local(*RTR); - - if (defined($LG_ROUTERDB)) { - $rtrdb = $LG_ROUTERDB; - } else { - $rtrdb = "$BASEDIR/util/lg/router.db"; - } - - if (! -f $rtrdb) { - my(@dirs, $dir); - # if the router.db file does not exist, try to compile the list from - # the rancid group router.db files. - local(*DIR); - if (! opendir(DIR, $BASEDIR)) { - dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR: $!\n"); - } else { - while ($dir = readdir(DIR)) { - next if ($dir =~ /^(\.|\.\.|CVS|bin|logs|util)$/); - push(@dirs, $dir) if (-d "$BASEDIR/$dir"); - } - closedir(DIR); - - foreach $dir (@dirs) { - if (! opendir(DIR, "$BASEDIR/$dir")) { - dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR/$dir: $!\n"); - next; - } - closedir(DIR); - next if (! -f "$BASEDIR/$dir/router.db"); - if (open(RTR, "< $BASEDIR/$dir/router.db")) { - while (<RTR>) { - next if (/^\s*(#|$)/); - # fqdn:mfg:state - @record = split('\:', $_); - next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/); - push(@rtrlist, join(':', ($record[0], $record[1]))); - $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0]; - } - close(RTR); - } else { - dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $BASEDIR/$dir/router.db: $!\n"); - } - } - } - } else { - if (open(RTR, "< $rtrdb")) { - while (<RTR>) { - next if (/^\s*(#|$)/); - # fqdn:mfg:state - @record = split('\:', $_); - next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/); - push(@rtrlist, join(':', ($record[0], $record[1]))); - $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0]; - } - close(RTR); - } else { - dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $rtrdb: $!\n"); - exit(1); - } - } - - return; -} - -# the functions remaining are particular to lg.cgi. - -# return true if $router is a member of @rtrlist -sub arraymember { - my($rtrlist) = shift; - my($router) = shift; - my($r); - - foreach $r (@$rtrlist) { - $r = (split(':', $r))[0]; - return(1) if ($r eq $router); - } - - return(0); -} -# check reachability and lock file before attempting to connect to device -# return non-zero on error. -sub DoRsh -{ - my ($router, $mfg, $cmd, $arg) = @_; - my($ctime) = time(); - my($val); - - my($lckobj) = LockFile::Simple->make(-delay => $lock_int, - -max => $max_lock_wait, -hold => $max_lock_hold); - - if ($pingcmd =~ /\d$/) { - `$pingcmd $router`; - } else { - `$pingcmd $router 56 1`; - } - if ($?) { - push(@results, "$router is unreachable. Try again later.\n"); - print @results; - return(-1); - } - if (! $lckobj->lock("$cache_dir/$router")) { - push(@results, "$router is busy. Try again later.\n"); - print @results; - return(-1); - } - $val = &DoCmd($router, $mfg, $cmd, $arg); - $lckobj->unlock("$cache_dir/$router"); - return ($val); -} -# run commands on the router. return non-zero on error. -sub DoCmd -{ - my($rtr, $mfg, $cmd, $arg) = @_; - local(*CMD); - - if ($mfg =~ /foundry/i) { - $cmd = $foundryCmd{$type}; - open(CMD, "sh -c \"flogin -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |"); - } elsif ($mfg =~ /juniper/i) { - $cmd = $juniperCmd{$type}; - open(CMD, "sh -c \"jlogin -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |"); - } else { - $cmd = $ciscoCmd{$type}; - open(CMD, "sh -c \"clogin -noenable -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |"); - } - while (<CMD>) { - tr/\015//d; - if (/^error:/i) { - dolog(LOG_ERR, $_); - if ($LG_STRIP) { undef(@results); } - push(@results, $_); - print @results; - return(-1); - } - push(@results, $_); - if (/$cmd/) { - ($prompt) = /^(\S*)[\#>]/; - if ($LG_STRIP) { - undef(@results); - } else { - print @results; - } - last; - } - } - - while (<CMD>) { - last if /^$prompt[\#>]/; - tr/\015//d; - print $_; - push(@results, $_); - } - while (<CMD>) {} - close(CMD); - - return(0); -} -# Subroutine: Error -# Usage: &Error("msg")); -# Description: displays an error and exits. -## -sub Error { - my($msg) = @_; - - my($q) = new CGI(); - print $q->header; - print $q->start_html("Looking Glass Error"); - - print "<BODY>"; - - # add the company image, LG_IMAGE - print $LG_IMAGE; - - - print <<EOF ; -<br> -<B><FONT SIZE=+2>Looking Glass Error:</FONT></B> -<p> -$msg -<br> -</body> -EOF - - print $q->end_html; - exit(0); -} -# convert a ipv4 address mask to prefix length -sub mask2len { - my($mask) = shift; - my($a, $b, $c, $d) = split('\.', $mask); - my($p, $len); - - $p = ~ (($a << 24) + ($b << 16) + ($c << 8) + $d); - for ($len = 32; $p > 0; $len --) { - $p = $p >> 1; - } - - return($len); -} -# end the page and exit. -sub end_page { - - print <<END ; - </pre> - <!--- end page content ---> - </body> -END - - print $query->end_html; - exit(0); -} -# start the page and log the transaction... -sub start_page { - my($mfg) = @_; - my($cmd); - - my($timestr) = strftime("%a %b %e %H:%M:%S %Y", gmtime); - dolog(LOG_INFO, sprintf("%s %s %s %s\n", - $ENV{REMOTE_HOST}, $ENV{REMOTE_ADDR}, $ENV{REMOTE_USER}, - "- - [$timestr] $type $router $arg")); - print $query->header; - print $query->start_html("Looking Glass Results - $router"); - - $timestr = strftime("%a %b %e %H:%M:%S %Y %Z", gmtime); - - # add the company image, LG_IMAGE - print $LG_IMAGE; - - if ($mfg =~ /foundry/i) { - $cmd = $foundryCmd{$type}; - } elsif ($mfg =~ /juniper/i) { - $cmd = $juniperCmd{$type}; - } else { - $cmd = $ciscoCmd{$type}; - } - - print <<HEAD ; - </b></font> - <font size=+3><b><h1>Looking Glass Results - $router - </b></h1></font> - <hr> - - <center> - <b>Date:</b> $timestr - <p> - <b>Query:</b> $cmd - <br> -HEAD - - if ($arg) { print "<b>Argument(s):</b> $arg\n"; } - print "</center>\n"; - - print <<END ; - <!--$cached--> - </center> - <p> - <pre> -END - - return; -} #end sub start_page - - -# Main() -# read the configuration file if it exists. -readconf(); - -## The script will now cache the results as simple files in the $cache_dir, -## named after the type of query (queries must, of course, be one word no -## spaces). Modify $max_time_diff to set the lifetime for each cache. -## Currently, cache lifetime is the same for all queries. -# for most web servers, cache_dir must be writable by uid nobody -if (defined($LG_CACHE_DIR)) { - $cache_dir = $LG_CACHE_DIR; -} else { - $cache_dir = "./tmp"; -} - -# read routers table to get @rtrlist -readrouters(); - -# when to display cache? max time difference (in seconds) -if (defined($LG_CACHE_TIME)) { - $max_time_diff = $LG_CACHE_TIME; -} else { - $max_time_diff = "600" ; -} - -# max seconds to wait for a 'router' lock to free up -$max_lock_wait = 30; -$lock_int = 5; -$max_lock_hold = 300; - -# clogin setup -if (defined($LG_CLOGINRC)) { - $cloginrc = $LG_CLOGINRC; -} else { - $cloginrc = "$BASEDIR/.cloginrc"; -} - -$query = new CGI; - -# get form data and validate -$type = ($query->param('query'))[0]; -$router_param = ($query->param('router'))[0]; -$remote_user = $ENV{REMOTE_USER}; -$arg = ($query->param('args'))[0]; -# handle multiple args -$arg =~ s/["'`]//g; # these are BS in any arg for any query -@arg = split(' ', $arg); - -# verify router, commands, arguments, etc. -($router, $mfg) = split(':', $router_param); -if (!defined($type) || !defined($router)) { - $results[0] = "You must at least choose a Query and a router. Try buying a clue.\n"; - &Error("You must at least choose a Query and a router. Try buying a clue.\n"); -} - -if (! arraymember(\@rtrlist, $router)) { - my($timestr) = strftime("%a %b %e %H:%M:%S %Y", gmtime); - dolog(LOG_WARNING, sprintf("%s %s %s %s\n", - $ENV{REMOTE_HOST}, $ENV{REMOTE_ADDR}, $ENV{REMOTE_USER}, - "- - [$timestr] lg.cgi: attempt to access $router\n")); - Error("access to $router not permitted"); -} - -# conversion of command "type" passed from lgform.cgi to the vendor's syntax. -%ciscoCmd = ( - #acl => "show access-list", - #aspath => "show ip as-path-access-list", - #communitylist => "show ip community-list", - damp => "show ip bgp dampened-paths", - framerelay => "show frame-relay pvc", - interface => "show interface", - intbrief => "show ip interface", # switch in {interface} - log => "show logging", - mbgp => "show ip mbgp", - mbgpsum => "show ip mbgp summary", - mneighbor => "show ip bgp neighbor", - neighbor => "show ip bgp neighbor", - regex => "show ip bgp regex", - route => "show ip route", - routemap => "show route-map", - ping => "ping", - prefix => "show ip bgp", - prefixlist => "show ip prefix-list", - summary => "show ip bgp summary", - trace => "traceroute" - ); -%foundryCmd = ( - #acl => "show access-list", - #aspath => "show ip as-path-access-list", - #communitylist => "show ip community-list", - damp => "show ip bgp dampened-paths", - #framerelay => "show frame-relay pvc", # no frame relay - interface => "show interface", - log => "show log", - #mbgp => "show ip mbgp", - #mbgpsum => "show bgp summary", - #mneighbor => "show ip bgp neighbor", - neighbor => "show ip bgp neighbor", - #regex => "show ip bgp aspath-regex", - route => "show ip route", - routemap => "show route-map", - ping => "ping", - prefix => "show ip bgp", - prefixlist => "show ip prefix-list", - summary => "show ip bgp summary", - trace => "traceroute" - ); -%juniperCmd = ( - #acl => "show access-list", - #aspath => "show ip as-path-access-list", - #communitylist => "show ip community-list", - damp => "show route damping suppressed terse table inet.0", - framerelay => "show frame-relay pvc", - interface => "show interface", - log => "show log messages", - mbgp => "show route table inet.2 terse", - mbgpsum => "show bgp summary", - mneighbor => "show bgp neighbor", - neighbor => "show bgp neighbor", - regex => "show route table inet.0 aspath-regex", - route => "show route table inet.0 terse", - routemap => "show policy", - ping => "ping rapid count 5", - prefix => "show route table inet.0", - prefixlist => "show policy", - summary => "show bgp summary", - trace => "traceroute" - ); -%cmdDisp = ( - #acl => "show access-list", - #aspath => "show ip as-path-access-list", - #communitylist => "show ip community-list", - damp => "show ip bgp dampened-paths", - framerelay => "show frame-relay pvc", - interface => "show interface", - log => "show logging", - mbgp => "show ip mbgp", - mbgpsum => "show ip mbgp summary", - mneighbor => "show ip mbgp neighbor", - neighbor => "show ip bgp neighbor", - regex => "show ip bgp regex", - route => "show ip route", - routemap => "show route-map", - ping => "ping", - prefix => "show ip bgp", - prefixlist => "show ip prefix-list", - summary => "show ip bgp summary", - trace => "traceroute" - ); - -# not all cmds/queries are implemented for junipers -if ($mfg =~ /juniper/) { - if (! defined($juniperCmd{$type})) { - Error("$cmdDisp{$type} not implemented for junipers. sorry.\n"); - } - $cmd = $juniperCmd{$type}; -} elsif ($mfg =~ /foundry/) { - if(! defined($foundryCmd{$type})) { - Error("$cmdDisp{$type} not implemented for foundrys. sorry.\n"); - } - $cmd = $foundryCmd{$type}; -} else { - if(! defined($ciscoCmd{$type})) { - Error("$cmdDisp{$type} not implemented for cisco. sorry.\n"); - } - $cmd = $ciscoCmd{$type}; -} - -if ($type eq "prefix" || $type eq "mbgp" || $type eq "route" ) { - if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) { - &Error("The IP address \"$arg[0]\" is not valid and lacking an address would over-burden our router.\n"); - } elsif (defined($arg[1]) && $arg[1] !~ /^\d+\.\d+\.\d+\.\d+$/) { - &Error("The IP netmask \"$arg[1]\" is not valid.\n"); - } - if ($mfg =~ /juniper/i && defined($arg[1])) { - $arg = $arg[0] . "/" . mask2len($arg[1]); - } -} elsif ($type eq "framerelay") { - if ($mfg =~ /juniper/) { - &Error("Juniper does not have a show frame-relay pvc command. " . - "Use show interface.\n"); - } - if ($arg[0] > 15 && $arg[0] < 1024) { - $arg = $arg[0]; - } else { - undef($arg); - } -} elsif ($type eq "interface") { - if ($mfg =~ /(cisco|foundry)/) { - if ($arg[0] !~ /^b[^ ]+[0-9]/i && $arg[0] =~ /^b/i) { - $type = "intbrief"; - $arg = "brief"; - } else { - $arg = $arg[0]; - } - } elsif ($mfg =~ /juniper/) { - my($optind) = 0; - # arg 0 may be an intf name or a display option, but there can - # only be 2 args - $arg = ""; - while ($optind <= $#arg && $optind < 2) { - $arg[$optind] =~ s/brief/terse/; - if ($arg[$optind] =~ /^([a-z0-9]{2}\-\d+\/\d+\/\d+(:\d+)?)/i) { - $arg .= " $1"; - } elsif ($arg[$optind] =~ /^det/i) { - $arg .= " detail"; - } elsif ($arg[$optind] =~ /^ter/i) { - $arg .= " terse"; - } elsif ($arg[$optind] =~ /^ext/i) { - $arg .= " extensive"; - } - $optind += 1; - } - } -} elsif ($type eq "log") { - if ($arg[0] =~ /^\s*\|?$/) { - shift(@arg); - } - $arg[0] =~ s/^\s*\|?//; - if ($arg[0] !~ /^\s*$/) { - if ($mfg =~ /cisco/i) { - $arg = " | include " . join(' ', @arg); - } elsif ($mfg =~ /juniper/i) { - $arg = " | match \"" . join(' ', @arg) . "\""; - } else { - undef($arg); - } - } else { - undef($arg); - } -} elsif ($type eq "ping" || $type eq "trace") { - if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) { - if ($arg[0] !~ /^[A-Za-z0-9._-]+$/) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - } - $arg = $arg[0]; -} elsif ($type eq "aspath" || $type eq "communitylist") { - if ($arg[0] !~ /^\d+$/ || ($arg[0] < 1 && $arg[0] > 199)) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - $arg = $arg[0]; -} elsif ($type eq "acl") { - if ($arg[0] !~ /^\d+$/ || ($arg[0] < 100 && $arg[0] > 199) || - ($arg[0] < 1300 && $arg[0] > 2699)) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - $arg = $arg[0]; - # don't show the jewels - # XXX: this error msg is useless, but show acl is un-implemented. - &Error($mfg) if ($arg == 98 || $arg == 99); -} elsif ($type eq "prefixlist" || $type eq "routemap") { - if ($arg[0] !~ /^[0-9A-Za-z][^\s\"]*$/) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - $arg = $arg[0]; -} elsif ($type eq "regex") { - $arg = $arg[0]; - if ($#arg >= 1) { - for ($n = 1; $n <= $#arg; $n++) { $arg .= " " . $arg[$n]; } - } - # remove leading/trailing whitespace - $arg =~ s/^\s*//; $arg =~ s/\s*$//; - if ($arg !~ /^[0-9_ ^.*+?[\])\(-]*\$?$/ || $arg =~ /^\s*$/) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - # pathetic excuses for lookups - if ($arg =~ /^[_.* ^]*(\*|1|701|1239|1280|1740|3561|5462|10303)+[_\$]*$/ || - $arg =~ /^[_.* ^]*(1|701|1239|1280|1740|3561|5462|10303)+[_ .]*[\[*.]/) { - &Error("Get real. Such a query has potential to over-burden our " . - "router.\nLook that up on your own router.\n"); - } - if ($mfg =~ /juniper/) { - $arg =~ s/_/ /g; - # pre-junos 4.4 do not allow anchors - if ($arg =~ /\^\$/) { - $arg =~ "()"; - } else { - $arg =~ s/[\$^]/ /g; - } - $arg = "\"$arg\""; - } - # escape any ()s - $arg =~ s/([\(\)])/\\$1/g; -} elsif ($type eq "neighbor") { - if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) { - if ($arg[0] !~ /([A-Za-z0-9-]*.)*[A-Za-z0-9-]*.(com|edu|net|org)/) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - } - $arg = $arg[0]; - if (defined($arg[1]) && $arg[1] =~ /^(a|ro|f|re)/) { - if ($mfg =~ /juniper/) { - if ($arg[1] =~ /^a/) { - if (defined($LG_BGP_RT)) { - $cmd = "show route table inet.0 all advertising-protocol ". - "bgp"; - } - } elsif ($arg[1] =~ /^f/) { - if (defined($LG_BGP_RT)) { - $cmd = "show route damping table inet.0 all ". - "receive-protocol bgp"; - } - } elsif ($arg[1] =~ /^r/) { - if (defined($LG_BGP_RT)) { - $cmd = "show route table inet.0 all receive-protocol bgp"; - } - } - } else { - if ($arg[1] =~ /^a/) { - if (defined($LG_BGP_RT)) { $arg .= " advertised-routes"; } - } elsif ($arg[1] =~ /^f/) { - $arg .= " flap-statistics"; - } elsif ($arg[1] =~ /^ro/) { - if (defined($LG_BGP_RT)) { $arg .= " routes"; } - } elsif ($arg[1] =~ /^re/) { - if (defined($LG_BGP_RT)) { $arg .= " received-routes"; } - } - } - } -} elsif ($type eq "mneighbor") { - if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) { - if ($arg[0] !~ /([A-Za-z0-9-]*.)*[A-Za-z0-9-]*.(com|edu|net|org)/) { - &Error("That argument ($arg[0]) is not valid.\n"); - } - } - $arg = $arg[0]; - if (defined($arg[1]) && $arg[1] =~ /^(a|ro|f|re)/) { - if ($mfg =~ /juniper/) { - if ($arg[1] =~ /^a/) { - $cmd .= " advertised-routes"; - } elsif ($arg[1] =~ /^f/) { - $cmd .= " flap-statistics"; - } elsif ($arg[1] =~ /^ro/) { - $cmd .= " routes"; - } elsif ($arg[1] =~ /^re/) { - $cmd .= " received-routes"; - } - } else { - if ($arg[1] =~ /^a/) { - $arg .= " advertised-routes"; - } elsif ($arg[1] =~ /^f/) { - $arg .= " flap-statistics"; - } elsif ($arg[1] =~ /^ro/) { - $arg .= " routes"; - } elsif ($arg[1] =~ /^re/) { - $arg .= " received-routes"; - } - } - } -} elsif ($type eq "damp" || $type eq "summary" || $type eq "mbgpsum") { - undef($arg); -} - -# make stdout unbuffered, so result page streams. -$| = 1; -start_page(); - -# cache the following -if ($type eq "summary" || $type eq "mbgpsu" || $type eq "damp" - || $type eq "log") { - if (!$arg) { - # cache requests with no addr/argument - local(*CACHE); - - my($file) = "$cache_dir/$type" ; - $file =~ s/\s+/_/g; - $file .= "_$router"; - - if (-e $file) { - # see if cache exists - @stat = stat($file); - $ftime = $stat[9]; - $dtime = time() - $stat[9]; - - # see if we are within cache time - if ($dtime <= $max_time_diff) { - if (open(CACHE, "<$file") == 0) { - dolog(LOG_ERR, "couldnt open cache file $file: $!\n"); - } else { - print "<b>From cache (number of seconds old (max " . - "$max_time_diff)):</b> $dtime\n\n"; - while (<CACHE>) { print $_; } - close(CACHE); - &end_page(); - } - } - } - - # else, execute command and save to a new cache file - if (! &DoRsh($router, $mfg, $cmd, $arg)) { - if (open(CACHE, ">$file") == 0) { - dolog(LOG_ERR, "couldnt create cache file $file: $!\n"); - exit(1); - } else { - printf(CACHE "@results"); - close(CACHE); - } - } - } else { - &DoRsh($router, $mfg, $cmd, $arg); - } - &end_page(); -} else { - &DoRsh($router, $mfg, $cmd, $arg); - &end_page(); -} - -exit(0); diff --git a/util/lg/lg.conf.in b/util/lg/lg.conf.in deleted file mode 100644 index d13d9fd..0000000 --- a/util/lg/lg.conf.in +++ /dev/null @@ -1,105 +0,0 @@ -# configuration file for the looking glass -# -# note: these are perl statements! mind the syntax -# -# adjust the path to find [cfj]login, telnet, ssh, rsh, etc. -# -$ENV{PATH}="@prefix@/bin:@ENV_PATH@"; -# -# -# LG_CACHE_DIR is the location of the cache directory. the LG uses this -# to hold lock files, the default log file (lg.log), and o/p from -# commands that can be very verbose. it defaults to "tmp", -# ie: relative to the directory where lg.cgi runs in your -# server's (httpd) DocumentRoot (eg: /usr/local/www/data/lg/tmp). -# -#$LG_CACHE_DIR="./tmp"; -# -# -# LG_CLOGINRC is the .cloginrc that the LG should use. it defaults to -# <prefix>/.cloginrc. note that the .cloginrc must be readable -# by the user or group (UID / GID) that will be running the CGI -# and the clogin (and friends) will not allow a world readable -# .cloginrc. this is normally the user the server (httpd) runs -# under. -# -#$LG_CLOGINRC="@prefix@/.cloginrc"; -# -# -# LG_IMAGE is the filename of an image you wish to appear at the top -# of the LG pages. it can also be other html goo, like -# the first example. this is just handed to print, so \n and -# the like will work. -# -#$LG_IMAGE="<img src=/icons/rancid.gif hspace=0>\n <font size=+2>FOO</font>"; -#$LG_IMAGE="<img src=rancid.gif hspace=0>\n"; -# -# -# LG_INFO is info in html format to output at the bottom of main form. -# it might be local contact information, disclaimer, etc. this -# is just handed to print, so \n and the like will work. -# -#$LG_INFO="For support, contact <a href=\"mailto:webmaster\@localhost\">webmaster</a>"; -# -# -# LG_LOG is either a FQPN (fully qualified path name) or the syslog -# facility to use for logging. if not defined, the LG -# will log to LG_CACHE_DIR/lg.log. possible syslog facility -# values are from the facility codes in /usr/include/syslog.h -# minus the 'LOG_' and lower case. -# -#$LG_LOG="$LG_CACHE_DIR/lg.log"; -#$LG_LOG="/tmp/lg.log"; -#$LG_LOG="local0"; -# -# -# LG_ROUTERDB is the router.db in rancid's router.db format, listing -# the routers and their platform that should be available to -# the looking glass. if defined, the LG will use this variable -# to find the router.db. if not defined, it will look for it -# at <prefix>/util/lg/router.db. if it does not exist, it will -# build the list from <prefix>/*/router.db (ie: the router.db's -# from all your groups). note that if you choose this last -# option; the group directories and router.db files' modes may -# have to be changed, depending upon the UID/GID of the user -# your server (httpd) runs under, since rancid's default mask -# is 007 (see bin/env). routers not marked 'up' are skipped. -# -#$LG_ROUTERDB="@prefix@/util/lg/router.db"; -# -# -# Options: -# -# LG_AS_REG *** not implemented. -# -#@LG_AS_REG=(); -# -# -# LG_BGP_RT allows a few bgp commands which can produce long output (heavy -# router load), such as sh ip bgp neighbor <ip> advertised-routes -# for a transit customer, sh ip b neigh <ip> received-routes for -# a transit provider. -# -#$LG_BGP_RT=1 -# -# -# LG_CACHE_TIME is the number of seconds the LG should cache o/p from certain -# commands; those that tend to produce a lot of o/p, such as -# 'show ip bgp dampened-paths'. it defaults to 600 seconds -# (10 minutes). -# -#$LG_CACHE_TIME=600; -# -# -# LG_SINGLE serializes and limits queries per-router to one at a time via -# per-router lock files. -# -#$LG_SINGLE=0; -# -# $LG_STRIP strips login o/p from the looking glass results. Expect -# occassionally screws up disabling echo when passwords are -# entered (NOTE SECURITY CONCERN). However, this o/p can be -# very useful for debugging clogin problems. -# -$LG_STRIP=1; -# diff --git a/util/lg/lgform.cgi.in b/util/lg/lgform.cgi.in deleted file mode 100755 index 97a0c71..0000000 --- a/util/lg/lgform.cgi.in +++ /dev/null @@ -1,245 +0,0 @@ -#!@PERLV_PATH@ -## Copyright (C) 1997-2001 by Henry Kilmer. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed without -## fee for non-commerical purposes provided that this copyright notice is -## preserved intact on all copies and modified copies. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -# -# lgform.cgi - Looking glass front-end -# produces html form for calling lg.cgi - -use CGI qw/:standard/; - -my(@rtrlist, %rtrlabels); -my($BASEDIR) = "@prefix@"; - -# note: the following functions are duplicated between lgform.cgi and lg.cgi -# to avoid the need for module inclusion headaches from within a httpd context. -# it is just easier to be self-contained. -# SO, ANY CHANGES HERE SHOULD BE REFLECTED IN THE OTHER .cgi. - -# logging -sub dolog -{ - my($level, $msg) = @_; - - if (defined($LG_LOG) && $LG_LOG !~ /\//) { - openlog($me, "pid", $LG_LOG); - syslog($level, "%s", $msg); - closelog; - } else { - local(*LOG); - my($file); - if (defined($LG_LOG)) { - $file = $LG_LOG; - } else { - $file = "$cache_dir/lg.log"; - } - # log date, hostname, query, addr - if (open(LOG, ">>$file") == 0) { - # stderr, if all else fails - printf(STDERR "[" . strftime("%a %b %e %H:%M:%S %Y", gmtime) . - "] could not open log file $file: $!\n"); - printf(STDERR $msg); - } else { - printf(LOG $msg); - close(LOG); - } - } - return; -} -# read LG configuration file -sub readconf -{ - my($conffile, $cmds); - local(*CONF); - if (defined($env{LG_CONF})) { - $conffile = $env{LG_CONF}; - } elsif (-e "lg.conf") { - $conffile = "lg.conf"; - } else { - $conffile = "$BASEDIR/util/lg/lg.conf"; - } - - if (! -f $conffile) { - return; - } - - if (open(CONF, "< $conffile")) { - while (<CONF>) { - next if (/^\s*(#|$)/); - $cmds .= $_; - } - close(CONF); - eval $cmds; - } else { - printf(STDERR "ERROR: couldn\'t open the configuration file: $conffile: $!\n"); - exit(1); - } - - return; -} -# read router.db file -sub readrouters -{ - my($rtrdb); - local(*RTR); - - if (defined($LG_ROUTERDB)) { - $rtrdb = $LG_ROUTERDB; - } else { - $rtrdb = "$BASEDIR/util/lg/router.db"; - } - - if (! -f $rtrdb) { - my(@dirs, $dir); - # if the router.db file does not exist, try to compile the list from - # the rancid group router.db files. - local(*DIR); - if (! opendir(DIR, $BASEDIR)) { - dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR: $!\n"); - } else { - while ($dir = readdir(DIR)) { - next if ($dir =~ /^(\.|\.\.|CVS|bin|logs|util)$/); - push(@dirs, $dir) if (-d "$BASEDIR/$dir"); - } - closedir(DIR); - - foreach $dir (@dirs) { - if (! opendir(DIR, "$BASEDIR/$dir")) { - dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR/$dir: $!\n"); - next; - } - closedir(DIR); - next if (! -f "$BASEDIR/$dir/router.db"); - if (open(RTR, "< $BASEDIR/$dir/router.db")) { - while (<RTR>) { - next if (/^\s*(#|$)/); - # fqdn:mfg:state - @record = split('\:', $_); - next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/); - push(@rtrlist, join(':', ($record[0], $record[1]))); - $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0]; - } - close(RTR); - } else { - dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $BASEDIR/$dir/router.db: $!\n"); - } - } - } - } else { - if (open(RTR, "< $rtrdb")) { - while (<RTR>) { - next if (/^\s*(#|$)/); - # fqdn:mfg:state - @record = split('\:', $_); - next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/); - push(@rtrlist, join(':', ($record[0], $record[1]))); - $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0]; - } - close(RTR); - } else { - dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $rtrdb: $!\n"); - exit(1); - } - } - - return; -} - -# Main() -# read the configuration file if it exists. -readconf(); - -$query = new CGI; - -print $query->header; -print $query->start_html("LookingGlass form"); - -print "<BODY>"; - -# add the company image, LG_IMAGE -print $LG_IMAGE; - -print <<HEAD ; -<br> -<B><FONT SIZE=+2>Looking Glass</FONT></B> -<br> -<hr> -HEAD - -# start table, etc here -print <<DOTABLE ; -<form action=lg.cgi method=GET> -<center> -<table border cellspacing=0 width=575 align=center> - -DOTABLE - -# available query types here -print <<QTYPES ; -<tr valign=top> - <TD><B>Query:</B> -<dd><input type=radio name="query" value="framerelay">show frame-relay pvc [DLCI]</DD> -<dd><input type=radio name="query" value="interface">show interface <interface></DD> -<dd><input type=radio name="query" value="prefix">show ip bgp <prefix> [netmask]</DD> -<dd><input type=radio name="query" value="neighbor">show ip bgp neighbor <IP_addr></DD> -<dd><input type=radio name="query" value="regex">show ip bgp regex <reg_exp></DD> -<dd><input type=radio name="query" value="summary">show ip bgp summary</DD> -<dd><input type=radio name="query" value="damp">show ip bgp dampened-paths</DD> -<dd><input type=radio name="query" value="prefixlist">show ip prefix-list <list_name></DD> -<dd><input type=radio name="query" value="route">show ip route <prefix> [netmask]</DD> -<dd><input type=radio name="query" value="routemap">show route-map <map_name></DD> -<dd><input type=radio name="query" value="mbgp">show ip mbgp <prefix> [netmask]</dd> -<dd><input type=radio name="query" value="mbgpsum">show ip mbgp summary</dd> -<dd><input type=radio name="query" value="log">show logging [ | <match_string>]</DD> -<dd><input type=radio name="query" value="ping">ping <IP_addr | FQDN></dd> -<dd><input type=radio name="query" value="trace">traceroute <IP_addr | FQDN></DD> - -<P><B>Argument(s):</B> <INPUT name="args" size=30></P> - </TD> - <td ALIGH=left VALIGN=top> - <b>Router:</B> - -<dd> -QTYPES - -# <dd><input type=radio name="query" value="aspath">sh ip as-path-access-list <list_number></DD> -# <dd><input type="radio" name="query" value="acl">sh access-list <list_number></dd> -# <dd><input type=radio name="query" value="communitylist">sh ip community-list <list_number><DD> -# <dd><input type=radio name="query" value="routemap">sh ip route-map <map_name></DD> - -# read routers table and create the scrolling list -readrouters(); -print $query->scrolling_list(-name => 'router', - -values => \@rtrlist, - -size => 20, - -labels => \%rtrlabels); - -# end -print <<TAIL ; -</dd> -</td> -</TABLE> -<p><input type=submit value=Submit> <INPUT type=reset value=Reset></FORM> -</center> -<br> -<a href=lgnotes.html>Looking Glass notes</a> -TAIL - -print <<TAIL ; -<p> -$LG_INFO -</body> -TAIL - -print $query->end_html; - -exit(0); diff --git a/util/lg/lgnotes.html b/util/lg/lgnotes.html deleted file mode 100644 index 9f28ec3..0000000 --- a/util/lg/lgnotes.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> - -<head> -<meta http-equiv="Content-Type" -content="text/html; charset=iso-8859-1"> -<title>Looking Glass Notes</title> -</head> - -</strong></font><font face="Arial"> </font><font -size=+3><strong> Looking Glass Notes -</strong></font></p> -<br> -<p> -<ul> -Just a few straight forward notes on our implementation of -Ed Kern's looking glass. See the original at -<a href=http://nitrous.digex.net>http://nitrous.digex.net</a>. -</ul> -</p> -<p> -<UL> -<li>Some items are not implemented for the junipers/foundrys yet (so, as i get - to it) or no equivalent command exists. -<li>If there is something which you feel is missing, feel free to ask - and/or send comments to <a href=mailto:rancid@shrubbery.net> - rancid@shrubbery.net</a>. No guarantees.</li> -<li>Only one query per router allowed at any given time. This is to avoid - resource deprivation on the looking glass host or the router. The - looking glass will attempt to serialize queries.</li> -<li>The looking glass will ping a router prior to querying it to avoid - trying to query routers which are down or otherwise inaccessible.</li> -<li>Login failures can be intermittent or permanent, either due to the - router being inaccessible from the looking glass machine, - or authorization failure(s). Contact your local network engineering - folks to resolve login failures.</li> -<li>Queries followed by <something> require an argument(s) in the text - window below the query list. Some queries take optional arguments - denoted by [something]. Multiple arguments should be separated by a - space.</li> -<li>Note that output from certain queries is cached by the server and may - be slightly out of date. These queries will be noted as such in the - output. This is limited to queries which could produce lots of output, - such as 'sh ip bgp dampened-paths'.</li> -<li>Note that some queries have potential to produce great load on the router - and produce lots of output, such as 'sh ip bgp' or 'sh ip bgp reg '^3561'. - The looking glass attempts to deny such commands.</li> -</ul> -<p> -Some useful hints: -<UL> -<li>Show interfaces can take arguments other than an interface name, assuming - the router is running an O/S version with the capability. For example; a - cisco can take 'descriptions' or 'brief' and 'terse' for the juniper. </li> -<li>Show ip bgp neighbor can take additional arguments (if configured to allow - it), such as 'advertised routes', 'flap-statistics', 'received-routes', - and 'routes'. The argument will be converted for the platform.</li> -</ul> - -</body> -</html> diff --git a/util/rtrfilter.README b/util/rtrfilter.README deleted file mode 100644 index 19b64c3..0000000 --- a/util/rtrfilter.README +++ /dev/null @@ -1,14 +0,0 @@ -rtrfilter can be used to filter rancid diffs to avoid sending unwanted -diffs to certain recipient(s) or diffs which those recipient(s) should -not see without the need to create separate or duplicate group(s). - -/etc/aliases eg: - -rancid-foo: engineering, - customer-ops-foo -# -# only send diffs for the SJC routers (aka. *.sjc.shrubbery.net) -customer-ops-foo: "| /home/rancid/util/rtrfilter -i '\.sjc\.' -s 'sjc router diffs' customer-ops" -# -customer-ops: jimbob, - sally diff --git a/util/rtrfilter.in b/util/rtrfilter.in deleted file mode 100755 index 28bd21a..0000000 --- a/util/rtrfilter.in +++ /dev/null @@ -1,158 +0,0 @@ -#!@PERLV_PATH@ -## -## Copyright (C) 1997-2001 by Henry Kilmer. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed without -## fee for non-commerical purposes provided that this copyright notice is -## preserved intact on all copies and modified copies. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -# -# rtrtfilter - "| rtrfilter -x <perl regex> -i <perl regex> -f <regex file> \ -# -u <From address> -s <subject> <rcpts>" -# expects to read an email message on stdin containing a diff from -# rancid and emails a filtered copy to <rcpts> with the subject of the -# original msg or the contents of -s <subject>. the perl regex(es) specified -# via -x or -i (exclusive and inclusive, respectively) are applied to the -# router names (ie: files) from the "Index:" of the diff o/p. alternatively, -# the regex's may be specified in -f <regex file> in the form: -# # comment -# x <regex> -# # comment -# i <regex> -# do not include /'s in the regex's. -# eg: -# #i inc1 -# i a0[12]\. -# i a0[34]\. -# # comment -# x router\.db -# x ^r0[0-9] -# #i foo -# -# exclusion takes precedence and defaults to nothing. inclusion defaults to -# everything. -# -# this program requires the Mail::Mailer module which can be found on CPAN. -## -BEGIN { -$me = $0; -$me =~ s/.*\/(\S+)$/$1/; -} - -require 'newgetopt.pl'; -use Mail::Mailer; - -# process command line options -$newgetopt'ignorecase=0; -$newgetopt'autoabbrev=1; -$result = &NGetOpt('h','x=s@','i=s@','f=s','s=s'); -&usage($result) if (defined($opt_h) || $result == 0); - -if ($#ARGV < 0) { - usage; -} -my($rcpts) = join(',', @ARGV); - -# if specified, read the regex file and append to @opt_i / @opt_x -if (defined($opt_f)) { - open(FILE, "< $opt_f") || die "Cant open the regex file $opt_f: $!"; - - while (<FILE>) { - next if (! /^(i|x)\s+(.*$)/); - #/(i|x)\s+(.*)$/; - if ($1 eq "i" ) { - push(@opt_i, $2); - } else { - push(@opt_x, $2); - } - } - close(FILE); -} - -# read the header, grok the subject line -my($subject, $from); -while (<STDIN>) { - last if (/^$/); - if (s/^from: //i) { - chomp; - $from = $_; - } - if (s/^subject: //i) { - chomp; - $subject = $_; - } -} -if (defined($opt_s)) { $subject = $opt_s;} -if (defined($opt_u)) { $from = $opt_u;} - -# filter the remainder of the mail. save mail in memory to avoid empty msgs -my(@mail); -my($skip) = 1; -while (<STDIN>) { - # look for /^Index: ", the filtering key - if (/^Index: (.*)$/) { - # strip the directory before passing to filter() - my($line) = ($1 =~ /.*\/([^\/\s]*)$/); - $skip = filter($line); - } - - next if ($skip); - - push(@mail, $_); -} - -# send mail, if any -if ($#mail < 0) { exit; } -$mailer = new Mail::Mailer 'sendmail', ('-t'); -$headers{From} = $from; -$headers{"Reply-To"} = $from; -$headers{"Errors-To"} = $from; -$headers{Subject} = $subject; -$headers{To} = $rcpts; -$headers{Precedence} = "bulk"; - -$mailer->open(\%headers); -print $mailer @mail; -$mailer->close; - -exit; - -# filter $line inclusive/exclusive (0 / 1) -sub filter { - my($line) = shift; - - # exclusion - if (defined(@opt_x)) { - foreach $regex (@opt_x) { - if ($line =~ /$regex/) { return(1); } - } - } - - # inclusion / default inclusion - if (! @opt_i) { return(0); } - foreach $regex (@opt_i) { - if ($line =~ /$regex/) { return(0); } - } - - # inclusion regex specified, but fall through - return(1); -} - -sub usage { - print STDERR <<USAGE; -usage: $me [-h] [-i <perl regex>] [-x <perl regex>] [-f <regex file>] [-u <From: address>] [-s <subject>] <mail rcpt> [<rcpt> ...] - -h prints this message - -f file containing perl regex matching router names (mind the cwd()) - -i perl regex matching router names (inclusive) - -u From: address - -s mail subject - -x perl regex matching router names (exclusive) -USAGE - exit $_; -} |