diff options
Diffstat (limited to 'dlink-ng/dlink-ng-config.pm')
-rwxr-xr-x | dlink-ng/dlink-ng-config.pm | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/dlink-ng/dlink-ng-config.pm b/dlink-ng/dlink-ng-config.pm new file mode 100755 index 0000000..cfeaf7a --- /dev/null +++ b/dlink-ng/dlink-ng-config.pm @@ -0,0 +1,166 @@ +#!/usr/bin/perl +use strict; +use warnings; +package dlinkng::config; + +# Common config +our $domain_name = ".net.party.bylan.net"; # DNS-name to append to hostnames (overriden later on for TG-mode) +our $dlink_def_user = "admin"; # Default user for a factory-default D-Link +our $dlink_def_ip = "10.90.90.90"; # IP for a factory-default D-Link +our $dlink_def_mask = "255.255.255.0"; # Mask for a factory-default D-Link +our $dlink_router_ip = "10.90.90.91"; # IP to use on the router/core +our $dlink_prefix = "30"; # Prefix to use when setting D-Link IP +our $dhcp4_proxyprofile = "DHCPv4Proxy"; # DHCPv4 proxy profile to use on IOS-XR +our $dhcp6_proxyprofile = "DHCPv6Proxy"; # DHCPv6 proxy profile to use on IOS-XR +our $vrf_prefix = "dlink"; # What to prefix the VRF-number (Thread ID) with +our $max_threads = 1; # Max threads to use +our $dlink_host_suffix = "_DGS-3100"; # Suffix for hostname on the D-Link switches (needed by NMS) +our $default_coreswos = "ios"; # Default OS on coresw +our $dlink_lacp_start = '45'; # First port for LACP-group on D-Links +our $dlink_lacp_end = '48'; # Last port for LACP-group on D-Links +our $skip_last_port = 0; # Skip last port -- set up as access port +our $use_ssh_cisco = 1; # Use SSH towards Cisco-boxes +our $use_ssh_dlink = 0; # Use SSH towards D-Link switches +our $access_vlan = '3602'; # VLAN to use for skipped port + +# Specific config -- just declare empty +our $cisco_user = ""; # Username used when logging into the swithces +our $cisco_pass = ""; # Password used when logging into the switches +our $dhcprelay4_pri = ""; # Primary ip helper-address / ip dhcp relay address +our $dhcprelay4_sec = ""; # Secondary ip helper-address / ip dhcp relay address +our $dhcprelay6_pri = ""; # Primary ipv6 dhcp relay +our $dhcprelay6_sec = ""; # Secondary ipv6 dhcp relay +our $log_dir = ""; # Path to logfiles + +# Placeholders, setting them after all config loaded +our ($po_config, $last_port_config, $os_regex, $os_info); + +# Set variables that relies on all config being loaded +sub set_variables{ + # Custom Portchannel-config + $po_config = { + ios => [ + "logging event link-status", + #"ip access-group end-user-protection in", + #"ip directed-broadcast 2000", + #"ipv6 nd prefix default 300 300 no-autoconfig", + #"ipv6 nd managed-config-flag", + #"ipv6 nd other-config-flag", + #"ipv6 dhcp relay destination $dhcprelay6_pri", + #"ipv6 dhcp relay destination $dhcprelay6_sec" + ], + nx => [ + "", + ], + xr => [ + "logging events link-status", + "ipv4 directed-broadcast", + "ipv6 nd prefix default 300 300 no-autoconfig", + "ipv6 nd other-config-flag", + "ipv6 nd managed-config-flag", + ], + }; + + # Custom last port config + $last_port_config = { + ios => [ + "logging event link-status", + "switchport mode access", + "switchport access vlan $access_vlan", + "spanning-tree bpduguard enable", + ], + nx => [ + "", + ], + xr => [ + "", + ], + }; + + # Define what OS-version a coresw runs + # NX, XR, XE, etc + # The regex is matched against $coreswip + $os_regex = { + ios => 'iosbox', + nx => 'flexusnexus', + xr => 'c01', + }; + + # Configure settings for each OS + $os_info = { + ios => { + max_sessions => 10, + }, + nx => { + # define 64 sessions on nxos + # nx-os# conf t + # nx-os(config)# feature dhcp + # nx-os(config)# line vty + # nx-os(config-line)# session-limit 64 + max_sessions => 50, + }, + xr => { + # telnet vrf default ipv4 server max-servers 100 access-list MGNTv4 + # telnet vrf default ipv6 server max-servers 100 access-list MGNTv6 + max_sessions => 50, + }, + }; +} + +# Load ByLAN related configuration +sub load_bylan_config{ + # Define bylan-dir, and add it to %INC + my $bylan_dir; + BEGIN { + use FindBin; + $bylan_dir = "$FindBin::Bin"; # Assume working-folder is the path where this script resides + } + use lib $bylan_dir; + use bylan; + use Getopt::Long; + + # Load config + my $config_file = "$bylan_dir/bylan.conf"; + my $conf = Config::General->new( + -ConfigFile => $config_file, + -InterPolateVars => 1); + my %config = $conf->getall; + + # Options + $cisco_user = "$config{switches}->{user}"; # Username used when logging into the swithces + $cisco_pass = "$config{switches}->{pw}"; # Password used when logging into the switches + $dhcprelay4_pri = "$config{servers}->{dhcp1_ipv4}"; # Primary ip helper-address / ip dhcp relay address + $dhcprelay4_sec = "$config{servers}->{dhcp2_ipv4}"; # Secondary ip helper-address / ip dhcp relay address + $dhcprelay6_pri = "$config{servers}->{dhcp1_ipv6}"; # Primary ipv6 dhcp relay + $dhcprelay6_sec = "$config{servers}->{dhcp2_ipv6}"; # Secondary ipv6 dhcp relay + $log_dir = "$bylan_dir/logs/telnet"; # Path to logfiles +} + +# Load TG related configuration +sub load_tg_config{ + my $tg_dir = '/root/tgmanage'; + BEGIN { + require "$tg_dir/include/config.pm"; + eval { + require "$tg_dir/include/config.local.pm"; + }; + } + + # Options + $cisco_user = "$nms::config::ios_user"; # Username used when logging into the swithces + $cisco_pass = "$nms::config::ios_pass"; # Password used when logging into the switches + $domain_name = ".infra.$nms::config::tgname.gathering.org"; # DNS-name to append to hostnames + $dhcprelay4_pri = "$nms::config::dhcp_server1"; # Primary ip helper-address / ip dhcp relay address + $dhcprelay4_sec = "$nms::config::dhcp_server2"; # Secondary ip helper-address / ip dhcp relay address + $log_dir = "$tg_dir/dlink-ng/log"; # Path to logfiles +} + +# Uncomment the one you want +#load_bylan_config(); +#load_tg_config(); + +# Set last variables that depend on the config above being set +set_variables(); + + +1; |