feat(traffic): Add SWB loopback line-speed traffic tool

Blanton_Script/blanton_traffic_linespeed.sh V0.3.2 drives the whole
loopback traffic run from the DUT shell via bcmcmd, for both switch
boards (unit 0 and 1):

- init  : vlan remove 1 pbm=cd, then create/add the 108 loopback
          pairs (VLAN 30..137, cdN <-> cdN+32)
- clear : clear c
- show  : show c (raw)
- start : tx <count> length=<len> VLantag=<vid> per VLAN
- stop  : remove the pairs, optional --destroy
- ps    : port status of the cabled ports
- report: parse the show c MIB_TPOK/MIB_RPOK counters and lay them
          out one pair per block with a cross-check verdict
          (cdA.TX == cdB.RX and cdA.RX == cdB.TX), PASS green /
          FAIL red / NA yellow, --tolerance for snapshot skew,
          --tsv, --raw and -f <log> for offline analysis; the raw
          capture is kept under /tmp
- run   : ps -> init -> clear -> start -> report

Options -u/-c/-l/-p/-T/-d/-n and a sourceable function API, in the
style of the other blanton_*.sh tools. Command output matches the
former Tera Term macros byte for byte; report output matches
tools/bcm_mibpair_report_V1.1.0.py, added here as the off-box
equivalent, together with the raw bcmcmd command lists under tools/.

ScriptA sources the tool, ScriptB runs ps/init/clear/show/start and
drops stress_hhmd and stress_pcie, ScriptC stops the traffic and
prints the pair counter report.
This commit is contained in:
2026-08-17 16:32:43 +08:00
parent 9bf4291d17
commit 071244fde1
8 changed files with 1624 additions and 27 deletions
+325
View File
@@ -0,0 +1,325 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
bcm_mibpair_report_V1.1.0.py
Author : ETWen
Date : 20260730
Purpose : Extract MIB_TPOK / MIB_RPOK counters from a Broadcom drivshell log
and lay them out horizontally, one loopback pair per block:
Port TX RX PASS/FAIL
cd1 723629081133 581693309458 PASS
cd33 581693309458 723629081133 PASS
Pair membership and pair order come from the
"vlan remove <vid> pbm=cdA,cdB" lines in the same log, so the report
always follows the order the test actually ran in.
Verdict per pair comes from the loopback cross-check: for a pair,
cdA.TPOK must equal cdB.RPOK and cdA.RPOK must equal cdB.TPOK.
PASS - both directions match (within --tolerance)
FAIL - at least one direction is off; delta is listed in the
trailing summary
NA - the pair has no counters in the log
Usage : ./bcm_mibpair_report_V1.1.0.py <drivshell.log> [options]
-a, --all also emit pairs that have no counters in the log
(values shown as "-")
-b, --block repeat the header and blank-separate each pair
-g, --grouped keep the SDK's comma grouping (1,234,567)
-p, --with-port render "cd1(2)" instead of "cd1"
-t, --tsv tab-separated output (for Excel / pandas)
-s, --no-status drop the PASS/FAIL column
-T, --tolerance N allowed |delta| in packets before a pair is FAIL
(default 0). A +/-1 skew is normal: the SDK reads
counters port-by-port while traffic still runs, so
-T 1 is a reasonable production setting.
-q, --quiet suppress the trailing summary comments
-o, --output write to a file instead of stdout
Notes : - The trailing "+delta" column printed by the SDK is stripped.
- A cd port missing from the dump usually means the console
scrolled or auto-logged out mid-"show c", NOT that the port was
down. Cross-check against "ps" before drawing conclusions.
- A +/-1 packet delta between a pair is normal snapshot skew: the
SDK reads counters port-by-port while traffic is still running.
Exit : 0 = every pair had counters and cross-checked clean
1 = usage / input error
2 = at least one pair is FAIL or NA (see summary)
Version History
V1.0.0 20260730 Initial Version (parity with bcm_mibpair_report_V1.2.0.sh)
V1.0.1 20260730 Handle BrokenPipeError quietly when piped into head
V1.1.0 20260730 Add PASS/FAIL/NA verdict column and --tolerance
"""
from __future__ import annotations
import argparse
import re
import sys
from dataclasses import dataclass, field
from pathlib import Path
from typing import Iterable, TextIO
EXIT_OK = 0
EXIT_USAGE = 1
EXIT_WARN = 2
# "vlan remove 31 pbm=cd1,cd33"
RE_PBM = re.compile(r"pbm=(cd\d+),(cd\d+)")
# "MIB_TPOK.cd1(2) : 723,629,081,133 +723,629,081,133"
RE_MIB = re.compile(
r"^MIB_(?P<kind>TPOK|RPOK)\.(?P<cd>cd\d+)\((?P<lport>\d+)\)\s*:\s*(?P<val>[\d,]+)"
)
MISSING = "-"
@dataclass
class PortCounters:
"""TPOK / RPOK for a single cd port."""
lport: int | None = None
tx: int | None = None
rx: int | None = None
@property
def complete(self) -> bool:
return self.tx is not None and self.rx is not None
@dataclass
class LogData:
"""Everything the report needs, extracted from one drivshell log."""
pairs: list[tuple[str, str]] = field(default_factory=list)
ports: dict[str, PortCounters] = field(default_factory=dict)
def counters(self, cd: str) -> PortCounters:
return self.ports.setdefault(cd, PortCounters())
def parse_log(lines: Iterable[str]) -> LogData:
"""Pull pbm pair definitions and TPOK/RPOK counters out of a drivshell log."""
data = LogData()
seen_pairs: set[tuple[str, str]] = set()
for raw in lines:
line = raw.rstrip("\r\n")
for a, b in RE_PBM.findall(line):
if (a, b) not in seen_pairs:
seen_pairs.add((a, b))
data.pairs.append((a, b))
# drivshell echoes commands, so a MIB line may be prefixed with
# "drivshell>" noise; anchor on the MIB_ token instead of the line start.
idx = line.find("MIB_")
if idx < 0:
continue
m = RE_MIB.match(line[idx:])
if not m:
continue
pc = data.counters(m.group("cd"))
pc.lport = int(m.group("lport"))
value = int(m.group("val").replace(",", ""))
if m.group("kind") == "TPOK":
pc.tx = value
else:
pc.rx = value
return data
def fmt_value(value: int | None, grouped: bool) -> str:
if value is None:
return MISSING
return f"{value:,}" if grouped else str(value)
def fmt_port(cd: str, pc: PortCounters, with_port: bool) -> str:
if with_port and pc.lport is not None:
return f"{cd}({pc.lport})"
return cd
PASS, FAIL, NA = "PASS", "FAIL", "NA"
def pair_deltas(data: LogData, a: str, b: str) -> tuple[int, int] | None:
"""(cdA.TX - cdB.RX, cdA.RX - cdB.TX), or None if counters are missing."""
pa, pb = data.counters(a), data.counters(b)
if not (pa.complete and pb.complete):
return None
return pa.tx - pb.rx, pa.rx - pb.tx
def verdict(data: LogData, a: str, b: str, tolerance: int) -> str:
d = pair_deltas(data, a, b)
if d is None:
return NA
return PASS if max(abs(d[0]), abs(d[1])) <= tolerance else FAIL
def render(data: LogData, args: argparse.Namespace, out: TextIO) -> int:
status = not args.no_status
rows: list[tuple[str, ...]] = []
blocks: list[list[tuple[str, ...]]] = []
missing: list[tuple[str, str]] = []
failed: list[tuple[str, str, int, int]] = []
tally = {PASS: 0, FAIL: 0, NA: 0}
for a, b in data.pairs:
pa, pb = data.counters(a), data.counters(b)
v = verdict(data, a, b, args.tolerance)
tally[v] += 1
if v == NA:
missing.append((a, b))
if not args.all:
continue
elif v == FAIL:
d_tx, d_rx = pair_deltas(data, a, b)
failed.append((a, b, d_tx, d_rx))
block = []
for cd, pc in ((a, pa), (b, pb)):
row = (
fmt_port(cd, pc, args.with_port),
fmt_value(pc.tx, args.grouped),
fmt_value(pc.rx, args.grouped),
)
block.append(row + (v,) if status else row)
blocks.append(block)
rows.extend(block)
header = ("Port", "TX", "RX", "PASS/FAIL") if status else ("Port", "TX", "RX")
if args.tsv:
if not args.block:
print("\t".join(header), file=out)
for block in blocks:
if args.block:
print("\t".join(header), file=out)
for row in block:
print("\t".join(row), file=out)
if args.block:
print(file=out)
else:
# size columns to the widest cell actually emitted
ncol = len(header)
width = [
max([len(r[i]) for r in rows] + [len(header[i])]) + 2
for i in range(ncol)
]
def line(row: tuple[str, ...]) -> str:
cells = [f"{row[0]:<{width[0]}}"]
cells += [f"{row[i]:>{width[i]}}" for i in range(1, ncol)]
return "".join(cells).rstrip()
if not args.block:
print(line(header), file=out)
for block in blocks:
if args.block:
print(line(header), file=out)
for row in block:
print(line(row), file=out)
if args.block:
print(file=out)
if not args.quiet:
if not args.block:
print(file=out)
print(f"# pairs in pbm list : {len(data.pairs)}", file=out)
print(f"# pairs reported : {len(blocks)}", file=out)
print(
f"# PASS {tally[PASS]} FAIL {tally[FAIL]} NA {tally[NA]}"
f" (tolerance {args.tolerance})",
file=out,
)
if missing:
joined = " ".join(f"{a}/{b}" for a, b in missing)
print(f"# NA (no counters): {joined}", file=out)
for a, b, d_tx, d_rx in failed:
print(
f"# FAIL {a}/{b}: {a}.TX-{b}.RX={d_tx:+d} {a}.RX-{b}.TX={d_rx:+d}",
file=out,
)
return EXIT_WARN if (tally[FAIL] or tally[NA]) else EXIT_OK
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(
description="Render Broadcom drivshell MIB_TPOK/RPOK counters as a "
"loopback-pair table.",
epilog="Exit 2 means missing counters and/or a cross-check mismatch.",
)
p.add_argument("log", type=Path, help="drivshell log file ('-' for stdin)")
p.add_argument("-a", "--all", action="store_true",
help="also emit pairs with no counters")
p.add_argument("-b", "--block", action="store_true",
help="repeat header and blank-separate each pair")
p.add_argument("-g", "--grouped", action="store_true",
help="keep comma grouping in values")
p.add_argument("-p", "--with-port", action="store_true",
help="render cd1(2) instead of cd1")
p.add_argument("-t", "--tsv", action="store_true",
help="tab-separated output")
p.add_argument("-s", "--no-status", action="store_true",
help="drop the PASS/FAIL column")
p.add_argument("-T", "--tolerance", type=int, default=0, metavar="N",
help="allowed |delta| in packets before a pair is FAIL "
"(default 0; -T 1 absorbs normal snapshot skew)")
p.add_argument("-q", "--quiet", action="store_true",
help="suppress trailing summary comments")
p.add_argument("-o", "--output", type=Path, default=None,
help="write to a file instead of stdout")
return p
def main(argv: list[str] | None = None) -> int:
args = build_parser().parse_args(argv)
try:
if str(args.log) == "-":
data = parse_log(sys.stdin)
else:
# console captures are frequently not clean UTF-8
with args.log.open("r", encoding="utf-8", errors="replace") as fh:
data = parse_log(fh)
except OSError as exc:
print(f"error: cannot read log: {exc}", file=sys.stderr)
return EXIT_USAGE
if not data.pairs:
print("error: no 'pbm=cdA,cdB' pair definition found in log",
file=sys.stderr)
return EXIT_USAGE
try:
if args.output:
with args.output.open("w", encoding="utf-8", newline="\n") as fh:
return render(data, args, fh)
return render(data, args, sys.stdout)
except BrokenPipeError:
# downstream closed the pipe (e.g. "| head") - not an error
try:
sys.stdout.close()
except BrokenPipeError:
pass
return EXIT_OK
except OSError as exc:
print(f"error: cannot write output: {exc}", file=sys.stderr)
return EXIT_USAGE
if __name__ == "__main__":
sys.exit(main())
+108
View File
@@ -0,0 +1,108 @@
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=30'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=31'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=32'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=33'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=34'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=35'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=36'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=37'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=38'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=39'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=40'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=41'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=42'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=43'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=44'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=45'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=46'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=47'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=48'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=49'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=50'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=51'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=52'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=53'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=54'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=55'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=56'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=57'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=58'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=59'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=60'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=61'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=62'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=63'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=64'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=65'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=66'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=67'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=68'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=69'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=70'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=71'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=72'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=73'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=74'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=75'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=76'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=77'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=78'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=79'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=80'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=81'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=82'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=83'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=84'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=85'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=86'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=87'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=88'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=89'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=90'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=91'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=92'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=93'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=94'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=95'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=96'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=97'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=98'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=99'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=100'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=101'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=102'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=103'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=104'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=105'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=106'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=107'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=108'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=109'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=110'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=111'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=112'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=113'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=114'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=115'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=116'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=117'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=118'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=119'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=120'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=121'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=122'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=123'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=124'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=125'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=126'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=127'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=128'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=129'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=130'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=131'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=132'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=133'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=134'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=135'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=136'
bcmcmd -n 1 -c 'tx 100 length=512 VLantag=137'
+108
View File
@@ -0,0 +1,108 @@
bcmcmd -n 1 -c 'vlan remove 30 pbm=cd0,cd32'
bcmcmd -n 1 -c 'vlan remove 31 pbm=cd1,cd33'
bcmcmd -n 1 -c 'vlan remove 32 pbm=cd2,cd34'
bcmcmd -n 1 -c 'vlan remove 33 pbm=cd3,cd35'
bcmcmd -n 1 -c 'vlan remove 34 pbm=cd4,cd36'
bcmcmd -n 1 -c 'vlan remove 35 pbm=cd5,cd37'
bcmcmd -n 1 -c 'vlan remove 36 pbm=cd6,cd38'
bcmcmd -n 1 -c 'vlan remove 37 pbm=cd7,cd39'
bcmcmd -n 1 -c 'vlan remove 38 pbm=cd8,cd40'
bcmcmd -n 1 -c 'vlan remove 39 pbm=cd9,cd41'
bcmcmd -n 1 -c 'vlan remove 40 pbm=cd10,cd42'
bcmcmd -n 1 -c 'vlan remove 41 pbm=cd11,cd43'
bcmcmd -n 1 -c 'vlan remove 42 pbm=cd12,cd44'
bcmcmd -n 1 -c 'vlan remove 43 pbm=cd13,cd45'
bcmcmd -n 1 -c 'vlan remove 44 pbm=cd14,cd46'
bcmcmd -n 1 -c 'vlan remove 45 pbm=cd20,cd52'
bcmcmd -n 1 -c 'vlan remove 46 pbm=cd21,cd53'
bcmcmd -n 1 -c 'vlan remove 47 pbm=cd22,cd54'
bcmcmd -n 1 -c 'vlan remove 48 pbm=cd23,cd55'
bcmcmd -n 1 -c 'vlan remove 49 pbm=cd24,cd56'
bcmcmd -n 1 -c 'vlan remove 50 pbm=cd25,cd57'
bcmcmd -n 1 -c 'vlan remove 51 pbm=cd26,cd58'
bcmcmd -n 1 -c 'vlan remove 52 pbm=cd27,cd59'
bcmcmd -n 1 -c 'vlan remove 53 pbm=cd28,cd60'
bcmcmd -n 1 -c 'vlan remove 54 pbm=cd29,cd61'
bcmcmd -n 1 -c 'vlan remove 55 pbm=cd30,cd62'
bcmcmd -n 1 -c 'vlan remove 56 pbm=cd31,cd63'
bcmcmd -n 1 -c 'vlan remove 57 pbm=cd64,cd96'
bcmcmd -n 1 -c 'vlan remove 58 pbm=cd65,cd97'
bcmcmd -n 1 -c 'vlan remove 59 pbm=cd66,cd98'
bcmcmd -n 1 -c 'vlan remove 60 pbm=cd67,cd99'
bcmcmd -n 1 -c 'vlan remove 61 pbm=cd68,cd100'
bcmcmd -n 1 -c 'vlan remove 62 pbm=cd69,cd101'
bcmcmd -n 1 -c 'vlan remove 63 pbm=cd70,cd102'
bcmcmd -n 1 -c 'vlan remove 64 pbm=cd71,cd103'
bcmcmd -n 1 -c 'vlan remove 65 pbm=cd72,cd104'
bcmcmd -n 1 -c 'vlan remove 66 pbm=cd73,cd105'
bcmcmd -n 1 -c 'vlan remove 67 pbm=cd74,cd106'
bcmcmd -n 1 -c 'vlan remove 68 pbm=cd75,cd107'
bcmcmd -n 1 -c 'vlan remove 69 pbm=cd76,cd108'
bcmcmd -n 1 -c 'vlan remove 70 pbm=cd77,cd109'
bcmcmd -n 1 -c 'vlan remove 71 pbm=cd78,cd110'
bcmcmd -n 1 -c 'vlan remove 72 pbm=cd84,cd116'
bcmcmd -n 1 -c 'vlan remove 73 pbm=cd85,cd117'
bcmcmd -n 1 -c 'vlan remove 74 pbm=cd86,cd118'
bcmcmd -n 1 -c 'vlan remove 75 pbm=cd87,cd119'
bcmcmd -n 1 -c 'vlan remove 76 pbm=cd88,cd120'
bcmcmd -n 1 -c 'vlan remove 77 pbm=cd89,cd121'
bcmcmd -n 1 -c 'vlan remove 78 pbm=cd90,cd122'
bcmcmd -n 1 -c 'vlan remove 79 pbm=cd91,cd123'
bcmcmd -n 1 -c 'vlan remove 80 pbm=cd92,cd124'
bcmcmd -n 1 -c 'vlan remove 81 pbm=cd93,cd125'
bcmcmd -n 1 -c 'vlan remove 82 pbm=cd94,cd126'
bcmcmd -n 1 -c 'vlan remove 83 pbm=cd95,cd127'
bcmcmd -n 1 -c 'vlan remove 84 pbm=cd128,cd160'
bcmcmd -n 1 -c 'vlan remove 85 pbm=cd129,cd161'
bcmcmd -n 1 -c 'vlan remove 86 pbm=cd130,cd162'
bcmcmd -n 1 -c 'vlan remove 87 pbm=cd131,cd163'
bcmcmd -n 1 -c 'vlan remove 88 pbm=cd132,cd164'
bcmcmd -n 1 -c 'vlan remove 89 pbm=cd133,cd165'
bcmcmd -n 1 -c 'vlan remove 90 pbm=cd134,cd166'
bcmcmd -n 1 -c 'vlan remove 91 pbm=cd135,cd167'
bcmcmd -n 1 -c 'vlan remove 92 pbm=cd136,cd168'
bcmcmd -n 1 -c 'vlan remove 93 pbm=cd137,cd169'
bcmcmd -n 1 -c 'vlan remove 94 pbm=cd138,cd170'
bcmcmd -n 1 -c 'vlan remove 95 pbm=cd140,cd172'
bcmcmd -n 1 -c 'vlan remove 96 pbm=cd141,cd173'
bcmcmd -n 1 -c 'vlan remove 97 pbm=cd142,cd174'
bcmcmd -n 1 -c 'vlan remove 98 pbm=cd143,cd175'
bcmcmd -n 1 -c 'vlan remove 99 pbm=cd144,cd176'
bcmcmd -n 1 -c 'vlan remove 100 pbm=cd145,cd177'
bcmcmd -n 1 -c 'vlan remove 101 pbm=cd146,cd178'
bcmcmd -n 1 -c 'vlan remove 102 pbm=cd147,cd179'
bcmcmd -n 1 -c 'vlan remove 103 pbm=cd152,cd184'
bcmcmd -n 1 -c 'vlan remove 104 pbm=cd153,cd185'
bcmcmd -n 1 -c 'vlan remove 105 pbm=cd154,cd186'
bcmcmd -n 1 -c 'vlan remove 106 pbm=cd155,cd187'
bcmcmd -n 1 -c 'vlan remove 107 pbm=cd156,cd188'
bcmcmd -n 1 -c 'vlan remove 108 pbm=cd157,cd189'
bcmcmd -n 1 -c 'vlan remove 109 pbm=cd158,cd190'
bcmcmd -n 1 -c 'vlan remove 110 pbm=cd159,cd191'
bcmcmd -n 1 -c 'vlan remove 111 pbm=cd192,cd224'
bcmcmd -n 1 -c 'vlan remove 112 pbm=cd193,cd225'
bcmcmd -n 1 -c 'vlan remove 113 pbm=cd194,cd226'
bcmcmd -n 1 -c 'vlan remove 114 pbm=cd195,cd227'
bcmcmd -n 1 -c 'vlan remove 115 pbm=cd196,cd228'
bcmcmd -n 1 -c 'vlan remove 116 pbm=cd197,cd229'
bcmcmd -n 1 -c 'vlan remove 117 pbm=cd198,cd230'
bcmcmd -n 1 -c 'vlan remove 118 pbm=cd199,cd231'
bcmcmd -n 1 -c 'vlan remove 119 pbm=cd200,cd232'
bcmcmd -n 1 -c 'vlan remove 120 pbm=cd201,cd233'
bcmcmd -n 1 -c 'vlan remove 121 pbm=cd202,cd234'
bcmcmd -n 1 -c 'vlan remove 122 pbm=cd204,cd236'
bcmcmd -n 1 -c 'vlan remove 123 pbm=cd205,cd237'
bcmcmd -n 1 -c 'vlan remove 124 pbm=cd206,cd238'
bcmcmd -n 1 -c 'vlan remove 125 pbm=cd207,cd239'
bcmcmd -n 1 -c 'vlan remove 126 pbm=cd208,cd240'
bcmcmd -n 1 -c 'vlan remove 127 pbm=cd209,cd241'
bcmcmd -n 1 -c 'vlan remove 128 pbm=cd210,cd242'
bcmcmd -n 1 -c 'vlan remove 129 pbm=cd211,cd243'
bcmcmd -n 1 -c 'vlan remove 130 pbm=cd216,cd248'
bcmcmd -n 1 -c 'vlan remove 131 pbm=cd217,cd249'
bcmcmd -n 1 -c 'vlan remove 132 pbm=cd218,cd250'
bcmcmd -n 1 -c 'vlan remove 133 pbm=cd219,cd251'
bcmcmd -n 1 -c 'vlan remove 134 pbm=cd220,cd252'
bcmcmd -n 1 -c 'vlan remove 135 pbm=cd221,cd253'
bcmcmd -n 1 -c 'vlan remove 136 pbm=cd222,cd254'
bcmcmd -n 1 -c 'vlan remove 137 pbm=cd223,cd255'
+325
View File
@@ -0,0 +1,325 @@
bcmcmd -n 1 -c 'vlan remove 1 pbm=cd'
bcmcmd -n 1 -c 'vlan create 30'
bcmcmd -n 1 -c 'vlan add 30 pbm=cd0,cd32'
bcmcmd -n 1 -c 'vlan create 31'
bcmcmd -n 1 -c 'vlan add 31 pbm=cd1,cd33'
bcmcmd -n 1 -c 'vlan create 32'
bcmcmd -n 1 -c 'vlan add 32 pbm=cd2,cd34'
bcmcmd -n 1 -c 'vlan create 33'
bcmcmd -n 1 -c 'vlan add 33 pbm=cd3,cd35'
bcmcmd -n 1 -c 'vlan create 34'
bcmcmd -n 1 -c 'vlan add 34 pbm=cd4,cd36'
bcmcmd -n 1 -c 'vlan create 35'
bcmcmd -n 1 -c 'vlan add 35 pbm=cd5,cd37'
bcmcmd -n 1 -c 'vlan create 36'
bcmcmd -n 1 -c 'vlan add 36 pbm=cd6,cd38'
bcmcmd -n 1 -c 'vlan create 37'
bcmcmd -n 1 -c 'vlan add 37 pbm=cd7,cd39'
bcmcmd -n 1 -c 'vlan create 38'
bcmcmd -n 1 -c 'vlan add 38 pbm=cd8,cd40'
bcmcmd -n 1 -c 'vlan create 39'
bcmcmd -n 1 -c 'vlan add 39 pbm=cd9,cd41'
bcmcmd -n 1 -c 'vlan create 40'
bcmcmd -n 1 -c 'vlan add 40 pbm=cd10,cd42'
bcmcmd -n 1 -c 'vlan create 41'
bcmcmd -n 1 -c 'vlan add 41 pbm=cd11,cd43'
bcmcmd -n 1 -c 'vlan create 42'
bcmcmd -n 1 -c 'vlan add 42 pbm=cd12,cd44'
bcmcmd -n 1 -c 'vlan create 43'
bcmcmd -n 1 -c 'vlan add 43 pbm=cd13,cd45'
bcmcmd -n 1 -c 'vlan create 44'
bcmcmd -n 1 -c 'vlan add 44 pbm=cd14,cd46'
bcmcmd -n 1 -c 'vlan create 45'
bcmcmd -n 1 -c 'vlan add 45 pbm=cd20,cd52'
bcmcmd -n 1 -c 'vlan create 46'
bcmcmd -n 1 -c 'vlan add 46 pbm=cd21,cd53'
bcmcmd -n 1 -c 'vlan create 47'
bcmcmd -n 1 -c 'vlan add 47 pbm=cd22,cd54'
bcmcmd -n 1 -c 'vlan create 48'
bcmcmd -n 1 -c 'vlan add 48 pbm=cd23,cd55'
bcmcmd -n 1 -c 'vlan create 49'
bcmcmd -n 1 -c 'vlan add 49 pbm=cd24,cd56'
bcmcmd -n 1 -c 'vlan create 50'
bcmcmd -n 1 -c 'vlan add 50 pbm=cd25,cd57'
bcmcmd -n 1 -c 'vlan create 51'
bcmcmd -n 1 -c 'vlan add 51 pbm=cd26,cd58'
bcmcmd -n 1 -c 'vlan create 52'
bcmcmd -n 1 -c 'vlan add 52 pbm=cd27,cd59'
bcmcmd -n 1 -c 'vlan create 53'
bcmcmd -n 1 -c 'vlan add 53 pbm=cd28,cd60'
bcmcmd -n 1 -c 'vlan create 54'
bcmcmd -n 1 -c 'vlan add 54 pbm=cd29,cd61'
bcmcmd -n 1 -c 'vlan create 55'
bcmcmd -n 1 -c 'vlan add 55 pbm=cd30,cd62'
bcmcmd -n 1 -c 'vlan create 56'
bcmcmd -n 1 -c 'vlan add 56 pbm=cd31,cd63'
bcmcmd -n 1 -c 'vlan create 57'
bcmcmd -n 1 -c 'vlan add 57 pbm=cd64,cd96'
bcmcmd -n 1 -c 'vlan create 58'
bcmcmd -n 1 -c 'vlan add 58 pbm=cd65,cd97'
bcmcmd -n 1 -c 'vlan create 59'
bcmcmd -n 1 -c 'vlan add 59 pbm=cd66,cd98'
bcmcmd -n 1 -c 'vlan create 60'
bcmcmd -n 1 -c 'vlan add 60 pbm=cd67,cd99'
bcmcmd -n 1 -c 'vlan create 61'
bcmcmd -n 1 -c 'vlan add 61 pbm=cd68,cd100'
bcmcmd -n 1 -c 'vlan create 62'
bcmcmd -n 1 -c 'vlan add 62 pbm=cd69,cd101'
bcmcmd -n 1 -c 'vlan create 63'
bcmcmd -n 1 -c 'vlan add 63 pbm=cd70,cd102'
bcmcmd -n 1 -c 'vlan create 64'
bcmcmd -n 1 -c 'vlan add 64 pbm=cd71,cd103'
bcmcmd -n 1 -c 'vlan create 65'
bcmcmd -n 1 -c 'vlan add 65 pbm=cd72,cd104'
bcmcmd -n 1 -c 'vlan create 66'
bcmcmd -n 1 -c 'vlan add 66 pbm=cd73,cd105'
bcmcmd -n 1 -c 'vlan create 67'
bcmcmd -n 1 -c 'vlan add 67 pbm=cd74,cd106'
bcmcmd -n 1 -c 'vlan create 68'
bcmcmd -n 1 -c 'vlan add 68 pbm=cd75,cd107'
bcmcmd -n 1 -c 'vlan create 69'
bcmcmd -n 1 -c 'vlan add 69 pbm=cd76,cd108'
bcmcmd -n 1 -c 'vlan create 70'
bcmcmd -n 1 -c 'vlan add 70 pbm=cd77,cd109'
bcmcmd -n 1 -c 'vlan create 71'
bcmcmd -n 1 -c 'vlan add 71 pbm=cd78,cd110'
bcmcmd -n 1 -c 'vlan create 72'
bcmcmd -n 1 -c 'vlan add 72 pbm=cd84,cd116'
bcmcmd -n 1 -c 'vlan create 73'
bcmcmd -n 1 -c 'vlan add 73 pbm=cd85,cd117'
bcmcmd -n 1 -c 'vlan create 74'
bcmcmd -n 1 -c 'vlan add 74 pbm=cd86,cd118'
bcmcmd -n 1 -c 'vlan create 75'
bcmcmd -n 1 -c 'vlan add 75 pbm=cd87,cd119'
bcmcmd -n 1 -c 'vlan create 76'
bcmcmd -n 1 -c 'vlan add 76 pbm=cd88,cd120'
bcmcmd -n 1 -c 'vlan create 77'
bcmcmd -n 1 -c 'vlan add 77 pbm=cd89,cd121'
bcmcmd -n 1 -c 'vlan create 78'
bcmcmd -n 1 -c 'vlan add 78 pbm=cd90,cd122'
bcmcmd -n 1 -c 'vlan create 79'
bcmcmd -n 1 -c 'vlan add 79 pbm=cd91,cd123'
bcmcmd -n 1 -c 'vlan create 80'
bcmcmd -n 1 -c 'vlan add 80 pbm=cd92,cd124'
bcmcmd -n 1 -c 'vlan create 81'
bcmcmd -n 1 -c 'vlan add 81 pbm=cd93,cd125'
bcmcmd -n 1 -c 'vlan create 82'
bcmcmd -n 1 -c 'vlan add 82 pbm=cd94,cd126'
bcmcmd -n 1 -c 'vlan create 83'
bcmcmd -n 1 -c 'vlan add 83 pbm=cd95,cd127'
bcmcmd -n 1 -c 'vlan create 84'
bcmcmd -n 1 -c 'vlan add 84 pbm=cd128,cd160'
bcmcmd -n 1 -c 'vlan create 85'
bcmcmd -n 1 -c 'vlan add 85 pbm=cd129,cd161'
bcmcmd -n 1 -c 'vlan create 86'
bcmcmd -n 1 -c 'vlan add 86 pbm=cd130,cd162'
bcmcmd -n 1 -c 'vlan create 87'
bcmcmd -n 1 -c 'vlan add 87 pbm=cd131,cd163'
bcmcmd -n 1 -c 'vlan create 88'
bcmcmd -n 1 -c 'vlan add 88 pbm=cd132,cd164'
bcmcmd -n 1 -c 'vlan create 89'
bcmcmd -n 1 -c 'vlan add 89 pbm=cd133,cd165'
bcmcmd -n 1 -c 'vlan create 90'
bcmcmd -n 1 -c 'vlan add 90 pbm=cd134,cd166'
bcmcmd -n 1 -c 'vlan create 91'
bcmcmd -n 1 -c 'vlan add 91 pbm=cd135,cd167'
bcmcmd -n 1 -c 'vlan create 92'
bcmcmd -n 1 -c 'vlan add 92 pbm=cd136,cd168'
bcmcmd -n 1 -c 'vlan create 93'
bcmcmd -n 1 -c 'vlan add 93 pbm=cd137,cd169'
bcmcmd -n 1 -c 'vlan create 94'
bcmcmd -n 1 -c 'vlan add 94 pbm=cd138,cd170'
bcmcmd -n 1 -c 'vlan create 95'
bcmcmd -n 1 -c 'vlan add 95 pbm=cd140,cd172'
bcmcmd -n 1 -c 'vlan create 96'
bcmcmd -n 1 -c 'vlan add 96 pbm=cd141,cd173'
bcmcmd -n 1 -c 'vlan create 97'
bcmcmd -n 1 -c 'vlan add 97 pbm=cd142,cd174'
bcmcmd -n 1 -c 'vlan create 98'
bcmcmd -n 1 -c 'vlan add 98 pbm=cd143,cd175'
bcmcmd -n 1 -c 'vlan create 99'
bcmcmd -n 1 -c 'vlan add 99 pbm=cd144,cd176'
bcmcmd -n 1 -c 'vlan create 100'
bcmcmd -n 1 -c 'vlan add 100 pbm=cd145,cd177'
bcmcmd -n 1 -c 'vlan create 101'
bcmcmd -n 1 -c 'vlan add 101 pbm=cd146,cd178'
bcmcmd -n 1 -c 'vlan create 102'
bcmcmd -n 1 -c 'vlan add 102 pbm=cd147,cd179'
bcmcmd -n 1 -c 'vlan create 103'
bcmcmd -n 1 -c 'vlan add 103 pbm=cd152,cd184'
bcmcmd -n 1 -c 'vlan create 104'
bcmcmd -n 1 -c 'vlan add 104 pbm=cd153,cd185'
bcmcmd -n 1 -c 'vlan create 105'
bcmcmd -n 1 -c 'vlan add 105 pbm=cd154,cd186'
bcmcmd -n 1 -c 'vlan create 106'
bcmcmd -n 1 -c 'vlan add 106 pbm=cd155,cd187'
bcmcmd -n 1 -c 'vlan create 107'
bcmcmd -n 1 -c 'vlan add 107 pbm=cd156,cd188'
bcmcmd -n 1 -c 'vlan create 108'
bcmcmd -n 1 -c 'vlan add 108 pbm=cd157,cd189'
bcmcmd -n 1 -c 'vlan create 109'
bcmcmd -n 1 -c 'vlan add 109 pbm=cd158,cd190'
bcmcmd -n 1 -c 'vlan create 110'
bcmcmd -n 1 -c 'vlan add 110 pbm=cd159,cd191'
bcmcmd -n 1 -c 'vlan create 111'
bcmcmd -n 1 -c 'vlan add 111 pbm=cd192,cd224'
bcmcmd -n 1 -c 'vlan create 112'
bcmcmd -n 1 -c 'vlan add 112 pbm=cd193,cd225'
bcmcmd -n 1 -c 'vlan create 113'
bcmcmd -n 1 -c 'vlan add 113 pbm=cd194,cd226'
bcmcmd -n 1 -c 'vlan create 114'
bcmcmd -n 1 -c 'vlan add 114 pbm=cd195,cd227'
bcmcmd -n 1 -c 'vlan create 115'
bcmcmd -n 1 -c 'vlan add 115 pbm=cd196,cd228'
bcmcmd -n 1 -c 'vlan create 116'
bcmcmd -n 1 -c 'vlan add 116 pbm=cd197,cd229'
bcmcmd -n 1 -c 'vlan create 117'
bcmcmd -n 1 -c 'vlan add 117 pbm=cd198,cd230'
bcmcmd -n 1 -c 'vlan create 118'
bcmcmd -n 1 -c 'vlan add 118 pbm=cd199,cd231'
bcmcmd -n 1 -c 'vlan create 119'
bcmcmd -n 1 -c 'vlan add 119 pbm=cd200,cd232'
bcmcmd -n 1 -c 'vlan create 120'
bcmcmd -n 1 -c 'vlan add 120 pbm=cd201,cd233'
bcmcmd -n 1 -c 'vlan create 121'
bcmcmd -n 1 -c 'vlan add 121 pbm=cd202,cd234'
bcmcmd -n 1 -c 'vlan create 122'
bcmcmd -n 1 -c 'vlan add 122 pbm=cd204,cd236'
bcmcmd -n 1 -c 'vlan create 123'
bcmcmd -n 1 -c 'vlan add 123 pbm=cd205,cd237'
bcmcmd -n 1 -c 'vlan create 124'
bcmcmd -n 1 -c 'vlan add 124 pbm=cd206,cd238'
bcmcmd -n 1 -c 'vlan create 125'
bcmcmd -n 1 -c 'vlan add 125 pbm=cd207,cd239'
bcmcmd -n 1 -c 'vlan create 126'
bcmcmd -n 1 -c 'vlan add 126 pbm=cd208,cd240'
bcmcmd -n 1 -c 'vlan create 127'
bcmcmd -n 1 -c 'vlan add 127 pbm=cd209,cd241'
bcmcmd -n 1 -c 'vlan create 128'
bcmcmd -n 1 -c 'vlan add 128 pbm=cd210,cd242'
bcmcmd -n 1 -c 'vlan create 129'
bcmcmd -n 1 -c 'vlan add 129 pbm=cd211,cd243'
bcmcmd -n 1 -c 'vlan create 130'
bcmcmd -n 1 -c 'vlan add 130 pbm=cd216,cd248'
bcmcmd -n 1 -c 'vlan create 131'
bcmcmd -n 1 -c 'vlan add 131 pbm=cd217,cd249'
bcmcmd -n 1 -c 'vlan create 132'
bcmcmd -n 1 -c 'vlan add 132 pbm=cd218,cd250'
bcmcmd -n 1 -c 'vlan create 133'
bcmcmd -n 1 -c 'vlan add 133 pbm=cd219,cd251'
bcmcmd -n 1 -c 'vlan create 134'
bcmcmd -n 1 -c 'vlan add 134 pbm=cd220,cd252'
bcmcmd -n 1 -c 'vlan create 135'
bcmcmd -n 1 -c 'vlan add 135 pbm=cd221,cd253'
bcmcmd -n 1 -c 'vlan create 136'
bcmcmd -n 1 -c 'vlan add 136 pbm=cd222,cd254'
bcmcmd -n 1 -c 'vlan create 137'
bcmcmd -n 1 -c 'vlan add 137 pbm=cd223,cd255'