Added switches (configurations and html creation script).
authorZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Mon, 10 Jun 2024 11:25:55 +0000 (13:25 +0200)
committerZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Mon, 10 Jun 2024 11:25:55 +0000 (13:25 +0200)
sources/switches/logins.txt
sources/switches/printhtml.py [new file with mode: 0755]
sources/switches/printhtml.py.2lines [new file with mode: 0755]
sources/switches/t1600g-28ts-ext.data [new file with mode: 0644]
sources/switches/t1600g-28ts-mgt.data [new file with mode: 0644]
sources/switches/t1600g-28ts-nrl.data [new file with mode: 0644]
sources/switches/t1600g-28ts-nru.data [new file with mode: 0644]
sources/switches/t1600g-52ts-int.data [new file with mode: 0644]
sources/switches/t1600g-52ts-int.data.2lines [new file with mode: 0644]
sources/switches/t1600g-52ts-sri.cfg
sources/switches/vlans.txt

index 662bf2f4f86d4a347e3d7c41a5d7ab0b41f4108f..1d23b65ddafd38799deffd1740e515ffd4bff909 100644 (file)
@@ -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 (executable)
index 0000000..31cd016
--- /dev/null
@@ -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>
+  <head>
+    <style>
+      h1 { margin: 2em; text-align: center; }
+      svg { margin-left: 25px; }
+      table, th, td { border: 2px solid black; border-collapse: collapse; font-size: 1.2em; margin: 5em; }
+      td { text-align: right; }
+      td.left { padding: 0em 1em; text-align: left; }
+      th { text-align: center; padding: 0em 0.5em; }
+      tr.vlan1 { background: White; }
+      tr.vlans1 { background: Magenta; }
+      tr.vlans2 { background: Red; }
+      tr.vlans3 { background: Green; }
+      tr.vlans4 { background: Blue; }
+      tr.vlans5 { background: Yellow; }
+      tr.vlans6 { background: Cyan; }
+
+      polygon.vlan1 { fill: White; stroke: Black; stroke-width: 2px; }
+      polygon.vlans1 { fill: Magenta; stroke: Black; stroke-width: 2px; }
+      polygon.vlans2 { fill: Red; stroke: Black; stroke-width: 2px; }
+      polygon.vlans3 { fill: Green; stroke: Black; stroke-width: 2px; }
+      polygon.vlans4 { fill: Blue; stroke: Black; stroke-width: 2px; }
+      polygon.vlans5 { fill: Yellow; stroke: Black; stroke-width: 2px; }
+      polygon.vlans6 { fill: Cyan; stroke: Black; stroke-width: 2px; }
+      rect.lag { fill: DarkGray; fill-opacity: 0.5; stroke: Black; stroke-width: 2px; }
+      text.lag { dominant-baseline: middle; fill: Gray; font-size: 48pt; text-anchor: middle; }
+      text.port { dominant-baseline: middle; font-size: 24pt; text-anchor: middle; }
+    </style>
+  </head>
+  <body>"""
+html_heading = '    <h1>{} ({})</h1>'
+html_svg_start = '    <svg width="{}px" height="{}px">'
+html_svg_end = '    </svg>'
+html_table_start = """    <table>
+      <tr>
+        <th>Port</th>
+        <th>PVID</th>
+        <th>VLANs</th>
+        <th>LAG</th>
+        <th>Peer</th>
+        <th>Remark</th>
+      </tr>"""
+html_table_data = """      <tr class="{}">
+        <td>{}</td>
+        <td>{}</td>
+        <td>{}</td>
+        <td>{}</td>
+        <td class="left">{}</td>
+        <td class="left">{}</td>
+      </tr>"""
+html_table_end = '    </table>'
+html_document_end = """  </body>
+</html>"""
+
+
+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 = '      <polygon class="{}" points="'
+        port_sp = port_sp.format(port_vlan_class)
+        port_pvid = get_pvid(port_serial)
+        port_flipped = is_flipped(port_serial)
+        port_cable = get_cable(port_serial)
+        (port_x_position, port_y_position) = port_dict['position']
+        if port_type == 'rj45':
+            port_svg_points = rj45_points
+        elif port_type == 'sfp':
+            port_svg_points = sfp_points
+        else:
+            raise
+        if port_flipped:
+            port_svg_points = flip(port_type)
+        x_shift = (port_size[0] + svg_padding[0]) * port_x_position
+        x_shift += svg_padding[0]
+        y_shift = (port_size[1] + svg_padding[1]) * port_y_position
+        y_shift += svg_padding[1]
+        for (x0, y0) in port_svg_points:
+            x = x0 + x_shift
+            y = y0 + y_shift
+            if not port_sp.endswith('"'):
+                port_sp = ''.join((port_sp, ' '))
+            port_sp = ''.join((port_sp, '{},{}'.format(x, y)))
+        port_sp = ''.join((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 = '      <circle class="port" cx="{}" cy="{}" r="30" fill="Black" />'
+            print(cable_sc.format(x, y))
+            cable_sc = '      <circle class="port" cx="{}" cy="{}" r="24" fill="{}" />'
+            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 = '      <text class="port" x="{}" y="{}">{}</text>'
+        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 = '      <rect class="lag" x="{}" y="{}" width="{}" height="{}" />'
+        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 = '      <text class="lag" x="{}" y="{}">{}</text>'
+        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 (executable)
index 0000000..a2d04dc
--- /dev/null
@@ -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>
+  <head>
+    <style>
+      h1 { margin: 2em; text-align: center; }
+      svg { margin-left: 10px; }
+      table, th, td { border: 2px solid black; border-collapse: collapse; font-size: 1.2em; margin: 5em; }
+      td { text-align: right; }
+      td.left { padding: 0em 1em; text-align: left; }
+      th { text-align: center; }
+      tr.vlan1 { background: White; }
+      tr.vlans1 { background: Magenta; }
+      tr.vlans2 { background: Red; }
+      tr.vlans3 { background: Green; }
+      tr.vlans4 { background: Blue; }
+      tr.vlans5 { background: Yellow; }
+      tr.vlans6 { background: Cyan; }
+
+      polygon.vlan1 { fill: White; stroke: Black; stroke-width: 2px; }
+      polygon.vlans1 { fill: Magenta; stroke: Black; stroke-width: 2px; }
+      polygon.vlans2 { fill: Red; stroke: Black; stroke-width: 2px; }
+      polygon.vlans3 { fill: Green; stroke: Black; stroke-width: 2px; }
+      polygon.vlans4 { fill: Blue; stroke: Black; stroke-width: 2px; }
+      polygon.vlans5 { fill: Yellow; stroke: Black; stroke-width: 2px; }
+      polygon.vlans6 { fill: Cyan; stroke: Black; stroke-width: 2px; }
+      rect.lag { fill: DarkGray; fill-opacity: 0.5; stroke: Black; stroke-width: 2px; }
+      text.lag { dominant-baseline: middle; fill: Gray; font-size: 48pt; text-anchor: middle; }
+      text.port { dominant-baseline: middle; font-size: 24pt; text-anchor: middle; }
+    </style>
+  </head>
+  <body>"""
+html_heading = '    <h1>{} ({})</h1>'
+html_svg_start = '    <svg width="{}px" height="{}px">'
+html_svg_end = '    </svg>'
+html_table_start = """    <table>
+      <tr>
+        <th>Port</th>
+        <th>VLANs</th>
+        <th>LAG</th>
+        <th>Peer</th>
+        <th>Remark</th>
+      </tr>"""
+html_table_data = """      <tr class="{}">
+        <td>{}</td>
+        <td>{}</td>
+        <td>{}</td>
+        <td class="left">{}</td>
+        <td class="left">{}</td>
+      </tr>"""
+html_table_end = '    </table>'
+html_document_end = """  </body>
+</html>"""
+
+
+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 = '      <polygon class="{}" points="'
+        port_vlan_class = port_dict['vlan_class']
+        port_sp = port_sp.format(port_vlan_class)
+        port_type = port_dict['type']
+        port_flipped = port_dict['flipped']
+        (port_x_position, port_y_position) = port_dict['position']
+        if port_type == 'rj45':
+            port_svg_points = rj45_points
+        elif port_type == 'sfp':
+            port_svg_points = sfp_points
+        else:
+            raise
+        if port_flipped:
+            port_svg_points = flip(port_type)
+        x_shift = (port_size[0] + svg_padding[0]) * port_x_position
+        x_shift += svg_padding[0]
+        y_shift = (port_size[1] + svg_padding[1]) * port_y_position
+        y_shift += svg_padding[1]
+        for (x0, y0) in port_svg_points:
+            x = x0 + x_shift
+            y = y0 + y_shift
+            if not port_sp.endswith('"'):
+                port_sp = ''.join((port_text, ' '))
+            port_sp = ''.join((port_sp, '{},{}'.format(x, y)))
+        port_sp = ''.join((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 = '      <circle class="port" cx="{}" cy="{}" r="30" fill="Black" />'
+            print(cable_sc.format(x, y))
+            cable_sc = '      <circle class="port" cx="{}" cy="{}" r="24" fill="{}" />'
+            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 = '      <text class="port" x="{}" y="{}">{}</text>'
+        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 = '      <rect class="lag" x="{}" y="{}" width="{}" height="{}" />'
+        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 = '      <text class="lag" x="{}" y="{}">{}</text>'
+        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('    <div>')
+        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('    </div>')
+
+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 (file)
index 0000000..e1f4e43
--- /dev/null
@@ -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 (file)
index 0000000..8aa87c0
--- /dev/null
@@ -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 (file)
index 0000000..5b86d7f
--- /dev/null
@@ -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 (file)
index 0000000..910bf23
--- /dev/null
@@ -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 (file)
index 0000000..e743fc0
--- /dev/null
@@ -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 (file)
index 0000000..96be8eb
--- /dev/null
@@ -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)}
index d6f6dcb14d3f409b8bd7ecd3f0611b7c62b96611..2209883092370cc0ac9329430f25c15d0485968f 100644 (file)
Binary files a/sources/switches/t1600g-52ts-sri.cfg and b/sources/switches/t1600g-52ts-sri.cfg differ
index e43df488ae54f4f785bee2544223e9898ed29a4e..cc9dfe91cd0264f7a992b9e5943b6463c7afb55a 100644 (file)
@@ -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)