This is a bit of random oddness I stumbled upon this morning.
I was working on a Cisco Catalyst 2960 switch and needed to know which MAC addresses the device had learned on a particular interface. The usual way to do this is with the show mac-address-table interface command. While I was typing I hit the ? to get additional option information. This is the response I got back from the CLI:
% Unrecognized command
I use this command at least three times a week, so I’m pretty sure it’s “recognized”. The show mac-address-table command is definitely not on the list of show commands the CLI claims are available. On a lark, I went ahead and executed show mac-address-table and IOS was kind enough to return the 1,627 MAC addresses this switch had learned. Bizarre.
According to the Cisco documentation for Cisco IOS Release 12.2(40)SE, the show mac-address-table command is on the list of commands that “appear when you enter the question mark (?) at the Catalyst 2960 switch prompt but are not supported”.
Interestingly enough, that’s the exact opposite of the behavior displayed by the device!
At this point, I’m willing to chalk it up to random morning oddness and move on. How about you?

Get Slaptijack updates delivered to your Inbox or RSS Reader for free!
I came across your blog looking around on TCP window scaling and noticed you had a few switch articles. I work mainly with switches, so TCP may not be my thing but switches are.
This is the case of a command being deprecated. The new command is “show mac address-table”. I am not sure why this change was made, but I believe it is seen first in 12.2(40)SE.
A command as common as “show mac-address-table” will likely be around for a long time as people use scripts that rely on it as well as it being a commonly known command that so many people use regularly. Taking it out of the question mark is a way to show it’s unsupported. In the future it may not work, but I don’t see that going over well for such a common command. It’s like “wr mem” and “copy run start” I think at one point the intention was to only use one, but they are both there today.
Note, just because something *does* parse with the question mark, does not imply it’s supported either! Lots of platform independent features are left in IOS and not implemented on devices that can’t use them, or use them in a different manner.
For example: a 6500 in hybrid mode has VLAN interfaces on the MSFC. You can apply a policer to these interfaces just as you would on an IOS router or native IOS 6500. This is considered unsupported, however logical to most users. The key is QoS on this box is done in hardware and everything else is considered unsupported. If you were to put a policy on the VLAN interface to match everything and police it to a given rate, you would actually only get traffic that is being “punted” to software, which should be a very small portion of your traffic. So technically it “works”, but not in the way one may think, so it’s considered unsupported.
Your best bet is to rely on the release notes and config guides when unsure. You found the unsupported command list there, and that’s key. Whenever documentation explicitly mentions a command is not supported, it’s probably best not to use it. Again, supported doesn’t mean it won’t work. Maybe it will work sometimes, indefinitely, or in a odd manner. In this particular case though, I’ll bet it will work for many releases to come.
Cool articles, keep it up!
Thanks for a great comment, John!