Another Cisco IOS rant. Who designed the bizarre excuse they have for a configuration language? That’s a rhetorical question; obviously no one designed it, it just happened.

Today’s example: the syntax for ip nat pool. It needs a name, a netmask, and an address range. Unusually for Cisco, it’ll let you use either a traditional 4-byte netmask or a cidr prefix-length for specifying the netmask. Except, it won’t convert between the two, so it remembers it in whichever format you provided. Nice and consistent. The address(s) can be entered either on the ip nat pool line, or they can be left out, but if they’re left out you’ll be dropped into config-ipnat-pool config mode, where you can enter one or more address range pairs. If you enter one, then show config will show you the single-line form, if you enter more then one, then you’ll get the config-mode form.

Way to be consistent, guys. By itself, this isn’t too hideously nasty, but IOS is completely full of things like this. When faced with a choice, they not only took both forks, but added a mountain bike trail and maybe a passenger trebuchet, and then it keeps track of how you got to the far end. And, if you take the trebuchet, it keeps track of how many pieces you arrive in.