From ab7ba3ff7b16236105ac642513c0410a54da1122 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zolt=C3=A1n=20Felleg?= Date: Mon, 10 Jun 2024 13:25:55 +0200 Subject: [PATCH] Added switches (configurations and html creation script). --- sources/switches/logins.txt | 2 - sources/switches/printhtml.py | 266 ++++++++++++++++++ sources/switches/printhtml.py.2lines | 274 +++++++++++++++++++ sources/switches/t1600g-28ts-ext.data | 106 +++++++ sources/switches/t1600g-28ts-mgt.data | 105 +++++++ sources/switches/t1600g-28ts-nrl.data | 73 +++++ sources/switches/t1600g-28ts-nru.data | 73 +++++ sources/switches/t1600g-52ts-int.data | 192 +++++++++++++ sources/switches/t1600g-52ts-int.data.2lines | 115 ++++++++ sources/switches/t1600g-52ts-sri.cfg | Bin 3837 -> 4403 bytes sources/switches/vlans.txt | 13 +- 11 files changed, 1209 insertions(+), 10 deletions(-) create mode 100755 sources/switches/printhtml.py create mode 100755 sources/switches/printhtml.py.2lines create mode 100644 sources/switches/t1600g-28ts-ext.data create mode 100644 sources/switches/t1600g-28ts-mgt.data create mode 100644 sources/switches/t1600g-28ts-nrl.data create mode 100644 sources/switches/t1600g-28ts-nru.data create mode 100644 sources/switches/t1600g-52ts-int.data create mode 100644 sources/switches/t1600g-52ts-int.data.2lines diff --git a/sources/switches/logins.txt b/sources/switches/logins.txt index 662bf2f..1d23b65 100644 --- a/sources/switches/logins.txt +++ b/sources/switches/logins.txt @@ -3,7 +3,5 @@ t1600g-28ts-srp admin/Passw@rd01 t1600g-28ts-srm admin/admin t1600g-52ts-sri admin/admin t1600g-28ts-sre admin/admin -is5030-2 -is5030-1 t1600g-28ts-ffu admin/admin t1600g-28ts-ffl admin/admin diff --git a/sources/switches/printhtml.py b/sources/switches/printhtml.py new file mode 100755 index 0000000..31cd016 --- /dev/null +++ b/sources/switches/printhtml.py @@ -0,0 +1,266 @@ +#!/usr/bin/env python + + +import sys + + +port_size = (117, 81) +rj45_points = [(0, 81), (117, 81), (117, 15), (89, 15), + (89, 0), (28, 0), (28, 15), (0, 15)] +sfp_points = [(0, 81), (117, 81), (117, 15), (0, 15)] + +svg_padding = (20, 20) + +with open(sys.argv[1]) as f: exec(f.read()) + +html_document_start = """ + + + + """ +html_heading = '

{} ({})

' +html_svg_start = ' ' +html_svg_end = ' ' +html_table_start = """ + + + + + + + + """ +html_table_data = """ + + + + + + + """ +html_table_end = '
PortPVIDVLANsLAGPeerRemark
{}{}{}{}{}{}
' +html_document_end = """ +""" + + +def flip(port_type): + if port_type == 'rj45': + port_points = rj45_points + elif port_type == 'sfp': + port_points = sfp_points + else: + raise + return [(p[0], port_size[1] - p[1]) for p in port_points] + +def get_lag(port_serial): + for (lag_serial, lag_dict) in lags.items(): + ports = lag_dict['ports'] + if port_serial in ports: + if lag_dict['type'].lower() == 'lacp': + return ''.join(('L', str(lag_serial))) + elif lag_dict['type'].lower() == 'static': + return ''.join(('S', str(lag_serial))) + else: + raise + return '' + +def get_cable(port_serial): + for (cable, ports) in cables.items(): + if port_serial in ports: + return cable + +def get_connector(port_serial): + for (connector, ports) in connectors.items(): + if port_serial in ports: + return connector + raise + +def get_pvid(port_serial): + for (pvid, ports) in pvids.items(): + if port_serial in ports: + return pvid + raise + +def get_svg_size(): + (max_port_x_position, max_port_y_position) = (0, 0) + for port_dict in ports.values(): + (port_x_position, + port_y_position) = port_dict['position'] + if port_x_position > max_port_x_position: + max_port_x_position = port_x_position + if port_y_position > max_port_y_position: + max_port_y_position = port_y_position + svg_x_size = (port_size[0] + svg_padding[0]) * max_port_x_position + svg_x_size += port_size[0] + 2 * svg_padding[0] + svg_y_size = (port_size[1] + svg_padding[1]) * max_port_y_position + svg_y_size += port_size[1] + 2 * svg_padding[1] + return (svg_x_size, svg_y_size) + +def get_vlans(port_serial): + port_vlans = [] + for (vlan_number, ports) in sorted(vlans.items()): + if port_serial in ports: + port_vlans.append(vlan_number) + return port_vlans + +def is_flipped(port_serial): + if port_serial in flippeds: + return True + return False + +def set_vlan_classes(): + vlan_combinations = [] + for port_serial in ports.keys(): + port_vlans = tuple(get_vlans(port_serial)) + if port_vlans not in vlan_combinations: + vlan_combinations.append(port_vlans) + vlan_combinations.sort() + for port_serial in ports.keys(): + port_vlans = tuple(get_vlans(port_serial)) + index = vlan_combinations.index(port_vlans) + if index == 0: + vlan_class = 'vlan1' + else: + class_serial = index % 6 + 1 + vlan_class = 'vlans{}'.format(class_serial) + ports[port_serial]['vlan_class'] = vlan_class + +def print_svg(): + for (port_serial, port_dict) in sorted(ports.items()): + port_vlan_class = port_dict['vlan_class'] + port_type = get_connector(port_serial) + # sp: svg polygon + port_sp = ' ')) + print(port_sp) + if port_cable: + (x0, y0) = port_svg_points[0] + x = x0 + port_size[0] * 0.5 + svg_padding[0] + x += (port_size[0] + svg_padding[0]) * port_x_position + y = y0 - port_size[1] * 0.43 + svg_padding[1] + y += (port_size[1] + svg_padding[1]) * port_y_position + if port_flipped: + y = y + port_size[1] * 0.85 + # sc: svg circle + cable_sc = ' ' + print(cable_sc.format(x, y)) + cable_sc = ' ' + print(cable_sc.format(x, y, port_cable)) + (x0, y0) = port_svg_points[0] + x = x0 + port_size[0] * 0.5 + svg_padding[0] + x += (port_size[0] + svg_padding[0]) * port_x_position + y = y0 - port_size[1] * 0.4 + svg_padding[1] + y += (port_size[1] + svg_padding[1]) * port_y_position + if port_flipped: + y = y + port_size[1] * 0.85 + # st: svg text + serial_st = ' {}' + serial_st = serial_st.format(x, y, port_serial) + print(serial_st) + + for (lag_serial, lag_dict) in sorted(lags.items()): + (min_x_position, min_y_position) = (4096, 4096) + (max_x_position, max_y_position) = (0, 0) + for port_serial in lag_dict['ports']: + (port_x_position, + port_y_position) = ports[port_serial]['position'] + if port_x_position < min_x_position: + min_x_position = port_x_position + if port_y_position < min_y_position: + min_y_position = port_y_position + if port_x_position > max_x_position: + max_x_position = port_x_position + if port_y_position > max_y_position: + max_y_position = port_y_position + x0 = (port_size[0] + svg_padding[0]) * min_x_position + x0 += svg_padding[0] * 0.5 + y0 = (port_size[1] + svg_padding[1]) * min_y_position + y0 += svg_padding[1] * 0.5 + x1 = (port_size[0] + svg_padding[0]) * (max_x_position + 1) + x1 += svg_padding[0] * 0.5 + y1 = (port_size[1] + svg_padding[1]) * (max_y_position + 1) + y1 += svg_padding[1] * 0.5 + # sr: svg rect + lag_sr = ' ' + print(lag_sr.format(x0, y0, x1 - x0, y1 - y0)) + lag_type = lag_dict['type'] + lag_spec = ''.join((lag_type[0].upper(), str(lag_serial))) + # st: svg text + lag_st = ' {}' + print(lag_st.format((x0 + x1) / 2, (y0 + y1) / 2, lag_spec)) + +def print_table(): + for (port_serial, port_dict) in sorted(ports.items()): + port_lag = get_lag(port_serial) + port_peer = port_dict['peer'] + port_pvid = get_pvid(port_serial) + port_remark = port_dict['remark'] + port_vlans = get_vlans(port_serial) + port_vlan_class = port_dict['vlan_class'] + print(html_table_data.format(port_vlan_class, + port_serial, + port_pvid, + str(port_vlans)[1:-1], + port_lag, + port_peer, + port_remark)) + +set_vlan_classes() +print(html_document_start) +print(html_heading.format(switch_name, switch_address)) +svg_size = get_svg_size() +print(html_svg_start.format(svg_size[0], svg_size[1])) +print_svg() +print(html_svg_end) +print(html_table_start) +print_table() +print(html_table_end) +print(html_document_end) diff --git a/sources/switches/printhtml.py.2lines b/sources/switches/printhtml.py.2lines new file mode 100755 index 0000000..a2d04dc --- /dev/null +++ b/sources/switches/printhtml.py.2lines @@ -0,0 +1,274 @@ +#!/usr/bin/env python + + +import sys + + +port_size = (117, 81) +rj45_points = [(0, 81), (117, 81), (117, 15), (89, 15), + (89, 0), (28, 0), (28, 15), (0, 15)] +sfp_points = [(0, 81), (117, 81), (117, 15), (0, 15)] + +svg_padding = (20, 20) + +with open(sys.argv[1]) as f: exec(f.read()) + +html_document_start = """ + + + + """ +html_heading = '

{} ({})

' +html_svg_start = ' ' +html_svg_end = ' ' +html_table_start = """ + + + + + + + """ +html_table_data = """ + + + + + + """ +html_table_end = '
PortVLANsLAGPeerRemark
{}{}{}{}{}
' +html_document_end = """ +""" + + +def flip(port_type): + if port_type == 'rj45': + port_points = rj45_points + elif port_type == 'sfp': + port_points = sfp_points + else: + raise + return [(p[0], port_size[1] - p[1]) for p in port_points] + +def get_lag(port_serial): + for (lag_serial, lag_dict) in lags.items(): + ports = lag_dict['ports'] + if port_serial in ports: + if lag_dict['type'] == 'lacp': + return ''.join(('L', str(lag_serial))) + elif lag_dict['type'] == 'static': + return ''.join(('S', str(lag_serial))) + else: + raise + return '' + +def get_svg_size(): + (max_port_x_position, max_port_y_position) = (0, 0) + for port_dict in ports.values(): + (port_x_position, + port_y_position) = port_dict['position'] + if port_x_position > max_port_x_position: + max_port_x_position = port_x_position + if port_y_position > max_port_y_position: + max_port_y_position = port_y_position + svg_x_size = (port_size[0] + svg_padding[0]) * max_port_x_position + svg_x_size += port_size[0] + 2 * svg_padding[0] + svg_y_size = (port_size[1] + svg_padding[1]) * max_port_y_position + svg_y_size += port_size[1] + 2 * svg_padding[1] + return (svg_x_size, svg_y_size) + +def get_vlans(port_serial): + port_vlans = [] + for (vlan_number, ports) in sorted(vlans.items()): + if port_serial in ports: + port_vlans.append(vlan_number) + return port_vlans + +def set_vlan_classes(): + vlan_combinations = [] + for port_serial in ports.keys(): + port_vlans = tuple(get_vlans(port_serial)) + if port_vlans not in vlan_combinations: + vlan_combinations.append(port_vlans) + vlan_combinations.sort() + for port_serial in ports.keys(): + port_vlans = tuple(get_vlans(port_serial)) + index = vlan_combinations.index(port_vlans) + if index == 0: + vlan_class = 'vlan1' + else: + class_serial = index % 6 + 1 + vlan_class = 'vlans{}'.format(class_serial) + ports[port_serial]['vlan_class'] = vlan_class + +def print_svg(): + for (port_serial, port_dict) in sorted(ports.items()): + # sp: svg polygon + port_sp = ' ')) + print(port_sp) + if port_dict['cable']: + (x0, y0) = port_svg_points[0] + x = x0 + port_size[0] * 0.5 + svg_padding[0] + x += (port_size[0] + svg_padding[0]) * port_x_position + y = y0 - port_size[1] * 0.43 + svg_padding[1] + y += (port_size[1] + svg_padding[1]) * port_y_position + if port_flipped: + y = y + port_size[1] * 0.85 + # sc: svg circle + cable_sc = ' ' + print(cable_sc.format(x, y)) + cable_sc = ' ' + print(cable_sc.format(x, y, port_dict['cable'])) + (x0, y0) = port_svg_points[0] + x = x0 + port_size[0] * 0.5 + svg_padding[0] + x += (port_size[0] + svg_padding[0]) * port_x_position + y = y0 - port_size[1] * 0.4 + svg_padding[1] + y += (port_size[1] + svg_padding[1]) * port_y_position + if port_flipped: + y = y + port_size[1] * 0.85 + # st: svg text + serial_st = ' {}' + serial_st = serial_st.format(x, y, port_serial) + print(serial_st) + + for (lag_serial, lag_dict) in sorted(lags.items()): + (min_x_position, min_y_position) = (4096, 4096) + (max_x_position, max_y_position) = (0, 0) + for port_serial in lag_dict['ports']: + (port_x_position, + port_y_position) = ports[port_serial]['position'] + if port_x_position < min_x_position: + min_x_position = port_x_position + if port_y_position < min_y_position: + min_y_position = port_y_position + if port_x_position > max_x_position: + max_x_position = port_x_position + if port_y_position > max_y_position: + max_y_position = port_y_position + x0 = (port_size[0] + svg_padding[0]) * min_x_position + x0 += svg_padding[0] * 0.5 + y0 = (port_size[1] + svg_padding[1]) * min_y_position + y0 += svg_padding[1] * 0.5 + x1 = (port_size[0] + svg_padding[0]) * (max_x_position + 1) + x1 += svg_padding[0] * 0.5 + y1 = (port_size[1] + svg_padding[1]) * (max_y_position + 1) + y1 += svg_padding[1] * 0.5 + # sr: svg rect + lag_sr = ' ' + print(lag_sr.format(x0, y0, x1 - x0, y1 - y0)) + lag_type = lag_dict['type'] + lag_spec = ''.join((lag_type[0].upper(), str(lag_serial))) + # st: svg text + lag_st = ' {}' + print(lag_st.format((x0 + x1) / 2, (y0 + y1) / 2, lag_spec)) + +def print_table(): + if len(ports) <= 28: + print(html_table_start) + for (port_serial, port_dict) in sorted(ports.items()): + port_vlans = get_vlans(port_serial) + port_lag = get_lag(port_serial) + port_peer = port_dict['peer'] + port_remark = port_dict['remark'] + port_vlan_class = port_dict['vlan_class'] + print(html_table_data.format(port_vlan_class, + port_serial, + str(port_vlans)[1:-1], + port_lag, + port_peer, + port_remark)) + print(html_table_end) + else: + print('
') + print(html_table_start) + for (port_serial, port_dict) in sorted(ports.items()): + if port_serial > 26: + continue + port_vlans = get_vlans(port_serial) + port_lag = get_lag(port_serial) + port_peer = port_dict['peer'] + port_remark = port_dict['remark'] + port_vlan_class = port_dict['vlan_class'] + print(html_table_data.format(port_vlan_class, + port_serial, + str(port_vlans)[1:-1], + port_lag, + port_peer, + port_remark)) + print(html_table_end) + print(html_table_start) + for (port_serial, port_dict) in sorted(ports.items()): + if port_serial < 27: + continue + port_vlans = get_vlans(port_serial) + port_lag = get_lag(port_serial) + port_peer = port_dict['peer'] + port_remark = port_dict['remark'] + port_vlan_class = port_dict['vlan_class'] + print(html_table_data.format(port_vlan_class, + port_serial, + str(port_vlans)[1:-1], + port_lag, + port_peer, + port_remark)) + print(html_table_end) + print('
') + +set_vlan_classes() +print(html_document_start) +print(html_heading.format(switch_name, switch_address)) +svg_size = get_svg_size() +print(html_svg_start.format(svg_size[0], svg_size[1])) +print_svg() +print(html_svg_end) +print_table() +print(html_document_end) diff --git a/sources/switches/t1600g-28ts-ext.data b/sources/switches/t1600g-28ts-ext.data new file mode 100644 index 0000000..e1f4e43 --- /dev/null +++ b/sources/switches/t1600g-28ts-ext.data @@ -0,0 +1,106 @@ +switch_name = 't1600g-28ts-ext.in.useribm.hu' +switch_address = '10.228.159.112' + +ports = {1: {'position': (0, 1), + 'peer': 'vhost1 ext-port1', + 'remark': ''}, + 2: {'position': (0, 0), + 'peer': 'vhost1 ext-port2', + 'remark': ''}, + 3: {'position': (1, 1), + 'peer': 'vhost2 ext-port1', + 'remark': ''}, + 4: {'position': (1, 0), + 'peer': 'vhost2 ext-port2', + 'remark': ''}, + 5: {'position': (2, 1), + 'peer': '', + 'remark': ''}, + 6: {'position': (2, 0), + 'peer': '', + 'remark': ''}, + 7: {'position': (3, 1), + 'peer': 'vhost4 ext-port1', + 'remark': ''}, + 8: {'position': (3, 0), + 'peer': 'vhost4 ext-port2', + 'remark': ''}, + 9: {'position': (4, 1), + 'peer': 'vhost5 ext-port1', + 'remark': ''}, + 10: {'position': (4, 0), + 'peer': 'vhost5 ext-port2', + 'remark': ''}, + 11: {'position': (5, 1), + 'peer': '', + 'remark': ''}, + 12: {'position': (5, 0), + 'peer': '', + 'remark': ''}, + 13: {'position': (6, 1), + 'peer': 'zfdl380e-ext', + 'remark': ''}, + 14: {'position': (6, 0), + 'peer': 'zfdl360e-ext', + 'remark': ''}, + 15: {'position': (7, 1), + 'peer': '', + 'remark': ''}, + 16: {'position': (7, 0), + 'peer': '', + 'remark': ''}, + 17: {'position': (8, 1), + 'peer': '', + 'remark': ''}, + 18: {'position': (8, 0), + 'peer': '', + 'remark': ''}, + 19: {'position': (9, 1), + 'peer': '', + 'remark': ''}, + 20: {'position': (9, 0), + 'peer': 'invitech router', + 'remark': ''}, + 21: {'position': (10, 1), + 'peer': '', + 'remark': ''}, + 22: {'position': (10, 0), + 'peer': '', + 'remark': ''}, + 23: {'position': (11, 1), + 'peer': '', + 'remark': ''}, + 24: {'position': (11, 0), + 'peer': 't1600g-52ts-int (port 45)', + 'remark': ''}, + 25: {'position': (12.75, 1), + 'peer': '', + 'remark': ''}, + 26: {'position': (13.75, 1), + 'peer': '', + 'remark': ''}, + 27: {'position': (14.75, 1), + 'peer': '', + 'remark': ''}, + 28: {'position': (15.75, 1), + 'peer': '', + 'remark': ''}} + +cables = {'Red': (1, 2, 3, 4, 7, 8, 9, 10, 13, 14), + 'Blue': (20, 24)} + +connectors = {'rj45': (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24), + 'sfp': (25, 26, 27, 28)} + +flippeds = (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23) + +lags = {} + +pvids = {1: (21, 22, 23, 24, 25, 26, 27, 28), + 760: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20)} + +vlans = {1: (21, 22, 23, 24, 25, 26, 27, 28), + 760: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20)} diff --git a/sources/switches/t1600g-28ts-mgt.data b/sources/switches/t1600g-28ts-mgt.data new file mode 100644 index 0000000..8aa87c0 --- /dev/null +++ b/sources/switches/t1600g-28ts-mgt.data @@ -0,0 +1,105 @@ +switch_name = 't1600g-28ts-mgt.in.useribm.hu' +switch_address = '10.228.159.230' + +ports = {1: {'position': (0, 1), + 'peer': 'vhost1 imm', + 'remark': ''}, + 2: {'position': (0, 0), + 'peer': 'vhost2 imm', + 'remark': ''}, + 3: {'position': (1, 1), + 'peer': 'vhost3 imm', + 'remark': ''}, + 4: {'position': (1, 0), + 'peer': 'vhost4 xcc', + 'remark': ''}, + 5: {'position': (2, 1), + 'peer': 'vhost5 xcc', + 'remark': ''}, + 6: {'position': (2, 0), + 'peer': 'store ilo', + 'remark': ''}, + 7: {'position': (3, 1), + 'peer': 'tsm ilo', + 'remark': ''}, + 8: {'position': (3, 0), + 'peer': 'zfdl360e ilo', + 'remark': ''}, + 9: {'position': (4, 1), + 'peer': 'zfdl380e ilo', + 'remark': ''}, + 10: {'position': (4, 0), + 'peer': 'zfdl380g9 ilo', + 'remark': ''}, + 11: {'position': (5, 1), + 'peer': 'zffc830 idrac', + 'remark': ''}, + 12: {'position': (5, 0), + 'peer': '', + 'remark': ''}, + 13: {'position': (6, 1), + 'peer': 'stgworksa', + 'remark': ''}, + 14: {'position': (6, 0), + 'peer': 'stgworksb', + 'remark': ''}, + 15: {'position': (7, 1), + 'peer': 'ts4300', + 'remark': ''}, + 16: {'position': (7, 0), + 'peer': '', + 'remark': ''}, + 17: {'position': (8, 1), + 'peer': 'v5010 c1', + 'remark': ''}, + 18: {'position': (8, 0), + 'peer': 'v5010 c2', + 'remark': ''}, + 19: {'position': (9, 1), + 'peer': '', + 'remark': ''}, + 20: {'position': (9, 0), + 'peer': '', + 'remark': ''}, + 21: {'position': (10, 1), + 'peer': '', + 'remark': ''}, + 22: {'position': (10, 0), + 'peer': '', + 'remark': ''}, + 23: {'position': (11, 1), + 'peer': '', + 'remark': ''}, + 24: {'position': (11, 0), + 'peer': 't1600g-52ts-int (port 48)', + 'remark': ''}, + 25: {'position': (12.75, 1), + 'peer': '', + 'remark': ''}, + 26: {'position': (13.75, 1), + 'peer': '', + 'remark': ''}, + 27: {'position': (14.75, 1), + 'peer': '', + 'remark': ''}, + 28: {'position': (15.75, 1), + 'peer': '', + 'remark': ''}} + +cables = {'Yellow': (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 13, 14, 15, 17, 18), + 'Blue': (24,)} + +connectors = {'rj45': (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24), + 'sfp': (25, 26, 27, 28)} + +flippeds = (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23) + +lags = {} + +pvids = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)} + +vlans = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)} diff --git a/sources/switches/t1600g-28ts-nrl.data b/sources/switches/t1600g-28ts-nrl.data new file mode 100644 index 0000000..5b86d7f --- /dev/null +++ b/sources/switches/t1600g-28ts-nrl.data @@ -0,0 +1,73 @@ +switch_name = 't1600g-28ts-nrl.in.useribm.hu' +switch_address = '10.228.159.176' + +ports = {1: {'type': 'rj45', 'flipped': True, 'position': (0, 1), + 'peer': '', 'remark': ''}, + 2: {'type': 'rj45', 'flipped': False, 'position': (0, 0), + 'peer': '', 'remark': ''}, + 3: {'type': 'rj45', 'flipped': True, 'position': (1, 1), + 'peer': '', 'remark': ''}, + 4: {'type': 'rj45', 'flipped': False, 'position': (1, 0), + 'peer': '', 'remark': ''}, + 5: {'type': 'rj45', 'flipped': True, 'position': (2, 1), + 'peer': '', 'remark': ''}, + 6: {'type': 'rj45', 'flipped': False, 'position': (2, 0), + 'peer': '', 'remark': ''}, + 7: {'type': 'rj45', 'flipped': True, 'position': (3, 1), + 'peer': '', 'remark': ''}, + 8: {'type': 'rj45', 'flipped': False, 'position': (3, 0), + 'peer': '', 'remark': ''}, + 9: {'type': 'rj45', 'flipped': True, 'position': (4, 1), + 'peer': '', 'remark': ''}, + 10: {'type': 'rj45', 'flipped': False, 'position': (4, 0), + 'peer': '', 'remark': ''}, + 11: {'type': 'rj45', 'flipped': True, 'position': (5, 1), + 'peer': '', 'remark': ''}, + 12: {'type': 'rj45', 'flipped': False, 'position': (5, 0), + 'peer': '', 'remark': ''}, + 13: {'type': 'rj45', 'flipped': True, 'position': (6, 1), + 'peer': '', 'remark': ''}, + 14: {'type': 'rj45', 'flipped': False, 'position': (6, 0), + 'peer': '', 'remark': ''}, + 15: {'type': 'rj45', 'flipped': True, 'position': (7, 1), + 'peer': '', 'remark': ''}, + 16: {'type': 'rj45', 'flipped': False, 'position': (7, 0), + 'peer': '', 'remark': ''}, + 17: {'type': 'rj45', 'flipped': True, 'position': (8, 1), + 'peer': '', 'remark': ''}, + 18: {'type': 'rj45', 'flipped': False, 'position': (8, 0), + 'peer': '', 'remark': ''}, + 19: {'type': 'rj45', 'flipped': True, 'position': (9, 1), + 'peer': '', 'remark': ''}, + 20: {'type': 'rj45', 'flipped': False, 'position': (9, 0), + 'peer': '', 'remark': ''}, + 21: {'type': 'rj45', 'flipped': True, 'position': (10, 1), + 'peer': '', 'remark': ''}, + 22: {'type': 'rj45', 'flipped': False, 'position': (10, 0), + 'peer': '', 'remark': ''}, + 23: {'type': 'rj45', 'flipped': True, 'position': (11, 1), + 'peer': '', 'remark': ''}, + 24: {'type': 'rj45', 'flipped': False, 'position': (11, 0), + 'peer': 't1600g-52ts-int (port .)', 'remark': ''}, + 25: {'type': 'sfp', 'flipped': False, 'position': (12.75, 1), + 'peer': '', 'remark': ''}, + 26: {'type': 'sfp', 'flipped': False, 'position': (13.75, 1), + 'peer': '', 'remark': ''}, + 27: {'type': 'sfp', 'flipped': False, 'position': (14.75, 1), + 'peer': '', 'remark': ''}, + 28: {'type': 'sfp', 'flipped': False, 'position': (15.75, 1), + 'peer': '', 'remark': ''}} + +lags = {} +#lags[1] = {'type': 'lacp', 'ports': (13, 14)} +#lags[2] = {'type': 'static', 'ports': (22, 24)} + +vlans = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28)} +#vlans[2] = (1,) +#vlans[3] = (2,) +#vlans[4] = (3,) +#vlans[5] = (4,) +#vlans[6] = (5,) +#vlans[7] = (6,) diff --git a/sources/switches/t1600g-28ts-nru.data b/sources/switches/t1600g-28ts-nru.data new file mode 100644 index 0000000..910bf23 --- /dev/null +++ b/sources/switches/t1600g-28ts-nru.data @@ -0,0 +1,73 @@ +switch_name = 't1600g-28ts-nru.in.useribm.hu' +switch_address = '10.228.159.185' + +ports = {1: {'type': 'rj45', 'flipped': True, 'position': (0, 1), + 'peer': '', 'remark': ''}, + 2: {'type': 'rj45', 'flipped': False, 'position': (0, 0), + 'peer': '', 'remark': ''}, + 3: {'type': 'rj45', 'flipped': True, 'position': (1, 1), + 'peer': '', 'remark': ''}, + 4: {'type': 'rj45', 'flipped': False, 'position': (1, 0), + 'peer': '', 'remark': ''}, + 5: {'type': 'rj45', 'flipped': True, 'position': (2, 1), + 'peer': '', 'remark': ''}, + 6: {'type': 'rj45', 'flipped': False, 'position': (2, 0), + 'peer': '', 'remark': ''}, + 7: {'type': 'rj45', 'flipped': True, 'position': (3, 1), + 'peer': '', 'remark': ''}, + 8: {'type': 'rj45', 'flipped': False, 'position': (3, 0), + 'peer': '', 'remark': ''}, + 9: {'type': 'rj45', 'flipped': True, 'position': (4, 1), + 'peer': '', 'remark': ''}, + 10: {'type': 'rj45', 'flipped': False, 'position': (4, 0), + 'peer': '', 'remark': ''}, + 11: {'type': 'rj45', 'flipped': True, 'position': (5, 1), + 'peer': '', 'remark': ''}, + 12: {'type': 'rj45', 'flipped': False, 'position': (5, 0), + 'peer': '', 'remark': ''}, + 13: {'type': 'rj45', 'flipped': True, 'position': (6, 1), + 'peer': '', 'remark': ''}, + 14: {'type': 'rj45', 'flipped': False, 'position': (6, 0), + 'peer': '', 'remark': ''}, + 15: {'type': 'rj45', 'flipped': True, 'position': (7, 1), + 'peer': '', 'remark': ''}, + 16: {'type': 'rj45', 'flipped': False, 'position': (7, 0), + 'peer': '', 'remark': ''}, + 17: {'type': 'rj45', 'flipped': True, 'position': (8, 1), + 'peer': '', 'remark': ''}, + 18: {'type': 'rj45', 'flipped': False, 'position': (8, 0), + 'peer': '', 'remark': ''}, + 19: {'type': 'rj45', 'flipped': True, 'position': (9, 1), + 'peer': '', 'remark': ''}, + 20: {'type': 'rj45', 'flipped': False, 'position': (9, 0), + 'peer': '', 'remark': ''}, + 21: {'type': 'rj45', 'flipped': True, 'position': (10, 1), + 'peer': '', 'remark': ''}, + 22: {'type': 'rj45', 'flipped': False, 'position': (10, 0), + 'peer': '', 'remark': ''}, + 23: {'type': 'rj45', 'flipped': True, 'position': (11, 1), + 'peer': '', 'remark': ''}, + 24: {'type': 'rj45', 'flipped': False, 'position': (11, 0), + 'peer': 't1600g-52ts-int (port .)', 'remark': ''}, + 25: {'type': 'sfp', 'flipped': False, 'position': (12.75, 1), + 'peer': '', 'remark': ''}, + 26: {'type': 'sfp', 'flipped': False, 'position': (13.75, 1), + 'peer': '', 'remark': ''}, + 27: {'type': 'sfp', 'flipped': False, 'position': (14.75, 1), + 'peer': '', 'remark': ''}, + 28: {'type': 'sfp', 'flipped': False, 'position': (15.75, 1), + 'peer': '', 'remark': ''}} + +lags = {} +#lags[1] = {'type': 'lacp', 'ports': (13, 14)} +#lags[2] = {'type': 'static', 'ports': (22, 24)} + +vlans = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28)} +#vlans[2] = (1,) +#vlans[3] = (2,) +#vlans[4] = (3,) +#vlans[5] = (4,) +#vlans[6] = (5,) +#vlans[7] = (6,) diff --git a/sources/switches/t1600g-52ts-int.data b/sources/switches/t1600g-52ts-int.data new file mode 100644 index 0000000..e743fc0 --- /dev/null +++ b/sources/switches/t1600g-52ts-int.data @@ -0,0 +1,192 @@ +switch_name = 't1600g-52ts-int.in.useribm.hu' +switch_address = '10.228.159.156' + +ports = {1: {'position': (0, 0), + 'peer': 'vhost1 bondhi 1 (eno1)', + 'remark': ''}, + 2: {'position': (0, 1), + 'peer': 'vhost1 bondhi 2 (ens2f0)', + 'remark': ''}, + 3: {'position': (1, 0), + 'peer': 'vhost1 brci 1 (eno2)', + 'remark': ''}, + 4: {'position': (1, 1), + 'peer': 'vhost1 brci 2 (ens2f1)', + 'remark': ''}, + 5: {'position': (2, 0), + 'peer': 'vhost2 bondhi 1 (eno1)', + 'remark': ''}, + 6: {'position': (2, 1), + 'peer': 'vhost2 bondhi 2 (ens2f0)', + 'remark': ''}, + 7: {'position': (3, 0), + 'peer': 'vhost2 brci 1 (eno2)', + 'remark': ''}, + 8: {'position': (3, 1), + 'peer': 'vhost2 brci 2 (ens2f1)', + 'remark': ''}, + 9: {'position': (4, 0), + 'peer': 'vhost3 (eno1)', + 'remark': ''}, + 10: {'position': (4, 1), + 'peer': '', + 'remark': 'reserved for vhost3'}, + 11: {'position': (5, 0), + 'peer': 'vhost3 (eno2)', + 'remark': ''}, + 12: {'position': (5, 1), + 'peer': '', + 'remark': 'reserved for vhost3'}, + 13: {'position': (6, 0), + 'peer': 'vhost4 (vmnic4)', + 'remark': ''}, + 14: {'position': (6, 1), + 'peer': 'vhost4 (vmnic5)', + 'remark': ''}, + 15: {'position': (7, 0), + 'peer': '', + 'remark': 'reserved for vhost4'}, + 16: {'position': (7, 1), + 'peer': '', + 'remark': 'reserved for vhost4'}, + 17: {'position': (8, 0), + 'peer': 'vhost5 (vmnic4)', + 'remark': ''}, + 18: {'position': (8, 1), + 'peer': 'vhost5 (vmnic5)', + 'remark': ''}, + 19: {'position': (9, 0), + 'peer': '', + 'remark': 'reserved for vhost5'}, + 20: {'position': (9, 1), + 'peer': '', + 'remark': 'reserved for vhost5'}, + 21: {'position': (10, 0), + 'peer': 'store (eno1)', + 'remark': ''}, + 22: {'position': (10, 1), + 'peer': '', + 'remark': 'reserved for store'}, + 23: {'position': (11, 0), + 'peer': '', + 'remark': 'reserved for store'}, + 24: {'position': (11, 1), + 'peer': '', + 'remark': 'reserved for store'}, + 25: {'position': (12, 0), + 'peer': 'tsm (eno1)', + 'remark': ''}, + 26: {'position': (12, 1), + 'peer': '', + 'remark': 'reserved for tsm'}, + 27: {'position': (13, 0), + 'peer': '', + 'remark': 'reserved for tsm'}, + 28: {'position': (13, 1), + 'peer': '', + 'remark': 'reserved for tsm'}, + 29: {'position': (14, 0), + 'peer': 'zfdl360e ()', + 'remark': ''}, + 30: {'position': (14, 1), + 'peer': '', + 'remark': 'reserved for zfdl360e'}, + 31: {'position': (15, 0), + 'peer': 'zfdl380e ()', + 'remark': ''}, + 32: {'position': (15, 1), + 'peer': '', + 'remark': 'reserved for zfdl380e'}, + 33: {'position': (16, 0), + 'peer': 'zfdl380g9 ()', + 'remark': ''}, + 34: {'position': (16, 1), + 'peer': '', + 'remark': 'reserved for zfdl380g9'}, + 35: {'position': (17, 0), + 'peer': 'zffc830 ()', + 'remark': ''}, + 36: {'position': (17, 1), + 'peer': '', + 'remark': 'reserved for zffc830'}, + 37: {'position': (18, 0), + 'peer': '', + 'remark': ''}, + 38: {'position': (18, 1), + 'peer': '', + 'remark': ''}, + 39: {'position': (19, 0), + 'peer': '', + 'remark': ''}, + 40: {'position': (19, 1), + 'peer': '', + 'remark': ''}, + 41: {'position': (20, 0), + 'peer': '', + 'remark': ''}, + 42: {'position': (20, 1), + 'peer': '', + 'remark': ''}, + 43: {'position': (21, 0), + 'peer': 't1600g-28ts-nru', + 'remark': ''}, + 44: {'position': (21, 1), + 'peer': 't1600g-28ts-nrl', + 'remark': ''}, + 45: {'position': (22, 0), + 'peer': 't1600g-28ts-pwr', + 'remark': ''}, + 46: {'position': (22, 1), + 'peer': 't1600g-28ts-pwm', + 'remark': ''}, + 47: {'position': (23, 0), + 'peer': 't1600g-28ts-ext', + 'remark': ''}, + 48: {'position': (23, 1), + 'peer': 't1600g-28ts-mgt', + 'remark': ''}, + 49: {'position': (24.5, 0), + 'peer': '', + 'remark': ''}, + 50: {'position': (24.5, 1), + 'peer': '', + 'remark': ''}, + 51: {'position': (25.5, 0), + 'peer': '', + 'remark': ''}, + 52: {'position': (25.5, 1), + 'peer': '', + 'remark': ''}} + +cables = {'LightGray': (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, + 17, 18, 21, 25, 29, 31, 33, 35), + 'Blue': (43, 44, 45, 46, 47, 48)} + +connectors = {'rj45': (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48), + 'sfp': (49, 50, 51, 52)} + +flippeds = (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52) + +lags = {1: {'ports': (1, 2), 'type': 'lacp'}, + 2: {'ports': (3, 4), 'type': 'lacp'}, + 3: {'ports': (5, 6), 'type': 'lacp'}, + 4: {'ports': (7, 8), 'type': 'lacp'}} + +vlans = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52), + 933: (13, 14, 17, 18, 46)} + + +pvids = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52)} diff --git a/sources/switches/t1600g-52ts-int.data.2lines b/sources/switches/t1600g-52ts-int.data.2lines new file mode 100644 index 0000000..96be8eb --- /dev/null +++ b/sources/switches/t1600g-52ts-int.data.2lines @@ -0,0 +1,115 @@ +switch_name = 't1600g-28ts-ext.in.useribm.hu' +switch_address = '10.228.159.112' + +ports = {1: {'type': 'rj45', 'flipped': False, 'position': (0, 0), + 'peer': '', 'remark': ''}, + 2: {'type': 'rj45', 'flipped': True, 'position': (0, 1), + 'peer': '', 'remark': ''}, + 3: {'type': 'rj45', 'flipped': False, 'position': (1, 0), + 'peer': '', 'remark': ''}, + 4: {'type': 'rj45', 'flipped': True, 'position': (1, 1), + 'peer': '', 'remark': ''}, + 5: {'type': 'rj45', 'flipped': False, 'position': (2, 0), + 'peer': '', 'remark': ''}, + 6: {'type': 'rj45', 'flipped': True, 'position': (2, 1), + 'peer': '', 'remark': ''}, + 7: {'type': 'rj45', 'flipped': False, 'position': (3, 0), + 'peer': '', 'remark': ''}, + 8: {'type': 'rj45', 'flipped': True, 'position': (3, 1), + 'peer': '', 'remark': ''}, + 9: {'type': 'rj45', 'flipped': False, 'position': (4, 0), + 'peer': '', 'remark': ''}, + 10: {'type': 'rj45', 'flipped': True, 'position': (4, 1), + 'peer': 'vhost5 ext-port2', 'remark': ''}, + 11: {'type': 'rj45', 'flipped': False, 'position': (5, 0), + 'peer': '', 'remark': ''}, + 12: {'type': 'rj45', 'flipped': True, 'position': (5, 1), + 'peer': '', 'remark': ''}, + 13: {'type': 'rj45', 'flipped': False, 'position': (6, 0), + 'peer': 'zfdl380e-ext', 'remark': ''}, + 14: {'type': 'rj45', 'flipped': True, 'position': (6, 1), + 'peer': 'zfdl360e-ext', 'remark': ''}, + 15: {'type': 'rj45', 'flipped': False, 'position': (7, 0), + 'peer': '', 'remark': ''}, + 16: {'type': 'rj45', 'flipped': True, 'position': (7, 1), + 'peer': '', 'remark': ''}, + 17: {'type': 'rj45', 'flipped': False, 'position': (8, 0), + 'peer': '', 'remark': ''}, + 18: {'type': 'rj45', 'flipped': True, 'position': (8, 1), + 'peer': '', 'remark': ''}, + 19: {'type': 'rj45', 'flipped': False, 'position': (9, 0), + 'peer': '', 'remark': ''}, + 20: {'type': 'rj45', 'flipped': True, 'position': (9, 1), + 'peer': '', 'remark': ''}, + 21: {'type': 'rj45', 'flipped': False, 'position': (10, 0), + 'peer': '', 'remark': ''}, + 22: {'type': 'rj45', 'flipped': True, 'position': (10, 1), + 'peer': '', 'remark': ''}, + 23: {'type': 'rj45', 'flipped': False, 'position': (11, 0), + 'peer': '', 'remark': ''}, + 24: {'type': 'rj45', 'flipped': True, 'position': (11, 1), + 'peer': '', 'remark': ''}, + 25: {'type': 'rj45', 'flipped': False, 'position': (12, 0), + 'peer': '', 'remark': ''}, + 26: {'type': 'rj45', 'flipped': True, 'position': (12, 1), + 'peer': '', 'remark': ''}, + 27: {'type': 'rj45', 'flipped': False, 'position': (0, 2.5), + 'peer': '', 'remark': ''}, + 28: {'type': 'rj45', 'flipped': True, 'position': (0, 3.5), + 'peer': '', 'remark': ''}, + 29: {'type': 'rj45', 'flipped': False, 'position': (1, 2.5), + 'peer': '', 'remark': ''}, + 30: {'type': 'rj45', 'flipped': True, 'position': (1, 3.5), + 'peer': '', 'remark': ''}, + 31: {'type': 'rj45', 'flipped': False, 'position': (2, 2.5), + 'peer': '', 'remark': ''}, + 32: {'type': 'rj45', 'flipped': True, 'position': (2, 3.5), + 'peer': '', 'remark': ''}, + 33: {'type': 'rj45', 'flipped': False, 'position': (3, 2.5), + 'peer': '', 'remark': ''}, + 34: {'type': 'rj45', 'flipped': True, 'position': (3, 3.5), + 'peer': '', 'remark': ''}, + 35: {'type': 'rj45', 'flipped': False, 'position': (4, 2.5), + 'peer': '', 'remark': ''}, + 36: {'type': 'rj45', 'flipped': True, 'position': (4, 3.5), + 'peer': '', 'remark': ''}, + 37: {'type': 'rj45', 'flipped': False, 'position': (5, 2.5), + 'peer': '', 'remark': ''}, + 38: {'type': 'rj45', 'flipped': True, 'position': (5, 3.5), + 'peer': '', 'remark': ''}, + 39: {'type': 'rj45', 'flipped': False, 'position': (6, 2.5), + 'peer': '', 'remark': ''}, + 40: {'type': 'rj45', 'flipped': True, 'position': (6, 3.5), + 'peer': '', 'remark': ''}, + 41: {'type': 'rj45', 'flipped': False, 'position': (7, 2.5), + 'peer': '', 'remark': ''}, + 42: {'type': 'rj45', 'flipped': True, 'position': (7, 3.5), + 'peer': '', 'remark': ''}, + 43: {'type': 'rj45', 'flipped': False, 'position': (8, 2.5), + 'peer': '', 'remark': ''}, + 44: {'type': 'rj45', 'flipped': True, 'position': (8, 3.5), + 'peer': '', 'remark': ''}, + 45: {'type': 'rj45', 'flipped': False, 'position': (9, 2.5), + 'peer': '', 'remark': ''}, + 46: {'type': 'rj45', 'flipped': True, 'position': (9, 3.5), + 'peer': '', 'remark': ''}, + 47: {'type': 'rj45', 'flipped': False, 'position': (10, 2.5), + 'peer': '', 'remark': ''}, + 48: {'type': 'rj45', 'flipped': True, 'position': (10, 3.5), + 'peer': '', 'remark': ''}, + 49: {'type': 'sfp', 'flipped': False, 'position': (11.5, 2.5), + 'peer': '', 'remark': ''}, + 50: {'type': 'sfp', 'flipped': True, 'position': (11.5, 3.5), + 'peer': '', 'remark': ''}, + 51: {'type': 'sfp', 'flipped': False, 'position': (12.5, 2.5), + 'peer': '', 'remark': ''}, + 52: {'type': 'sfp', 'flipped': True, 'position': (12.5, 3.5), + 'peer': '', 'remark': ''}} + +lags = {} + +vlans = {1: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)} diff --git a/sources/switches/t1600g-52ts-sri.cfg b/sources/switches/t1600g-52ts-sri.cfg index d6f6dcb14d3f409b8bd7ecd3f0611b7c62b96611..2209883092370cc0ac9329430f25c15d0485968f 100644 GIT binary patch delta 695 zcmZuuy>HV%997Qe^I?(>NmYjdaxxMSk(BzJw8?-dLzxf=A$4d6NNtn4B~EI)An_MO zs1is|Vnd>T0KM{B5MxyTqHDM@s(B;pemWw>5os4pA(F>o>TM4C zaViFnLSM997di7HK91A2^z~c|_sJZ-=IUc^g-tFsc>zyX`ZD}!cUtr$Ge`9VFeAk60ohJSiuHad|GKD|q_Z2=b9kp%R>2?GEqkF zA~=-pMSp^${SOYh3)0(ePKTFso_A9HUArrdy%VA&cpw!u3DOi(vQH8ZkEE>6@3Ucq zn_LZtv_yq7?^d(IiO<8xS>_u6<*IPxi2su_%F$vj4pa^>7cVMDS8L;2<@nUvXflo; zy@N}}5gHx5F|PPHW-bhkQ{PE2rdw!fHUhJOcg;4!p672zOX2A@zRU(LBn=tQbej&+ z7#6FOMiVP+6H`M&k*zBNA66Ylrmdz;A#j~>6(NI}X)8UnaxTglnG&%x7ex3A>@FbR pO|G&%f>EJ{y?jOTHUETB;S@zH%*H`K=tgnWA5?K)sN>nX{R6IyY|a1x diff --git a/sources/switches/vlans.txt b/sources/switches/vlans.txt index e43df48..cc9dfe9 100644 --- a/sources/switches/vlans.txt +++ b/sources/switches/vlans.txt @@ -1,9 +1,6 @@ -ace4: 1, 3, 5, 4 => 1354 (ACE Telecom ipv4, * 1000, * 100, * 10, * 1) -ace6: 1, 3, 5, 6 => 1356 (ACE Telecom ipv6, * 1000, * 100, * 10, * 1) +; 1 2 +; 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 +; a b c d e f g h i j k l m n o p q r s t u v w x y z + +ext : 5, 24, 20 => 760 (EXT, * 100, * 10, * 1) hmc : 8, 13, 3 => 933 (HMC, * 100, * 10, * 1) -pwr1: 16, 23, 18, 1 => 3919 (Power 1, * 100, * 100, * 1, * 1) -pwr2: 16, 23, 18, 2 => 3920 (Power 2, * 100, * 100, * 1, * 1) -pwr3: 16, 23, 18, 3 => 3921 (Power 3, * 100, * 100, * 1, * 1) -pwr4: 16, 23, 18, 4 => 3922 (Power 4, * 100, * 100, * 1, * 1) -pwri: 16, 23, 18, 9 => 3927 (Power install, * 100, * 100, * 1, * 1) -tkom: 20, 11, 15, 13 => 3128 (Telekom, * 100, * 100, * 1, * 1) -- 2.54.0