### Local Variables: ***
### mode:perl ***
### comment-column:0 ***
### comment-start: "### " ***
### comment-end: "***" ***
### End: ***
#
# ****************DO NOT MOVE OR CHANGE LINES ABOVE THIS*********************
#
# The first set of lines runs perl from any shell. The second set of lines 
# identifies the rest of the file as PERL for EMACS autoformatting. 
# See end of copyright for more information.
#
# 
# -------------------------------------------------------------------
#                                   X-BONE
#
#                          http://www.isi.edu/xbone
#                USC Information Sciences Institute (USC/ISI)
#                   Marina del Rey, California 90292, USA
#                          Copyright (c) 1998-2005
# 
# -------------------------------------------------------------------
#
# Copyright (c) 1998-2005 by the University of Southern California.
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation in source and binary forms for non-commercial
# purposes and without fee is hereby granted, provided that the above
# copyright notice appear in all copies and that both the copyright
# notice and this permission notice appear in supporting
# documentation, and that any documentation, advertising materials,
# and other materials related to such distribution and use acknowledge
# that the software was developed by the University of Southern
# California, Information Sciences Institute.  The name of the
# University may not be used to endorse or promote products derived
# from this software without specific prior written permission.
# 
# THE UNIVERSITY OF SOUTHERN CALIFORNIA MAKES NO REPRESENTATIONS ABOUT
# THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE.  THIS SOFTWARE IS
# PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# Other copyrights might apply to parts of this software and are so
# noted when applicable.
#
# -------------------------------------------------------------------
#
# Effort partly sponsored by the Defense Advanced Research Projects
# Agency (DARPA) and Air Force Research Laboratory, Air Force Materiel
# Command, USAF, under agreement numbers F30602-98-1-0200 (X-Bone) and
# F30602-01-2-0529 (DynaBone). The views and conclusions contained
# herein are those of the authors and should not be interpreted as
# necessarily representing the official policies or endorsements,
# either expressed or implied, of the Defense Advanced Research
# Projects Agency (DARPA), the Air Force Research Laboratory, or the
# U.S. Government.
#
# This work was partly supported by the NSF STI-XTEND (ANI-0230789)
# and NETFS (ANI-0129689) projects. Any opinions, findings, and
# conclusions or recommendations expressed in this material are those
# of the authors and do not necessarily reflect the views of the
# National Science Foundation.
#
# -------------------------------------------------------------------
#  $RCSfile: XB_Params.pm,v $
#
# $Revision: 1.68 $
#   $Author: pingali $
#     $Date: 2005/04/10 06:45:02 $
#    $State: Exp $
# ----------------------------------------------------------------------------
#
# Description:     Definition of default values for various options and 
#                  parameters used in XBone
# Primary Authors: the XBone Group (xbone@isi.edu)

package XB_Params;

require Exporter;
@ISA       = qw(Exporter);
@EXPORT    = qw();
@EXPORT_OK = qw(
                node_opts
		CISCO_BUDDY_USERNAME
        	CISCO_BUDDY_PASSWORD CISCO_BUDDY_ENABLE_PASSWORD
		NODEOS ALLOWED_NODEOS XBONE_NET
		DNS_FILE_FORWARD DNS_FILE_REVERSE NAMED_PID XBONE_HOME
		XBONE_PROTOCOL DNS_SERVER DNS_SERVER_SECONDARY
		DNS_UPDATE_MODE SECURITY_CA_CERT SECURITY_SERVER_CERT
		SECURITY_SERVER_KEY MAX_MCAST_RADIUS XB_CTL_PORT
		MCAST_ADDR CA_EMAIL XB_API_PORT IPSEC_ENABLE_RANDOM_PADDING
		NODEOS_LABEL IP_MULTICAST_IF IP_MULTICAST_TTL
		IP_MULTICAST_LOOP IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP
		IP_MULTICAST_VIF SOL_IP NET_TIMEOUT SO_RCVBUF
		ACTUATOR_MSG_LIMIT ACTUATOR_TIMEOUT
                LOG_DEST LOG_MASK LOG_FILE DUPLICATE_DETECTION_INTERVAL
                XBONE_RELEASE XBONE_OVLMGR_BACKCOMPAT XBONE_DAEMON_BACKCOMPAT
		IPSEC_DISABLE_REPLAY_PROTECTION
		LOOPBACK_IP_ADDRESS IP_ADDRESS_LENGTH REVISITATION 
		ENABLE_FIREWALL_FORWARDING NODE_ASSIGNMENT_POLICY);

use strict;
use sigtrap;
use FindBin;
use Config;

$XB_Params::XBONE_HOME = $FindBin::RealBin;

#=========================================================================
# XBone Versions & Dates
#=========================================================================

  # XBone software & protocol versions: XBone API, CTL, XOL, & release
  $XB_Params::api_ver   = "2.0";
  $XB_Params::ctl_ver   = "2.0";
  $XB_Params::xol_ver   = "2.0";
  $XB_Params::rel_ver   = "3.0";

#=========================================================================
# XBone Node Options & States
#=========================================================================

  # node_opts:  XBone node parameters
  %XB_Params::node_opts = ();

  # node_state: XBone node state
  %XB_Params::node_state = ();

  # persistent socket: stores socket handles for persistent connections
  %XB_Params::persistent_socks = ();



#=========================================================================
# Configuration Options
#-------------------------------------------------------------------------
#
# Default values for XBone node configuration options:
#
#   o Options here could be set from either command line or conf file.
#   o Precedence:
#     [command line] > [configuration file] > [XB_Params (default)]
#   o Do not change this file unless it's site- or network-specific.
#     Use command line or configuration file to override default values
#     with node-specific properties.
#=========================================================================

#= 0. Generic Options/Parameters =========================================

  #Operational model: automatic or not? 
  $XB_Params::auto = "yes"; 
  
  # conf: XBone node configuration file, full or relative path
  $XB_Params::conf    = "/usr/local/etc/xbone/xbone.conf";
  $XB_Params::gui_conf  = "/usr/local/etc/xbone/xbone-gui.conf";

  # working directory: for state & log files, application deployment, etc.
  $XB_Params::workdir = "/var/xbone";

  # state: XBone state file
  $XB_Params::state_file = "xbone.state";

  # daemon type: types of a node in virtual networks
  #   host:   host
  #   router: router
  #   node:   host or router
  #   meta:   meta nodes (overlay managers) 
  $XB_Params::daemon_type = "node";

#= 1. Node IP config parameters =============================================

  # hostname
  $XB_Params::hostname = "";

  # address for control connection
  $XB_Params::ctl_addr  = "";
  $XB_Params::ctl_addr6 = "";

  # address for app/data connection
  $XB_Params::app_addr  = "";
  $XB_Params::app_addr6 = "";

#= 2. XBone Network Parameters ==============================================

  # IP protocol version support:
  #
  #  ipproto   control  multicast  overlay*
  # =======================================
  #   ipv4       ipv4     ipv4      ipv4
  #
  #   ipv6       ipv6     ipv6      ipv6
  #
  #            / ipv4 --- ipv4  --- ipv4
  #   both ----
  #            \ ipv6 --- ipv6  --- ipv6
  # =======================================
  # * overlay    net/link/phy
  #    ipv4      v4 / v4 / v4
  #    ipv6      v6 / v6 / v6
  #
  $XB_Params::ipproto = "both";

  # old & legacy values: [TODO remove these once we cleanup]
  $XB_Params::address_type     = $XB_Params::ipproto;
  $XB_Params::control_protocol = $XB_Params::ipproto;

  # multicast address/group: http://www.iana.org
  $XB_Params::xbone_mcast_addr   = "224.192.0.1";
  $XB_Params::xbone_mcast_addrv6 = "FF0c:0:0:0:0:0:0:6061";

  # ports:
  #   xbone_api_port: XBone API -> manage virtual networks
  #                   official IANA port: x-bone-api 2165
  #   xbone_ctl_port: XBone CTL -> configure nodes in a virtual network
  #                   official IANA port: x-bone-ctl 265
  $XB_Params::xbone_api_port = 2165;
  $XB_Params::xbone_ctl_port = 265;

  # RTT:
  #   Rough estimate on the timeout for RTT in seconds
  #   Note that all timeout values are derived from RTT.
  $XB_Params::xbone_rtt = 10;

#= 3. Logging ===============================================================

  # log_dest: log destination(s), combine the chosen ones with logic OR '|'
  #           operation: SYSLOG, ERR, OUT, FILE.

  $XB_Params::SYSLOG = (2**0);		# log to syslog
  $XB_Params::ERR    = (2**1);		# log to STDERR
  $XB_Params::OUT    = (2**2);		# log to STDOUT
  $XB_Params::FILE   = (2**3);		# log to file

  $XB_Params::log_dest = $XB_Params::FILE | $XB_Params::OUT;

  # log_mask: log mask (copied from syslog(3)), list & suggested usages
  #             emerg:      (panic)
  #             alert:      (should be corrected immediately)
  #             crit:       (critical conditions)
  #             err:        errors
  #             warning:    warning messages
  #             notice:     not error conditions, but should be handled
  #             info:       enter/exit subroutines
  #             debug:      misc logs: stop points, traces, etc.
  #             debug0:
  #             debug1:     general debugging info
  #             debug2:     more detailed debugging info
  #             debug3:     dump simple variables
  #             debug4:     dump data structures
  #             debug5:     dump pkts & messages
  #             ------------------------------------------------------
  #             debug6:     dump parsed object hash
  #             debug7:     dump messages
  #             debug8:     misc debug messages & info
  #             debug9+:    gory details not suitable for human being

  $XB_Params::log_mask =
  # For release:
    "emerg alert crit err warning notice";
  # --------------------------------------------------------------
  # For development:
  # "emerg alert crit err warning notice info debug debug0 debug1 ".
  # "debug2 debug3 debug4 debug5 debug6 debug7 debug8";

  # log_file: log file, only effective if FILE is included in LOG_DEST
  $XB_Params::log_file = "xbone.log";

#= 4. X.509 certificate & key info ==========================================

  # cert & key: node certificate & key files
  $XB_Params::node_cert = "/usr/local/etc/xbone/cert/xbone-node-cert.pem";
  $XB_Params::node_key  = "/usr/local/etc/xbone/cert/xbone-node-key.pem";

# CAcert: CA cert file:
  $XB_Params::ca_cert   = "/usr/local/etc/xbone/cert/CAcert.pem";
  $XB_Params::ca_path   = "/usr/local/etc/xbone/cert";

#= 5. ACLs ==================================================================

  # List of allowed parent Overlay Managers
  @XB_Params::ovl_manager = ();

  # List of user ACL
  %XB_Params::user_acl = (
	#acl num => <name-pattern> <capability> <tun-count> <uid>
	50000 => '\S+ guest  0  nobody'
   );

%XB_Params::shared_user_acl = ();

#= 6. Node Features & Capabilities ==========================================

  # OS
  $XB_Params::os = '';
  $XB_Params::NODEOS = "";

  # OS release version
  $XB_Params::os_version = "";

  # Kernel Version
  $XB_Params::kern_version = "";

  # System/CPU architecture
  $XB_Params::node_arch = "";

  # Routing
  # - routing types:      dynamic vs. static
  # - routing daemons:    [if dynamic] zebra, xorp, ...
  # - routing algorithms: [if dynamic] RIP, iBGP, eBGP, OSPF, ...
  # * currently, overload "routing" to mean the following:
  #   o static:  static routing
  #   o dynamic: with zebra/rip, **the only combination XBone supports now**
  $XB_Params::routing = "static";

  # IPsec
  $XB_Params::IPsec = "yes";

  # QoS
  $XB_Params::qos = "no";

#= 7. Address Server Parameters (Optional) ==================================

  # addrserv: IP allocator / address server flag
  $XB_Params::addrserv  = 1;

  # address blocks if ($XB_Params::addrserv)
  $XB_Params::netv4  = "172.26.0.0/16";
  $XB_Params::linkv4 = "172.27.0.0/16";
  $XB_Params::netv6  = "fec0::/112";
  $XB_Params::linkv6 = "fed0::/112";

  # remote address server
  $XB_Params::addr_server = '';

  # temporary flag to use new IP allocation code: (default old)
  # must have p5-NetAddr-IP-3.17 if set to 1
  $XB_Params::new_alloc = 0;

#= 8. DNS Settings ==========================================================

  #Enable/Disable DNS 
  $XB_Params::dns = "no";

  # The node running the BIND Server 
  $XB_Params::name_server = ""; 

  # this name has to match the specification in the 
  # named configuration files. If you are not sure, leave this
  # as it is. These are the two values used during setup of the 
  # DNS. 
  # ***** NOTE REVERSE ZONE MUST BE CONSISTENT WITH XB_Params::netv4
  $XB_Params::forward_zone = "xbone.overlay"; 
  $XB_Params::reverse_zone = "26.172.IN-ADDR.ARPA";
  $XB_Params::reverse_zone6 =
  "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.e.f.IP6.INT";

  # File containing the shared key name and value for authenticated
  # dynamic update. This is the name you use while setting up the
  # named. Copy the K....+157+.....key file. make sure that the
  # permissions are appropriately set.
  $XB_Params::dns_key_file = "/usr/local/etc/xbone/Kkey-test.+157+32035.key"; 

#= 9. Dynamic Routing Settings =============================================

  # Zebra home directory
  $XB_Params::zebra_dir = "/usr/local/etc/zebra";

#=========================================================================
# XBone Runtime Parameters
#   Some runtime parameters not configurable from command line or conf file
#=========================================================================

#= Timers ================================================================

  # Timer/Timeout values in seconds

  # o rtt_timeout: general timeout for network transactions (scale of RTT)
  # o ovl_timeout: general timeout for overlay transactions (scale of web)
  # o refresh:  refresh message period
  # o expire:   expiration time for overlays in the absence of refresh msgs
  # o period:   period the node checks for sending refresh or expiring an ovl

  $XB_Params::rtt_timeout = 3;

  $XB_Params::ovl_timeout = 60;

  $XB_Params::refresh = 60*15;

  $XB_Params::expire  = 60*120;

  $XB_Params::period  = 60*5;


  # state_time: time of the state recorded in the state file
  $XB_Params::state_time = time;

  # Time period for refreshing shared data (CA, ACL)
  $XB_Params::data_refresh_period = 3600;


#= Minimum OS versions for various features: XBone, IPsec, IPv6 ==========

  %XB_Params::os_support =
    (
      freebsd => 470000,
      linux   => "2.4.18"
    );

  %XB_Params::IPsec_support =
    (
      freebsd => 450000,
      linux   => "2.5.47"
    );

  %XB_Params::IPv6_support =
    (
      freebsd => 450000,
      linux   => "2.6.x"
    );


#= ACL ===================================================================

  # authentication type
  @XB_Params::auth_type = qw(x509);

  # access level
  %XB_Params::access_level = (

    'deploy' =>
      [
        "create_overlay", "discover_daemons", "list_overlays",
        "overlay_status", "destroy_overlay",
        "select", "config",  "status",  "stop",
        "invite", "release", "refresh", "discover"
      ],

    'guest' =>
      [
        "discover_daemons", "list_overlays",
        "overlay_status",
        "status",
        "discover"
      ]
  );

  # set default app deployment suid to highest allowd by ACL when not
  # specified in overlay create request, otherwise, it'll always be 'nobody'
  $XB_Params::HIGHEST_ACL_SUID = 0;

#= Misc. =================================================================

  $XB_Params::DEBUGGING = 0;		# main switch, turn on the following

  $XB_Params::SSL_DEBUG = 1;		# 0=none, 1=errors, 2=1+cipher
                                        # 3=2+progress, 4=3+data

  $XB_Params::NO_FORK   = 0;

  $XB_Params::PERSISTENT_SOCK = 0;

  # APPEND_ERR_LOG:
  #   0 => Record only the first "err" log.
  #   1 => Accumulate (append) all "err" logs until it's cleared. (LOOOONG)
  $XB_Params::APPEND_ERR_LOG = 0;

  # XBone message delimiters
  $XB_Params::msg_delimiter = "XBoneEOC";

  # Flag to allow hosts using Guest Host certificate
  $XB_Params::GUEST_OK = 0;

  # Hostname on the Guest Host certificate
  $XB_Params::guesthost = 'guest.xbone.overlay';

  # Error reply: used to collect error message whenever XB_Log::log is called
  #   with "err" log mask. **Accummulative, must be clear after it's used.**
  $XB_Params::error_reply = "";

  # pid file. 
  $XB_Params::pidfile = "xbone.pid";
  
#= Used by Cisco. ============================================================

  $XB_Params::CISCO_BUDDY_USERNAME = "";
  $XB_Params::CISCO_BUDDY_PASSWORD = "";
  $XB_Params::CISCO_BUDDY_ENABLE_PASSWORD = "";

#= Used by LDAP. =============================================================

  # information on certificates is filled based on command line parameters, 
  # configuration file and default settings in XB_Params. There is duplication 
  # of parameters to allow us to access LDAP server before the entire 
  # command line and configuration file processing is completed. 
  %XB_Params::ldap = ( 
		       "registered" => "no", # registered already? 
		       "enable" => "no", 
		       "server" => "ldap.xbone.net", 
		       "scope" => "local",
		       "port" => "636", 
		       "version" => "3", 
		       "instance" => "",
		       "userdn"  => "cn=XBoneUser,ou=Users,ou=local,ou=xbone",
		       "hostname" => "", 
		       "password" => "", 		       
		       "ca_cert" => "",   #To be filled later 
		       "ca_path" => "",   #To be filled later 
		       "node_cert" => "", #To be filled later 
		       "node_key" => "",  #To be filled later 
		       );


#= XBone World Wide Network===========================================

  %XB_Params::register = (
			  "enable" => "no",
			  "variable" => "os, os_version, ipproto", 
			  ); 


#------------------------------------------------------------------------------
# OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD
#------------------------------------------------------------------------------

############################################################
# The following are used only by xb-overlay-manager
# 	They are provided here because
#		- xb-overlay-manager has no config file
#		- this is the place for changeable constants
############################################################

$XB_Params::XBONE_OVERLAY_MANAGER =   # Hostname used by the OM to 
  "www.xbone.net";                 # identify itself in heartbeats

$XB_Params::SECURITY_SERVER_CERT =    # used by the OM as its public key
  "$XB_Params::XBONE_HOME/...";       # XXX no idea where this goes after reorg 

$XB_Params::SECURITY_SERVER_KEY =     # used by the OM as its private key
  "$XB_Params::XBONE_HOME/...";       # XXX no idea where this goes after reorg 

$XB_Params::DEMO_MODE = 0;            # Flag for demo mode. Set this to 1 to
                                    # force the OM to pick nodes in the 
                                    # reverse order. 0 is normal operation.

$XB_Params::XBONE_OVLMGR_BACKCOMPAT = # Overlay Manager is backward compatible
  "";				    # with these XBONE_RELEASE release versions
                                    # (separated by "|", eg, "1.3|1.2")

$XB_Params::OVLMGR_PING_INTERVAL = 60*15;
                                    # Overlay Manager sweeps all hosts in
  				    # all overlays, issuing heartbeat
				    # messages to each of them.  This sweep
				    # is performed as once every interval.
				    # Value is seconds.
############################################################
# The following are used only by nearly everybody :-)
############################################################

$XB_Params::XBONE_VERSION_DATE =	    # Date this version was created.
# "30/10/2001";                     # "<day_num>/<month_num>/<year_num>"
  "01/01/2005";                     # <- for development

$XB_Params::XBONE_OBSOLETE_LIMIT =    # Seconds after the version date
  60*60*24*30*6;                    # when the version should be obsolete.

$XB_Params::API_PROTOCOL = "2.0";     # Protocol version of the XBone API

$XB_Params::XBONE_PROTOCOL = "1.5";   # Protocol version of the XBone internal
				    # communication (OM <-> RD)
				    
$XB_Params::XBONE_RELEASE = "3.0";    # Version number of the XBone software 
				    # release

$XB_Params::XBONE_NET =		    # The domain name associated with this
  "xbone.overlay";                      # particular Xbone overlay network.


@XB_Params::ALLOWED_DNS_NODEOS =	    # List of allowed OS names for the one
  qw(freebsd linux solaris sunos kame nist cisco);  # RD host that manipulates the Xbone
                                    # DNS domain.


$XB_Params::SYSLOG = (2**0);
$XB_Params::ERR    = (2**1);
$XB_Params::OUT    = (2**2);
$XB_Params::FILE   = (2**3);

$XB_Params::LOG_DEST =                # Log to both the log file and stderr.
# $XB_Params::FILE;                   # Also see XB_Log.pm.
  $XB_Params::FILE|$XB_Params::OUT;

				    # Specify the set of things to log.
$XB_Params::LOG_MASK =		    # emerg, alert, crit, err, warning, notice
				    # info, debug0, debug1, ...
				    # For debugging, info, debug, & debug1 are
				    # useful, but very noisy.
# uncomment one of the following two groups for release or coding/debugging

# "emerg alert crit err warning notice"; # for release, log critical ones only

"emerg alert crit err warning ".	# for internal coding/debugging, show
"notice info debug debug0 debug1 ".    # everything
"debug2 debug3 debug4 debug5";


$XB_Params::LOG_FILE =                # File name where logging data is written.
  "/var/log/xbone.log";             # Use only when XB_Params::LOG_DEST & "FILE".


$XB_Params::DAEMON_CONF_FILE = "/usr/local/etc/xbone/Xbone_daemon.conf";
                                    # location of Xbone daemon's configuration

$XB_Params::DAEMON_STATE_DIR  = "/var/xbone";


$XB_Params::REVISITATION = 0;         # Should revisitation be enabled? 


#== XBone Runtime Directories ================================================= 
# - XBONE_RUN_DIR:      Base for other XBone runtime directories. Must be
#                       configurable from command line & config file.
#==============================================================================
$XB_Params::XBONE_RUN_DIR = "/var/xbone";

$XB_Params::DAEMON_STATE_FILE = "$XB_Params::DAEMON_STATE_DIR/Xbone_daemon.state";
                                    # File where Xbone daemon's overlay state
                                    # is kept for daemon crash recovery.

%XB_Params::DAEMON_STATE = ();	    # Hash of Xbone daemon's current state

$XB_Params::ERASE_AT_STARTUP = 0;     # Erase Xbone daemon's tunnel, IPSec
  				    # and route state.  NOTE: This should be
                                    # non-zero only at ISI.

$XB_Params::DAEMON_STATE_TIME = 1;    # Last time that the Xbone daemon's state
  				    # was dumped out to the state file.

 $XB_Params::OVERLAY_ALIVE_TIME = 60*120;
                                     # Seconds that the resource daemon will
                                     # allow an overlay to remain without
                                     # receiving a keep-alive message from
                                     # an overlay manager.

 $XB_Params::OVERLAY_SWEEP_INTERVAL = 60*10;
                                     # Seconds that resource daemon waits
                                     # between sweeps, looking for overlays
                                     # that have not been kept alive.
 $XB_Params::NET_TIMEOUT = 120;
                                     # Network timeout in seconds. Use one
                                     # instead of 5 different timeouts before.


#------------------------------------------------------------
# OS dependent section to define NAMED_ZONE_PATH & NAMED_PID.
#------------------------------------------------------------

if ($Config{osname} eq "linux") {
  $XB_Params::NAMED_ZONE_PATH="/var/named/xbone"; # NEED VERIFICATION!
  if(-d "/var/run/named"){
    $XB_Params::NAMED_PID="/var/run/named/named.pid";
  }else{
    $XB_Params::NAMED_PID="/var/run/named.pid";
  }
}
if ($Config{osname} eq "solaris") {
  $XB_Params::NAMED_ZONE_PATH="/var/adm/domain/xbone";
  $XB_Params::NAMED_PID="/var/adm/domain/named.pid";
}
if ($Config{osname} eq "freebsd") {
  $XB_Params::NAMED_ZONE_PATH="/etc/namedb/xbone";
  $XB_Params::NAMED_PID="/var/run/named.pid";
}     

$XB_Params::DNS_FILE_FORWARD =        # Forward DNS database file for overlays.b
  "$XB_Params::NAMED_ZONE_PATH/xbone-forward.zone";

$XB_Params::DNS_FILE_REVERSE =        # Reverse DNS database file for overlays
  "$XB_Params::NAMED_ZONE_PATH/xbone-reverse.zone";

$XB_Params::DNS_SERVER =              # Primary Xbone DNS name server
 "dns2.xbone.overlay"; 

$XB_Params::DNS_SERVER_SECONDARY =    # Secondary Xbone DNS server
 "dns2.xbone.overlay"; 

###################################################################
# The only allowed values for the DNS update mode are:
#
# $DNS_UPDATE_MODE = "update_both";
# Update both assumes that the DNS is running in two primaries
# mode and that the DNS system will not update the second primary
#
# $DNS_UPDATE_MODE = "update_1_hup_2";
# Update 1 hup 2 assumes that we have one primary and one secondary
# so we update the primary and hup the secondary to get an instantaneous
# update.
#
# The current decision is to run as update_1_hup_2
###################################################################

$XB_Params::DNS_UPDATE_MODE =         # See above block comment.
  "update_1_hup_2";

$XB_Params::DNS_TIMEOUT = 15; 	    # Fifteen second DNS cache time.
  				    # A value lower than 15 is undefined.

# used by both RD and OM when calling XB_SSL::init()
# XXX shouldn't this be kept where the conf file is kept? -- Lars
$XB_Params::SECURITY_CA_CERT = 
  "$XB_Params::XBONE_HOME/isi/ca/CAcert.pem";

# IPv6 peek: define mcast address
$XB_Params::MCAST_ADDR =		    # Multicast address used by XBONE
  "224.192.0.1";

$XB_Params::XB_CTL_PORT = 3365;	    # Multicast port used by XBone and alos
				    # the unicast TCP and UDP ports used.
				    # Official IANA port: x-bone-ctl

$XB_Params::XB_API_PORT = 4365;	    # TCP port used by XBone API
				    # Official IANA port: x-bone-api

# IPv6 peek: define address blocks
$XB_Params::XB_IP_EXTERNAL_BLOCK =    # IP block for releases, from RFC 1918
  "172.26.0.0/16";                 # (breaks rev DNS w/o RD using XB DNS) 
$XB_Params::XB_IP_INTERNAL_BLOCK =    # IP block for releases, from RFC 1918
  "172.27.0.0/16";                 # (breaks rev DNS w/o RD using XB DNS) 

#$XB_Params::XB_IP_EXTERNAL_BLOCK =    # IP block owned by X-Bone project, for
#  "198.32.6.0/24";                  # local ISI use
#$XB_Params::XB_IP_INTERNAL_BLOCK =    # IP block owned by X-Bone project, for
#  "198.32.7.0/24";                  # local ISI use

# IPv6 peek: define subnet
$XB_Params::XB_OVL_SUBNET_BITS = 8;

$XB_Params::MAX_MCAST_RADIUS = 16;    # The largest radius that should be used

$XB_Params::DUPLICATE_DETECTION_INTERVAL  # time interval in seconds we should
  = 120;                                # keep msgs to prevent duplicates 

$XB_Params::ACTUATOR_MSG_LIMIT =	    # Maximum size of overlay mgr's reservation
    65536;		            # datagram

$XB_Params::ACTUATOR_TIMEOUT = 15;    # Time OM waits during resource discovery

$XB_Params::IP_MULTICAST_IF = 9;
$XB_Params::IP_MULTICAST_TTL = 10;
$XB_Params::IP_MULTICAST_LOOP = 11;
$XB_Params::IP_ADD_MEMBERSHIP = 12;
$XB_Params::IP_DROP_MEMBERSHIP = 13;
$XB_Params::IP_MULTICAST_VIF = 14;


########################################################
# getsockopt() and setsockopt layer for IP protocol.
# Needed due to bug in Perl version of getprotobyname().
########################################################

$XB_Params::SOL_IP = 0;
$XB_Params::SO_RCVBUF = 128*1024;

#######################################
# Global variables used across modules
#######################################

@XB_Params::DNS_ADD_FWD_PARMS = ();     # Holds DNS forward addition parameters
@XB_Params::DNS_DEL_FWD_PARMS = ();     #   "    "  forward deletion     "

#== Application Deployment ====================================================
$XB_Params::ENABLE_APP_DEPLOY = 1;      # set to 1 to enable app deployment code
%XB_Params::APP_LIST = ();              # hash: AppName -> [ AppFile, LastTime ]
$XB_Params::APP_RUN =                   # absolute path for application run-time
  "$XB_Params::XBONE_RUN_DIR/apps";     # directory
@XB_Params::APP_KEYWORDS =              # list of known keywords to replace
  ("REALHOST", "OVLHOST", "OVLNAME", "OVLSUFFIX", "REALIP", "IPLIST", "IP1",
   "APPNAME", "APPSCRIPT");
#==============================================================================

# IPv6 peek: loopback
$XB_Params::LOOPBACK_IP_ADDRESS         # IP Loopback address 
    = "127.0.0.1";

# IPv6 peek: define address length
$XB_Params::IP_ADDRESS_LENGTH           # Length of IP Address
    = 32;

$ENV{PATH} = "";
foreach my $thispath (qw(/usr/local/v6/ /usr/local/ / /usr/)) {
  foreach my $subdir (qw(sbin bin)) {
    if(-d $thispath.$subdir) { $ENV{PATH} .= ":".$thispath.$subdir; }
  }
}
$ENV{PATH} =~ s/^://;

$XB_Params::TEMP_DIR = "/tmp/";        # Temporary Directory to use


$XB_Params::CA_EMAIL =                # email address of the CA that signs 
  "X-Bone Certification Authority ".# certificates for this xbone installation
  "<xbone\@isi.edu>";               # (this should go somewhere else)


1;                            # Insure TRUE return if module is interpreted.


syntax highlighted by Code2HTML, v. 0.9.1