U.S. patent application number 11/581305 was filed with the patent office on 2007-02-08 for searching and reusing information from previously executed control instructions in a data forwarding device.
Invention is credited to Robert P. Enns.
Application Number | 20070033176 11/581305 |
Document ID | / |
Family ID | 37423324 |
Filed Date | 2007-02-08 |
United States Patent
Application |
20070033176 |
Kind Code |
A1 |
Enns; Robert P. |
February 8, 2007 |
Searching and reusing information from previously executed control
instructions in a data forwarding device
Abstract
A reverse-search function may accept user input and search back
through previously executed and stored data forwarding device
control instructions for a data forwarding device control
instruction, at least a part of which matches a search string input
by the user. The matching data forwarding device control
instruction may be retrieved and rendered. A reverse-expand
function may accept user input, and search back through previously
executed and stored data forwarding device control instructions for
a data forwarding device control instruction having an word or
parameter, at least a part of which matches a search string input
by the user. The first matching word or parameter may be retrieved
and rendered.
Inventors: |
Enns; Robert P.; (San Jose,
CA) |
Correspondence
Address: |
STRAUB & POKOTYLO
620 TINTON AVENUE
BLDG. B, 2ND FLOOR
TINTON FALLS
NJ
07724
US
|
Family ID: |
37423324 |
Appl. No.: |
11/581305 |
Filed: |
October 16, 2006 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
09734325 |
Dec 1, 2000 |
7139751 |
|
|
11581305 |
Oct 16, 2006 |
|
|
|
Current U.S.
Class: |
1/1 ;
707/999.003 |
Current CPC
Class: |
Y10S 707/99936 20130101;
H04L 45/00 20130101; H04L 45/56 20130101; H04L 45/54 20130101; Y10S
707/99934 20130101 |
Class at
Publication: |
707/003 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method for inputting a control instruction for a data
forwarding device, the method comprising: a) accepting, by the data
forwarding device, user input; b) determining, with the data
forwarding device, whether a reverse-search is requested based on
the user input accepted; and c) if it is determined that a
reverse-search is requested, then i) accepting, by the data
forwarding device, further user input as a search string; ii)
searching, with the data forwarding device, back through previously
entered and stored data forwarding device control instructions for
a data forwarding device control instruction, at least a part of
which matches the search string input by the user, iii) retrieving,
with the data forwarding device, the first matching data forwarding
device control instruction, and iv) rendering the first matching
data forwarding device control instruction, wherein the data
forwarding device is one of (A) a network switch and (B) a network
router.
2. The method of claim 1 wherein the further user input accepted
includes keystrokes.
3. The method of claim 1 wherein the act of determining whether a
reverse-search is requested determines whether or not a predefined
key sequence is input.
4. The method of claim 1 wherein the act of determining whether a
reverse-search is requested determines whether or not a predefined
key is input.
5. The method of claim 1 wherein the act of searching back through
previously entered and stored data forwarding device control
instruction considers more recently entered data forwarding device
control instructions before less recently entered data forwarding
device control instructions.
6. The method of claim 1 further comprising: d) determining whether
or not the retrieved first matching data forwarding device control
instruction is entered; and e) if it is determined that the
returned first matching data forwarding device control instruction
is entered, then i) effecting the entered first matching data
forwarding device control instruction, and ii) storing the entered
first matching data forwarding device control instruction.
7. The method of claim 1 further comprising: d) determining, with
the data forwarding device, whether another reverse-search is
requested before the retrieved first matching data forwarding
device control instruction is executed; and e) if it is determined
that another reverse-search is requested before the retrieved first
matching data forwarding device control instruction is executed,
then automatically i) starting at the first matching control
instruction, searching, with the data forwarding device, back
through previously entered and stored data forwarding device
control instructions for another data forwarding device control
instruction, at least a part of which matches the search string
input by the user, ii) retrieving, with the data forwarding device,
the next matching data forwarding device control instruction, and
iii) rendering the next matching data forwarding device control
instruction.
8. The method of claim 1 wherein the first matching data forwarding
device control instruction is one of (a) a clear communications
network statistics control instruction, (b) a clear network
communications protocol database control instruction, (c) a monitor
network communications protocols control instruction, (d) a monitor
data forwarding device communications interface control
instruction, (e) a ping control instruction, (f) a show data
forwarding device configuration control instruction, (g) a show
network communications protocols control instruction, (h) a show
routing tables control instruction, (i) a show network
communications policy filters control instruction, (j) a show data
forwarding device chassis control instruction, (k) a test data
forwarding device configuration control instruction, (l) a test
data forwarding device policy filter control instruction, and (m) a
trace-route control instruction.
9. The method according to claim 1 wherein the control instruction
is a configuration command.
10. A control instruction interface for use in a data forwarding
device, the control instruction interface comprising: a) a storage
device for storing previously entered data forwarding device
control instructions; b) an input device for accepting user input;
and c) a reverse-search facility, the reverse-search facility
adapted to i) accept user input from the input device, ii)
determining whether a reverse-search is requested based on the
accepted user input, and iii) if it is determined that a
reverse-search is requested, then accepting further user input as a
search string, and searching back through the previously entered
data forwarding device control instructions stored in the storage
device for a data forwarding device control instruction, at least a
part of which matches the search string input by the user, wherein
the data forwarding device is one of (A) a network switch and (B) a
network router.
11. The control instruction interface of claim 10 wherein the
reverse-search facility is further adapted to retrieve from the
storage device, the first matching data forwarding device control
instruction found in a search.
12. The control instruction interface of claim 11 further
comprising: d) a display device, the display device adapted to
render the first matching data forwarding device control
instruction retrieved from the storage device by the reverse-search
facility.
13. The control instruction interface of claim 10 further
comprising: d) a operational mode facility adapted to i) determine
whether or not the first matching data forwarding device control
instruction is entered, and ii) if it is determined that the first
matching data forwarding device control instruction is entered,
then A) effect the first matching data forwarding device control
instruction, and B) store the first matching data forwarding device
control instruction in the storage device.
14. The control instruction interface of claim 10 wherein one of
the previously executed data forwarding device control instructions
stored in the storage device is one of (a) a clear communications
network statistics control instruction, (b) a clear network
communications protocol database control instruction, (c) a monitor
network communications protocols control instruction, (d) a monitor
data forwarding device communications interface control
instruction, (e) a ping control instruction, (f) a show data
forwarding device configuration control instruction, (g) a show
network communications protocols control instruction, (h) a show
routing tables control instruction, (i) a show network
communications policy filters control instruction, (j) a show data
forwarding device chassis control instruction, (k) a test data
forwarding device configuration control instruction, (l) a test
data forwarding device policy filter control instruction, and (m) a
trace-route control instruction.
15. The control instruction interface according to claim 10 wherein
the control instruction is a configuration command.
16. A computer-readable medium having stored thereon: a) previously
entered data forwarding device control instructions; and b) a
binding associating a key or key sequence to a reverse-search
command for searching back through the previously entered data
forwarding device control instructions, wherein the data forwarding
device is one of (A) a network switch and (B) a network router, and
wherein the computer-readable medium is included as a component of
the data forwarding device.
17. The computer-readable medium of claim 16 wherein one of the
previously entered data forwarding device control instructions
stored on the machine readable medium is one of (a) a clear
communications network statistics control instruction, (b) a clear
network communications protocol database control instruction, (c) a
monitor network communications protocols control instruction, (d) a
monitor data forwarding device communications interface control
instruction, (e) a ping control instruction, (f) a show data
forwarding device configuration control instruction, (g) a show
network communications protocols control instruction, (h) a show
routing tables control instruction, (i) a show network
communications policy filters control instruction, (j) a show data
forwarding device chassis control instruction, (k) a test data
forwarding device configuration control instruction, (l) a test
data forwarding device policy filter control instruction, and (m) a
trace-route control instruction.
18. The computer-readable medium according to claim 16 wherein the
control instruction is a configuration command.
19. A method for inputting a word or parameter value of a control
instruction for a data forwarding device, the method comprising: a)
accepting user input, the user input including a first part, a
second part comprising a search string, and a third part; b)
determining, with the data forwarding device, whether a
reverse-expand is requested based on the third part of the user
input accepted; and c) if it is determined that a reverse-expand is
requested, then i) searching, with the data forwarding device, back
through previously entered and stored data forwarding device
control instructions for a data forwarding device control
instruction having a word or parameter value, at least a part of
which matches the search string of the second part of the user
input, ii) retrieving, with the data forwarding device, the first
matching word or parameter value, and iii) rendering a command line
including the first part of the user input and the first matching
word or parameter value, wherein the data forwarding device is one
of (A) a network switch and (B) a network router.
20. The method of claim 19 wherein the act of determining whether a
reverse-expand is requested determines whether or not a predefined
key sequence is input.
21. The method of claim 19 wherein the act of determining whether a
reverse-expand is requested determines whether or not a predefined
key is input.
22. The method of claim 19 wherein the act of searching back
through previously entered and stored data forwarding device
control instruction considers more recently executed data
forwarding device control instructions before less recently
executed data forwarding device control instructions.
23. The method of claim 19 further comprising: d) determining, with
the data forwarding device, whether another reverse-expand is
requested before a data forwarding device control instruction is
executed; and e) if it is determined that another reverse-expand is
requested before the data forwarding device control instruction is
executed, then automatically i) starting at the control instruction
having the first matching word or parameter, searching, with the
data forwarding device, back through previously entered and stored
data forwarding device control instructions for another data
forwarding device control instruction having a parameter value or
word, at least a part of which matches a search string input by the
user, ii) retrieving, with the data forwarding device, the next
matching word or parameter value, and iii) rendering the next
matching word or parameter.
24. The method of claim 19 wherein the first matching word or
parameter value of a data forwarding device control instruction is
one of (a) a data forwarding device communications interface name,
(b) a data forwarding device communications interface type, (c) a
communications network address, (d) an internet protocol address,
(e) a firewall parameter, (f) a network communications protocol,
(g) a network communications policy parameter, (h) a data
forwarding device configuration parameter, and (i) a part of a
hierarchical control instruction.
25. The method according to claim 19 wherein the command line
rendered includes the first part of the user input followed by the
first matching word or parameter.
26. The method according to claim 19 wherein the control
instruction is a configuration command.
27. The method according to claim 19 wherein the reverse-expand is
specific to a given parameter, and wherein the act of searching
back through previously entered and stored data forwarding device
control instructions for a data forwarding device control
instruction having a word or parameter value, at least a part of
which matches the search string of the second part of the user
input further determines whether the word or parameter value
belongs to the given parameter to qualify the search string
match.
28. The method according to claim 19 wherein the reverse-expand is
specific to a given class of parameters, and wherein the act of
searching back through previously entered and stored data
forwarding device control instructions for a data forwarding device
control instruction having a word or parameter value, at least a
part of which matches the search string of the second part of the
user input further determines whether the word or parameter value
belongs to the given class of parameters to qualify the search
string match.
29. The method according to claim 28 wherein the given class of
parameters is an Internet protocol address parameter.
30. The method according to claim 28 wherein the given class of
parameters is a physical interface type parameter.
31. The method according to claim 19 wherein when reverse-expand is
requested, the act of retrieving the first matching word or
parameter, retrieves the first matching word or parameter without
other parts of the command line in which it was found.
32. A method of inputting information into a data forwarding
device, comprising: receiving, at the data forwarding device, a
first data string representing an instruction, a second data string
representing a portion of an operand, and a first instance of a
control character; determining whether the second data string
matches a portion of an operand stored in memory; if the second
data string is determined to match the portion of an operand stored
in memory, then retrieving the operand.
33. A data forwarding device, comprising: a plurality of data
interfaces for connection to respective data lines; a mechanism for
forwarding data from one data interface to another data interface;
a user interface for entering data strings and control characters;
a first processing module for receiving from the user interface a
first data string representing an instruction, a second data string
representing a portion of an operand, and a first instance of a
control character; a memory for storing a set of operands; a second
processing module for determining whether the second data string
matches a portion of an operand stored in the memory; a third
processing module for retrieving an operand containing a portion
that is determined to match the second data string.
Description
.sctn.0. RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 09/734,325 (referred to as "the '325
application" and incorporated herein by reference), filed on Dec.
1, 2000, titled "SEARCHING AND REUSING INFORMATION FROM PREVIOUSLY
EXECUTED CONTROL INSTRUCTIONS IN A DATA FORWARDING DEVICE", and
listing Robert P. Enns as the inventor.
.sctn.1. BACKGROUND OF THE INVENTION
[0002] .sctn.1.1 Field of the Invention
[0003] The present invention concerns inputting and entering
control instructions in data forwarding devices, such as routers
for example. More specifically, the present invention concerns
reusing information from previously executed control instructions
for such a device.
[0004] .sctn.1.2 Related Art
[0005] The description of art in this section is not, and should
not be interpreted to be, an admission that such art is prior art
to the present invention. The present invention may be used for
inputting control instructions for data forwarding devices.
[0006] Data forwarding devices, such as routers and switches, may
be interconnected to form networks. The interconnections may be
such that each data forwarding device has a plurality of input
lines and a plurality of output lines. A basic function of these
devices is to forward data received at their input lines to the
appropriate output lines. Routers, for example, may determine the
appropriate output lines based on a destination addresses contained
in the received data and forwarding tables. Switches may be
configured so that data received at input lines are provided to
appropriate output lines.
[0007] Such data forwarding devices may need to be configured
appropriately. This may be done by entering configuration commands,
through a keyboard or other type of interface, into a data
forwarding device. For example, a control instruction interface may
be provided for configuring operating system software, configuring
the device, and monitoring and/or troubleshooting software, network
connectivity, and/or hardware. Other types of information or
commands may also be entered into the device through the keyboard
or interface.
[0008] When entering a command or information through a keyboard
(or similar user interface) of a data forwarding device, there is a
risk that the command or information may be entered incorrectly or
incompletely. Such errors may cause the data forwarding device to
be incorrectly configured and may lead to serious network
malfunctions. This is especially true where the commands or
information involve long strings of commands and complex number
sequences.
[0009] Accordingly, there is a need to reduce the risk that
commands or information will be entered incorrectly or
incompletely.
.sctn.2. SUMMARY OF THE INVENTION
[0010] The disclosed invention helps users to input command
instructions more efficiently and accurately by accepting user
input, and if it is determined that a reverse-search is requested
based on the accepted user input, then searching back through
previously executed and stored data forwarding device control
instructions for a data forwarding device control instruction, at
least a part of which matches a search string input by the user.
The matching data forwarding device control instruction may be
retrieved and may be rendered.
[0011] The present invention may also provide a method for
inputting a word or parameter of a control instruction for a data
forwarding device. Such a method may accept user input, and if it
is determined that a reverse-expand is requested based on the
accepted user input, then searching back through previously
executed and stored data forwarding device control instructions for
a data forwarding device control instruction having an word or
parameter, at least a part of which matches a search string input
by the user. The first matching word or parameter may be retrieved
and may be rendered.
[0012] The present invention may provide a control instruction
interface having (a) a storage device for storing previously
executed data forwarding device control instructions, (b) an input
device for accepting user input; and (c) a reverse-search facility.
The reverse-search facility may be adapted to accept user input
from the input device, and determine whether a reverse-search is
requested based on the accepted user input. If it is determined
that a reverse-search is requested, then the reverse-search
facility may search back through the previously executed data
forwarding device control instructions stored in the storage device
for a data forwarding device control instruction, at least a part
of which matches a search string input by the user.
[0013] The control instruction interface may also, or
alternatively, include a reverse-expand facility adapted to
determine whether a reverse-expand is requested based on the
accepted user input. If it is determined that a reverse-expand is
requested, then the reverse-expand facility may search back through
the previously executed data forwarding device control instructions
stored in the storage device for a data forwarding device control
instruction having a word or parameter, at least a part of which
matches a search string input by the user.
.sctn.3. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] FIG. 1 is a high-level bubble chart diagram of a simple
exemplary data forwarding device having a control instruction
interface with which the present invention may be used.
[0015] FIG. 2 is a high-level bubble chart diagram of an exemplary
data forwarding device having a control instruction interface with
which the present invention may be used.
[0016] FIG. 3 is a high-level bubble chart diagram that illustrates
control instruction interface operations of which the present
invention may be a part.
[0017] FIG. 4 is a block diagram that illustrates an example of
hierarchical control instructions in a router.
[0018] FIG. 5 is a high-level flow diagram of an exemplary method
that may be used to effect at least some control instruction
interface operational mode operations.
[0019] FIG. 6 is a high-level block diagram that illustrates an
exemplary machine that may be used to effect various operations of
the present invention.
.sctn.4. DETAILED DESCRIPTION
[0020] The present invention involves novel methods, apparatus and
data structures for reusing information from previously executed
control instructions for a data forwarding device, such as a router
for example. The following description is presented to enable one
skilled in the art to make and use the invention, and is provided
in the context of particular applications and their requirements.
Various modifications to the disclosed embodiments will be apparent
to those skilled in the art, and the general principles set forth
below may be applied to other embodiments and applications. Thus,
the present invention is not intended to be limited to the
embodiments shown and the inventor regards his invention as the
following disclosed methods, apparatus and data structures and any
other patentable subject matter.
[0021] .sctn.4.1 Exemplary Enviroments in which the Present
Invention may Operate
[0022] .sctn.4.1.1 First Exemplary Data Forwarding Device
[0023] FIG. 1 is a high-level bubble chart diagram of a simple
exemplary data forwarding device 100. As shown, a data forwarding
operation 110 may use information in a forwarding table 120 to
forward incoming data (e.g., packets) towards a final destination.
For a simple data forwarding device, only these components are
needed. However, in many data forwarding devices, the forwarding
table 120 may be generated and updated by an optional (as indicated
by phantom lines) path-to-forwarding information translation
operation 130. The path-to-forwarding information translation
operation 130 may perform its generation and update functions based
on an optional (as indicated by phantom lines) path (e.g., routing)
table 140 and device configuration information 150. The path (e.g.,
routing) table 140 may be generated by an optional (as indicated by
phantom lines) path (e.g., route) determination operation 160 based
on network state (e.g., link state) information, as well as device
configuration information 150. For example, the path determination
operation 160 may operate in accordance with known routing
protocols to populate a routing table.
[0024] A device operations management operation 180 may directly or
indirectly interact with, and manage, some or all of the operations
just introduced as indicated by the dashed arrow lines. A user may
use a control instruction user interface operation 170 for
interacting with the device operations management operation 180, as
well as the device configuration information 150. The present
invention may concern at least a part of the control instruction
user interface operation 170.
[0025] .sctn.4.1.2 Second Exemplary Data Forwarding Device
[0026] FIG. 2 is a high-level bubble chart diagram of an exemplary
data forwarding device 200. The data forwarding device 200 may
include a data (e.g., packet) forwarding facility 210 and a path
(e.g., route) determination facility 260. Basically, the data
forwarding facility 210 may function to forward data towards its
ultimate destination, and the path determination facility 260 may
function to generate and/or update a forwarding table 120' based on
path (e.g., route) determinations.
[0027] In an exemplary embodiment, the data forwarding facility 210
may include an operating system (micro) kernel 220 which supports
various operations (e.g., an interface operation 230 and a chassis
operation 250). The exemplary data forwarding facility 210 may also
include an instance of a forwarding table 120b' used to forward
data towards its destination. The forwarding table instance 120b'
may correspond to an instance of the forwarding table 120a' of the
path determination facility 260.
[0028] In an exemplary embodiment, the path determination facility
260 may include an operating system kernel 262 which supports
various operations (e.g., a path (e.g., route) determination
operation 264, an interface operation 266, a chassis operation 268,
control instruction interface operations 170', etc.) and which may
be used to generate the forwarding table instance 120a'. The path
(e.g., route) determination operation 264 may be used to determine
a path (e.g., routing) table 140'. Network management (e.g., SNMP)
operations 270 may interact with the various operations 264,266,268
supported by the operating system kernel 262. The control
instruction interface operation 170' may act on configuration
information 150' and the operating system kernel 262.
[0029] As shown in the blow-up of bubble 170'' in FIG. 2, the
control instruction user interface operations 170' may include user
login and authentication operations 271, configuration operations
272 and control instruction editing operations 276. In accordance
with the present invention, the control instruction editing
operations 276 may access recently executed (i.e., previously
entered) control instructions stored (e.g., in a buffer 277).
[0030] In both the device 100 of FIG. 1 and the device 200 of FIG.
2, control instruction interface operations 170 and 170' are
provided. The present invention may constitute a part of such a
control instruction user interface operations 170/170'. The present
invention may be used in other data forwarding devices.
[0031] .sctn.4.2 Functions that may be Performed by the Present
Invention
[0032] The present invention may function to help users to input
control instructions using fewer keystrokes, with less chance of
typographic errors, and requiring less memorization (e.g., of
instructions, parameter values, syntax rules, etc.) on the part of
the user. The present invention may do so by permitting previously
executed command instructions to be searched and/or by permitting a
string to be expanded to match an alpha-numeric string, such as a
word, or parameter for example, of a previously executed control
instruction.
[0033] .sctn.4.3 Exemplary Operations, Architecture, Methods and
Data Structures
[0034] Operations that may be performed by the present invention
are introduced, exemplary methods and data structures that may be
used to effect such operations, and exemplary hardware that may be
used to effect such operations are described in the following.
[0035] .sctn.4.3.1 Exemplary Operations
[0036] FIG. 3 is a high-level bubble diagram that illustrates
exemplary control instruction interface operations 170''', of which
the present invention may be a part. As was the case in the
exemplary embodiment of FIG. 2, the control instruction interface
operations 170''' may include user login and authentication
operations 271', configuration operations 272' and control
instruction edit operations 276'. The control instruction edit
operations 276' may be a part of operational mode operations 274.
In addition to including control instruction edit operation 276',
the operational mode operations 274 may include a number of control
instruction operations (which may be simply referred to as "control
instructions" or "instructions") 275.
[0037] In the context of a data forwarding device, such as a router
for example, the control instruction operational mode operations
274 may (i) be accessible from a console or through a remote
network connection, (ii) automatically start after the device
finishes booting, (iii) be used to perform various tasks such as
configuring operating system software, and monitoring and
troubleshooting software, network connectivity, and/or
hardware.
[0038] The control instructions may be organized in a hierarchy,
with control instructions that perform a similar or related
function grouped together under the same higher level control
instruction. For example, as illustrated in FIG. 4, all control
instructions that display information about the system and the
system software may be grouped under the "show" instruction 410,
and all instructions that display information about the routing
table may be grouped under the "show route" instruction 410/420.
(Branches without control instruction nodes convey that the
hierarchy may include further control instructions.)
[0039] To execute an instruction, the full instruction name, from
top hierarchical level down, is entered. Thus, referring once again
to FIG. 4, to display a brief view of the routes of a router table,
the instruction "show route brief" 410/420/430 may be entered.
[0040] Some exemplary control instructions 275 that may be provided
in the context of a data forwarding device, such as a router for
example, are now introduced. Some control instructions 275 may
control a user interface environment. For example, a "set" control
instruction may be used to configure a display screen.
[0041] Some control instructions 275 may be used for monitoring and
troubleshooting. For example, a "clear" control instruction may be
used to clear statistics and protocol database information, a
"monitor" control instruction may be used to perform real-time
debugging of various software components (e.g., routing protocols
and interfaces), a "ping" control instruction may be used to
determine whether a remote network host is reachable, a "show"
control instruction may be used to display current configuration
and information about interfaces, routing protocols, routing
tables, routing policy filters and the chassis, a "test" control
instruction may be used to test a configuration and application of
policy filters and autonomous system path regular expressions, and
a "trace route" control instruction may be used to trace a route to
a remote network host.
[0042] Other control instructions 275 may be used for connecting to
other network systems. For example, a "ssh" control instruction may
be used to open secure shell connections, and a "telnet" control
instruction may be used to open Telnet sessions to other hosts on
the network.
[0043] Still other control instructions 275 may be used for copying
files. For example, "file" and "copy" command instructions may be
used to copy files from one location on the device to another, from
the device to a remote system, or from a remote system to the
device.
[0044] Some control instructions 275, such as a "restart" command
instruction for example, may be used to restart various software
operations, such as routing protocol 264, interface 266 and simple
network management protocol 268.
[0045] A "request" control instruction 275 may be used to perform
system-level operations, such as stopping and rebooting the data
forwarding device, loading operating system software images, etc. A
"start" control instruction 275 may be used to exit the control
instruction interface operations 170''' and enter an operating
system (e.g., UNIX) shell. A "configure" control instruction 275
may be used to enter configuration operations 272'. A "quit"
control instruction 275 may be used to exit the control instruction
interface operations 170'''.
[0046] Such control instructions may be edited in accordance with
control instruction edit operations 276'. Examples of control
instruction edit operations 276 are moving a cursor, deleting
characters, inserting (e.g., recently deleted) text, redrawing the
screen, inserting previous control instructions, repeating keyboard
sequences, scrolling up and down, searching, etc. As shown in FIG.
3, the control instruction edit operations may include a
reverse-search operation 310b and a reverse-expand operation 310c,
as well as other edit control instructions operations 310a.
[0047] .sctn.4.3.2 Exemplary Methods and Data Structures for
Reverse-Search and Reverse-Expand Operations
[0048] FIG. 5 is a high-level flow diagram of an exemplary method
274' that may be used to effect control instruction interface
operational mode operations 274. As depicted in block 510 input
(e.g., a keystroke) is accepted. Collectively, these inputs can
correspond to control instructions in general, as well as control
instruction edit operations 274 more specifically.
[0049] Referring to decision branch point 520, the input is decoded
(e.g., by a lookup in a key binding table). If the decoded input
indicates a "reverse search" request, a search back through
previously executed and stored (e.g., buffered) control
instructions for a control instruction (line) matching a search
string is performed, as indicated by block 522. The control
instruction found is retrieved and displayed as indicated in block
524. The method 274' then branches back to block 510. As can be
appreciated, collectively, decision branch point 520, and blocks
522 and 524 illustrate an exemplary reverse-search method 310b'. In
one embodiment, a reverse-search may be requested by a CONTROL-r
key input. After such a reverse-search is requested, each
subsequent keystroke forms a string which may be dynamically
matched with the most recently entered matching control
instruction. Alternatively, or in addition, a reverse-search hop
may be requested by a CONTROL-/key input. With each reverse-search
hop request, a search continuing back through the previously
executed and stored control instructions (for a control instruction
matching the then existing string) may be effected.
[0050] As will be appreciated from the description of elements 540
through 568 below, the retrieved control instruction may be
effected (e.g., using the ENTER key). Alternatively, the command
instruction can be edited before it is entered.
[0051] Referring once again to decision branch point 520, if the
decoded input indicates a string (e.g., parameter) expansion (also
referred to as a reverse-expand operation) request, as indicated by
block 532, a search back through previously executed and stored
(e.g., buffered) strings, which may be a part or a parameter of a
previously executed and stored control instruction, for a string or
word matching a search string is performed. The word found is
retrieved and displayed as indicated in block 534. The method 274'
then branches back to block 510. As can be appreciated,
collectively, decision branch point 530, and blocks 532 and 534
illustrate an exemplary reverse-expand method 310c'. In one
embodiment, a reverse-expand may be requested by a ESCAPE-/key
input. Successive searches continuing back through the previously
entered and stored words or terms (e.g., parameters, operands,
etc.) may be effected by repeatedly requesting a reverse-expand.
Alternatively, or in addition, subsequent keystrokes (e.g., prior
to an ENTER keystroke) may be used to lengthen the string upon
which the reverse-expand may operate. Further, an ESCAPE-r key
sequence may be used to dynamically (i.e., with each successive
keystroke) search back through the previously entered and stored
words or terms (e.g., operands, parameters, etc.).
[0052] Referring back to FIG. 3, although reverse-search,
reverse-expand, and other editing operations were described as a
part of operational mode operations 276', note that all of these
edit methods may also be used in the context of editing a
configuration file, for example, and can therefore work with the
configuration operations 272'.
[0053] In one embodiment of the reverse-expand method, a particular
type of words (e.g., particular parameters, or particular classes
of parameters) can be searched, while others may be ignored. For
example, a particular keyboard sequence may expand user input, but
only to Internet protocol address parameters--another particular
keyboard sequence may expand a user input, but only to physical
interface type parameters, etc.
[0054] The reverse-expand operation 310c' may be limited to
checking matches to "leading" strings, in which case the string
input by the user is expanded to a string (e.g., a word or
parameter) of the previously executed control instructions for
which the input string is a prefix. Alternatively, the
reverse-expand operation 310c' may be used to find matches to
strings without regard to their location within a previously
executed command instruction, such as within a continuous
alpha-numeric string of a previously executed command
instruction.
[0055] Other control instruction edit methods may be carried out.
Further, other control instruction operations 275 of the
operational mode operations 274 may be carried out. Referring back
to decision branch point 510, it may be determined whether or not a
control instruction was entered (e.g., whether or not the ENTER key
is depressed), for example as the input at block 510. If a "Quit"
control instruction is entered, the method 274' may be left via
RETURN node 570. If, on the other hand, the control instruction
that was entered was not the "Quit" command, then the method 274'
may branch to block 560 where the entered control instruction is
executed. At this point, the entered control instruction may be
stored (e.g., buffered 277') as a previously executed command
instruction. The method 274' may then continue to decision branch
point 562.
[0056] At decision branch point 562, it may be determined whether
or not the executed control instruction resulted in an error. If
so, as indicated by blocks 564 and 568, an error may be displayed
and a new control instruction line may be provided, respectively,
before the method 274' branches back to decision branch point 510.
If, on the other hand, no error results, as indicated by blocks 566
and 568, the results of the executed command operation are
displayed and a new control instruction line may be provided,
respectively, before the method 274' branches back to block
510.
[0057] Note that the key bindings (e.g., CONTROL-r, ESCAPE-/, etc.)
were presented for illustrative purposes only. Clearly, other key
bindings could be used to initiate the operations described
above.
[0058] .sctn.4.3.3 Exemplary Hardware Architectures
[0059] FIG. 6 is high-level block diagram of a machine 600 which
may effect one or more of the operations, and store one or more of
the data structures, discussed above. The machine 600 basically
includes a processor(s) 610, an input/output interface unit(s) 630,
a storage device(s) 620, and a system bus(es) and/or a network(s)
640 for facilitating the communication of information among the
coupled elements. An input device(s) 632 and an output device(s)
634 may be coupled with the input/output interface(s) 630.
Operations of the present invention may be effected by the
processor(s) 610 executing instructions. The instructions may be
stored in the storage device(s) 620 and/or received via the
input/output interface(s) 630. The instructions may be functionally
grouped into processing modules.
[0060] The machine 600 may be a router for example. In an exemplary
router, the processor(s) 610 may include a microprocessor and/or
(e.g., custom) integrated circuit(s). In the exemplary router, the
storage device(s) 620 may include ROM, RAM, SDRAM, SRAM, SSRAM,
DRAM, flash drive(s), hard disk drive(s), and/or flash cards. At
least some of these storage device(s) 620 may include program
instructions defining an operating system, a protocol daemon,
and/or other daemons. In a preferred embodiment, the methods of the
present invention may be effected by a microprocessor executing
stored program instructions. At least a portion of the machine
executable instructions may be stored (temporarily or more
permanently) on the storage device(s) 620 and/or may be received
from an external source via an input interface unit 630. Finally,
in the exemplary router, the input/output interface unit(s) 630,
input device(s) 632 and output device(s) 634 may include interfaces
to terminate communications links. The input device(s) 632 may
include a keyboard.
[0061] Naturally, the operations of the present invention may be
effected on systems other than routers, or on routers other than
the exemplary router. Such other systems may employ different
hardware and/or software.
[0062] .sctn.4.4 Operational Examples in Exemplary Embodiments
[0063] Operational examples of a reverse-search operation and of a
reverse-expand operation are described below.
[0064] .sctn.4.4.1 Operational Examples of Reverse-Search
Operation
[0065] In the following example, assume that the following control
instructions were entered (and therefore executed) in the order
shown: TABLE-US-00001 >show route table >show route protocol
>show route exact >show route terse
[0066] Further assume that these previously executed control
instructions are saved (e.g., in a buffer). Finally, assume that a
reverse-search is effected by a ctrl-r keyboard sequence.
[0067] If a user were to input the following keyboard sequence:
[0068] ctrl-r sh the first matching control instruction, namely:
[0069] show route terse
[0070] would be returned. If the user further input an additional:
[0071] ow route e
[0072] keyboard sequence, the next matching control instruction,
namely: [0073] show route exact
[0074] would be returned.
[0075] If the user instead input the following keyboard sequence:
[0076] ctrl-r show route t
[0077] the first matching control instruction, namely: [0078] show
route terse
[0079] would be returned. If the user further input reverse-search
hop: [0080] ctrl-/
[0081] keyboard sequence, the next matching control instruction,
namely: [0082] show route table
[0083] would be returned
.sctn.4.4.2 Operational Example of Reverse-Expand Operation
[0084] In the following example, assume that the following control
instructions were entered (and therefore executed) in the order
shown: TABLE-US-00002 >set system host-name router-sj1 >set
system static-host-mapping router-sj1 inet 192.168.1.77 >set
system static-host-mapping router sj1 alias sj1 >set system
static-host-mapping router sj1 sysid 1921.6800.1077
[0085] Further assume that these previously executed control
instructions are saved (e.g., in a buffer). Finally, assume that a
reverse-search is effected by an Esc-/ keyboard sequence.
[0086] If a user were to input the following keyboard sequence:
[0087] ping 68Esc-/
[0088] The following would be returned: [0089] ping
1921.6800.1077
[0090] If the user were to input the following keyboard sequence:
[0091] Esc-/
[0092] again, the following would be returned: [0093] ping
192.168.1.77
[0094] Notice that only (discrete) words or strings are searched
and only words or strings are returned in this exemplary
embodiment. In the foregoing example, the reverse-expand located a
matching string at any place in the previously executed control
instructions. In an alternative embodiment, only leading-edge
matches are found. In such an alternative only an expansion of "1",
"19", or "192" would return the two parameters illustrated
above.
[0095] Note that in one embodiment, a particular keyboard sequence
could selectively expand a string to match only a particular
parameter, such as an internet protocol address for example.
[0096] .sctn.4.5 Conclusions
[0097] As can be appreciated from the foregoing disclosure, the
present invention helps users to enter control instructions using
fewer keystrokes, with less chance of typographical errors, and
with less memorization (e.g., of instructions, parameter values,
syntax rules, etc.) required on the part of the user. The present
invention permits previously executed command instructions to be
reused. The present invention also permits a string to be expanded
to match a word, such as a parameter of a previously executed
control instruction for example.
* * * * *