SMP_REP_ROUTE_INFO(8)
π SMP_REP_ROUTE_INFO π (from the SMP_UTILS manual, section 8, bestie)
okay so, hi!! welcome to the little page that teaches you how to yell REPORT ROUTE INFORMATION at a SAS expander and get its whole route table tea ββ¨
β¨ NAME β¨
smp_rep_route_info β the tool that invokes the REPORT ROUTE INFORMATION SMP function. that's it, that's the job π
π SYNOPSIS π
smp_rep_route_info [--help] [--hex] [--index=IN] [--interface=PARAMS]
[--multiple] [--num=NUM] [--phy=ID] [--raw] [--sa=SAS_ADDR] [--verbose]
[--version] [--zero] SMP_DEVICE[,N]
like look at her. she's got options. she's got range. π
π¦ DESCRIPTION π¦
So bestie, what this does is: it sends a SAS Serial Management Protocol (that's SMP, iykyk) REPORT ROUTE INFORMATION function request to an SMP target. no cap.
And who is that SMP target? it's identified by the SMP_DEVICE and the SAS_ADDR. and here's the cute part β depending on which interface you're using, the SAS_ADDR might just be deduced from the SMP_DEVICE all on its own. self-sufficient queen β¨
the mpt interface is the exception: it uses SMP_DEVICE to identify an HBA (that's an SMP initiator), and it needs that extra ,N bit to tell HBAs apart when there's more than one hanging out in your system. important!! don't forget the comma-N π«Ά
okay now the lore π because this actually matters:
there are two expander route table types:
- phy-based
- expander-based
the expander-based route table was introduced in SAS-2 and it supersedes the phy-based route tables. she's the newer model, she ate π
the REPORT ROUTE INFORMATION function is associated with a phy-based route table. and the CONFIGURE ROUTE INFORMATION function is the one provided to manually set up a phy-based route table. different function, different vibe.
every phy in a SAS expander that has an associated routing attribute of "table" has a router table. and how many rows (or entries) does each router table have? that's given by the "expander route indexes" field in the response of the REPORT GENERAL function. go ask smp_rep_general about it, she knows πΈ
now the fun part: --multiple π
when you pass --multiple, the REPORT ROUTE INFORMATION function gets called multiple times. the index value increments on each iteration, starting from --index=IN (and that default is 0).
if --num=NUM is given and NUM is greater than zero, then that's your maximum number of iterations performed. slay, bounded.
but if --num=NUM is not given (or NUM is zero)? then iterations just keep going until there are 4 adjacent disabled route entries (or some error gets detected). she'll stop eventually. probably. π
π OPTIONS π
quick housekeeping first: mandatory arguments to long options are mandatory for short options as well. the rules apply to everyone, no favorites π
-h,--helpβ outputs the usage message, then exits. bye bestie π-H,--hexβ outputs the response (minus the CRC field) in hexadecimal. for the hex girlies π₯-i,--index=INβ the expander route index.INis a value between0and65535. default is0. and more precisely, the maximum index value is(expander_route_indexes - 1). yes, precisely. she's precise. β¨-I,--interface=PARAMSβ interface specific parameters. and when we say "interface" here, we mean the path through the operating system to the SMP initiator. go read thesmp_utilsman page for more info, she explains it better π«Ά-m,--multipleβ calls the REPORT ROUTE INFORMATION function multiple times, starting at--index=IN, incrementing the index value on each iteration for a maximum of--num=NUMiterations. for each enabled route table entry, one line is output. and if--num=NUMis not given (orNUMis zero) then iterations continue until 4 adjacent disabled entries are found (or some error occurs). the "keep going till it gets quiet" mode fr fr-n,--num=NUMβ used with the--multipleoption to specify the maximum number of iterations. besties, they work as a duo π―-p,--phy=IDβ the phy identifier.IDis a value between0and254. default is0.-r,--rawβ sends the response (minus the CRC field) to stdout in binary. all error messages are sent to stderr. binary to stdout, drama to stderr π-s,--sa=SAS_ADDRβ specifies the SAS address of the SMP target device. typically this is an expander. this option may not be needed if theSMP_DEVICEalready has the target's SAS address inside it. theSAS_ADDRis in decimal, but most SAS addresses are shown in hexadecimal (chaotic, I know). to give a number in hexadecimal, either prefix it with0xor put a trailinghon it. both slay π-v,--verboseβ increases the verbosity of the output. can be used multiple times. stack it. layer it. π-V,--versionβ prints the version string, then exits.-z,--zeroβ zeroes the Allocated Response Length field in the request. this option also zeroes the Request Length field in the request. this is required for strict SAS-1.1 compliance. however β and this is the big one β this option should not be given in SAS-2 and later; if it is given, an abridged response may result. β οΈ so like, know your SAS version before you start zeroing things, bestie. don't be reckless.
π CONFORMING TO π
the SMP REPORT ROUTE INFORMATION function was introduced in SAS-1. and the "Expander change count" field was added in SAS-2. glow-up behavior tbh β¨
π AUTHORS π
written by Douglas Gilbert. the icon. the legend. the main character of this man page π
π REPORTING BUGS π
found a bug? report bugs to <dgilbert at interlog dot com>. he wants to know!! fr fr π«Ά
π COPYRIGHT π
Copyright Β© 2006-2011 Douglas Gilbert
this software is distributed under a FreeBSD license. and there is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. like, none. zero. we told you. π
π SEE ALSO π
smp_utilssmp_rep_general(smp_utils)
and that's the whole page bestie!! go forth and route-inspect responsibly π§π
this was the smp_utils-0.96 era, dated May 2011 β she's vintage, she's iconic, she still works. periodt. ππ
π¦ where this page comes from
- debian bookworm: smp-utils 0.99-1 Β· BSD-3-Clause
- debian trixie: smp-utils 0.99-1 Β· BSD-3-Clause
- epel 10: smp_utils 0.99-1.el10_0 Β· BSD-3-Clause
- epel 9: smp_utils 0.99-5.el9 Β· BSD
- fedora 43: smp_utils 0.99-14.fc43 Β· BSD-3-Clause
- fedora 44: smp_utils 0.99-15.fc44 Β· BSD-3-Clause
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- ubuntu jammy: smp-utils 0.99-1 Β· BSD-3-Clause
- ubuntu noble: smp-utils 0.99-1 Β· BSD-3-Clause
- ubuntu resolute: smp-utils 0.99-1build1 Β· BSD-3-Clause
- ubuntu stonking: smp-utils 0.99-1build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms