WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method for modifying packets that meet a particular criteria as the packets pass between two layers in a network    
United States Patent5481735   
Link to this pagehttp://www.wikipatents.com/5481735.html
Inventor(s)Mortensen; Craig (Sunnyvale, CA); Roots; Logan (Redwood City, CA); Strelau; Klaus (Saratoga, CA)
AbstractA method and apparatus in a computer system coupled to a network for altering information in said network by the computer system. A process is inserted between two lower layers of the ISO/OSI model. The process then receives a packet from a first layer of the ISO/OSI model, and determines whether a criteria comprising a set of conditions has been determined in the packet. If any of the set of criteria is present in the packet then the packet is transformed into a modified packet according to a predefined action. Then, the modified packet is transmitted to a second layer of the ISO/OSI model. In different embodiments the layers may be either higher or lower relative to one another in order that incoming or outgoing packets be modified. The method may also be performed under control of a user-generated script, or by remote control from another node. The method may also employ user-generated processes for condition (criteria) checking and/or modifications.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5481735
Method for modifying packets that meet a particular criteria as the

     packets pass between two layers in a network - US Patent 5481735 Drawing
Method for modifying packets that meet a particular criteria as the packets pass between two layers in a network
Inventor     Mortensen; Craig (Sunnyvale, CA); Roots; Logan (Redwood City, CA); Strelau; Klaus (Saratoga, CA)
Owner/Assignee     Apple Computer, Inc. (Cupertino, CA)
Patent assignment
All assignments
Publication Date     January 2, 1996
Application Number     07/999,281
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 28, 1992
US Classification     709/246 370/472 370/474
Int'l Classification     G06F 013/14 H04L 012/00 H04L 012/28
Examiner     Lim; Krisna
Assistant Examiner    
Attorney/Law Firm     Blakely, Sokoloff, Taylor & Zafman
Address
Parent Case    
Priority Data    
USPTO Field of Search     370/60.17 370/85.4 370/94.1 395/200 395/325 395/500 395/800 371/32
Patent Tags     modifying packets meet particular criteria the packets pass between two layers network
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5289469
Tanaka

Feb,1994

[0 after 0 votes]
5251215
Dravida
370/471
Oct,1993

[0 after 0 votes]
5168497
Ozaki
370/394
Dec,1992

[0 after 0 votes]
5150464
Sidhu
709/222
Sep,1992

[0 after 0 votes]
5136716
Harvey
709/228
Aug,1992

[0 after 0 votes]
5124984
Engel
370/230
Jun,1992

[0 after 0 votes]
5115432
Haas
370/469
May,1992

[0 after 0 votes]
5107456
Schuur

Apr,1992

[0 after 0 votes]
5101402
Chiu
709/224
Mar,1992

[0 after 0 votes]
5014221
Mogul
358/1.14
May,1991

[0 after 0 votes]
4939726
Flammer
370/400
Jul,1990

[0 after 0 votes]
4922486
Lidinsky
370/427
May,1990

[0 after 0 votes]
4799215
Suzuki
370/227
Jan,1989

[0 after 0 votes]
4718060
Oguchi
370/389
Jan,1988

[0 after 0 votes]
5115433
Baran
370/400
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method for selectively modifying packets or the transmission of packets transmitted between a first layer in the ISO/OSI model in a network system and a second layer in the ISO/OSI model in a network system, the first layer in the ISO/OSI model being different from and adjacent to the second layer in the ISO/OSI model, the network system including a first process for translating packets from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, the packet having a plurality of properties including a packet size, a packet offset and a plurality of packet traits, the method comprising the steps of:

A) receiving from a user a set of user-specified conditions and a user-specified operation associated with a set of user-specified conditions by:

A1) generating a first display of a first plurality of user interface controls for specifying said set of user-specified conditions;

A2) receiving through user interaction with said first plurality of user interface controls user input that specifies said set of user-specified conditions, wherein each of said user-specified conditions designates an arithmetic relationship between a property of packets and a specified value;

A3) generating a second display of a second plurality of user interface controls for specifying said user-specified operation associated with said set of user-specified conditions;

A4) receiving through user interaction with said second plurality of user interface controls user input that specifies said user-specified operation, said user-specified operation being an operation that either modifies the packet or modifies transmission of the packet;

B) causing a second process to execute when an attempt is made to transmit a packet from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, said second process performing the steps of:

B1) inspecting said packet to determine whether the packet satisfies said set of user-specified conditions;

B2) if said packet satisfies said set of user-specified conditions, then performing a user-specified operation on said packet; and

C) invoking said first process after executing said second process.

2. The method of claim 1 wherein said packet initially includes a first set of data, wherein said step of performing said user-specified operation includes replacing said first set of data in said packet with a second set of data.

3. The method of claim 2 wherein said step of performing said user-specified operation comprises modifying data contained in each of the defined protocol traits of the OSI/ISO protocol stacks.

4. The method of claim 1 wherein said step of performing said user-specified operation includes truncating said packet.

5. The method of claim 1 wherein said step of performing said user-specified operation includes increasing the length of said packet.

6. The method of claim 1 wherein said step of performing said user-specified operation includes retransmitting said packet N number of times on said network system.

7. The method of claim 6 wherein said step of retransmitting is timed such that a time t transpires between each retransmission of said packet.

8. The method of claim 7 wherein said step of retransmitting is timed such that a time t.sub.i transpires between an initial transmission of said packet and a first of said N retransmissions of said packet on said network system.

9. The method of claim 1 wherein said method includes the step of receiving input from a user, wherein the input selects a plurality of network ports in said network system, wherein the method is performed only on the plurality of network ports selected by the user.

10. The method of claim 1 wherein said steps of receiving through user interaction with said first plurality of user interface controls user input that specifies said set of user-specified conditions and receiving through user interaction with said second plurality of user interface controls user input that specifies said user-specified action include receiving a user-generated script which specifies said user-specified set of conditions and said user-specified operation.

11. The method of claim 1 wherein the first layer is higher in the ISO/OSI model than the second layer.

12. The method of claim 1 wherein the first layer is lower in the ISO/OSI model than the second layer.

13. The method of claim 1 wherein said set of user-specified conditions includes at least one condition that is based on an output of a pseudo random number generator.

14. The method of claim 1 wherein said step of performing said user-specified operation comprises delaying transmission of said packet for a user-specified period of time.

15. A method for selectively modifying packets or transmission between a first layer in the ISO/OSI model and a second layer in the ISO/OSI model in a network system, the first layer in the ISO/OSI model being different from and adjacent to the second layer in the ISO/OSI model, the network system including a first process for translating packets from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, the network system executing code indicated by an address stored at a predetermined location when an attempt is made to transmit a packet from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, said address initially indicating the location of a first portion of code corresponding to said first process, the packet having a plurality of properties including a packet size, a packet offset and a plurality of packet traits, the method comprising the steps of:

A) revising said address to indicate the location of a second portion of code corresponding to a second process, wherein revising said address causes said network system to execute said second process when said attempt is made to transmit said packet from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, said second process performing the steps of:

A1) inspecting said packet to determine whether the packet satisfies a set of user-specified conditions, wherein each of said user-specified conditions designates an arithmetic relationship between a property of said packet and a specified value;

A2) if said packet satisfies said set of user-specified conditions, then performing a user-specified operation on said packet, said user-specified operation being an operation that a user has associated with said set of user-specified condition that either modifies the packet or affects transmission of the packet; and

B) invoking said first process after executing said second process.

16. The method of claim 15 wherein said step of invoking said first process after executing said second process includes creating a reference in said second portion of code to said first portion of code.

17. A method for selectively modifying packets or transmission of between a first layer in the ISO/OSI model and a second layer in the ISO/OSI model in a network system, the first layer in the ISO/OSI model being different from and adjacent to the second layer in the ISO/OSI model, the network system including a first process for translating packets from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, the packet having a plurality of properties including a packet size, a packet offset and a plurality of packet traits, the method comprising the steps of:

A) causing a second process to execute when an attempt is made to transmit a packet from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model, said second process performing the steps of:

A1) inspecting said packet to determine whether the packet satisfies a set of user-specified conditions, wherein each of said user-specified conditions designates an arithmetic relationship between a property of said packet and a specified value;

A2) if said packet satisfies said set of user-specified conditions, then performing a user-specified operation on said packet, said user-specified operation being an operation that a user has associated with said set of user-specified condition that either modifies the packet or affects transmission of the packet; and

B) invoking said first process after executing said second process;

wherein said set of user-specified conditions further includes a first condition and a second condition, wherein said first condition is whether said second condition has been satisfied by a user-specified number of packets previously transmitted from said first layer in the ISO/OSI model to said second layer in the ISO/OSI model.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to networking systems. Particularly, the present invention relates to modification of packets in a networking system for a variety of applications, including testing.

2. Background Information

Modern computer systems, especially personal computers, have gained increasing capabilities in recent years for communication. Specifically, networking technology has allowed the proliferation of such techniques as file sharing, message passing, and program linking in order to provide additional capabilities. For example, the proliferation of electronic mail has been an increased application for modern personal computer systems. Such electronic mail systems allow large numbers of users of computer systems to be linked together and communicate via messages sent over the mail system.

File sharing allows the files on one user's fixed-media device of his computer to be shared with another user's computer system. Thus, a computer system upon which files are shared becomes a "server." In this manner, data and files may be transferred to and from various systems in the network. Data and files are transmitted between computers using discrete data known as "packets." These packets follow a very specific syntax specified by the ISO-OSI reference model (Internal Standards Organization which developed and published a standard networking framework known as the Open Systems Interconnection reference model) in some computer systems.

It has been increasingly a requirement in networking systems to provide means for testing the reliability of such systems. While a network is operating, various failures may occur in the network due to various operating conditions. This causes packets transmitted in the system to become distorted or changed in some other way. For example, hardware failures may prevent a packet from traversing from one area of a network to another. In another situation, such a hardware failure may result in data loss or packet transmission errors, such as delays in transmission, multiple transmissions of same packets, packets arriving out of order, or data errors. Network traffic and/or failures may also affect the network and cause transmission errors. In fact, depending upon the failures which occur in a network, any combination of these errors may occur where packets are distorted in the network. Thus, to ensure the integrity of such systems and the related control hardware and software used in the network, testing which operates to simulate all possible error conditions which may occur is desirable. To date, no tools have existed in the personal computer industry which allow such errors to be simulated.

SUMMARY AND OBJECTS OF THE INVENTION

One of the objects of the present invention is to provide a means for testing in a networking computer system.

Another of the objects of the present invention is to provide a means for modifying data transmitted in a networking system to simulate errors which may occur in such a networking system.

Another of the objects of the present invention is to provide a means for altering data contained within packets transmitted in a networking system.

Another of the objects of the present invention is to provide a means for delaying packets in a networking system.

These and other objects of the present invention are provided for by a method and apparatus in a computer system coupled to a network for altering information in said network by the computer system. A process is inserted between two lower layers of the ISO/OSI model. The process then receives a packet from a first layer of the ISO/OSI model, and determines whether a criteria comprising a set of conditions has been determined in the packet. If any of the set of criteria is present in the packet then the packet is transformed into a modified packet according to a predefined action. Then, the modified packet is transmitted to a second layer of the ISO/OSI model. In different embodiments the layers may be either higher or lower relative to one another in order that incoming or outgoing packets be modified. In a preferred embodiment, modification to the packet includes replacing data in said packet, truncating the packet, increasing the length or the packet, retransmitting the packet N number of times on the network, etc. Intervals may also be specified between retransmissions of the packet in this example, or the number of times the packet is retransmitted may be specified. The method may also comprise modifying data contained in each of the defined protocol traits of the ISO/OSI protocol stacks. The method may be performed on a plurality of network ports selected by a user. The method may also be performed under control of a user-generated script, or by remote control from another node. The method may also employ user-defined processes for condition (criteria) checking and/or modifications.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and not limitation in the figures of the accompanying in which like references indicate like elements and in which:

FIG. 1 shows a block diagram of a computer system upon which the methods and apparatus of the present invention may be implemented.

FIG. 2 shows a block diagram of the multiple layer ISO-OSI reference model for networking environments.

FIG. 3 shows a table of pointers of the Local Access Protocol (LAP) write "hook."

FIG. 4 shows a table of pointers for the LAPWrite hook with the packet modification process inserted.

FIG. 5 is a view of a user's window which displays the conditions and actions to be performed on packets, the list of ports, and statistics pertaining to the ports.

FIG. 6 shows an example window displaying a status of the packet interception/modification.

FIG. 7 shows a distribution window which allows a user to specify an initial behavior when packets are intercepted and modified.

FIG. 8a shows a criteria window which is used for specifying conditions and actions to be perforated, and FIG. 8b shows options available under pop-up menu items for those conditions and actions.

FIGS. 9a and 9b show parameter windows for specifying condition and action parameters for packet modification.

FIG. 10 shows a window for altering a packer's size.

FIG. 11 shows a window for altering a string in packets.

FIG. 12 shows a window for altering a packet parameter.

FIG. 13 shows a delay window which may allow a user to specify when and how long packets are delayed in the network.

FIG. 14 shows a window which allows a user to specify delays and multiple transmissions (reverb) of a packet in the network.

FIG. 15 shows a complete user's window which has some example conditions and actions.

FIGS. 16a shows a portion of a process flow diagram for a process which may be used in the preferred embodiment for intercepting and modifying packets.

FIG. 16b shows a portion of the process flow diagram illustrated in FIG. 16a.

FIG. 16c shows a portion of the process flow diagram illustrated in FIG. 16a.

FIG. 16d shows a portion of a process flow diagram for a process performed when a user specifies conditions and actions for which packet modification is required.

FIG. 16e shows a portion of a process flow diagram for a process in which one computer system causes another computer system to intercept and modify packets in a particular manner.

FIG. 17 shows an example parameter queue element which is used for defining a condition in the condition queue.

FIG. 18 shows a condition queue element which always returns true.

FIG. 19 shows examples action queue elements which are used for specifying actions.

FIG. 20 shows an example of a user-defined condition queue element.

FIG. 21 shows an example user-defined action queue element.

DETAILED DESCRIPTION

A method and apparatus for modifying packets in a computer system network is described. In the following description, for the purposes of explanation, specific fields, data, and user interfaces have been set forth in order to provide a thorough understanding of the :present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known circuits and devices are shown in block diagram form in order to not unnecessarily obscure the present invention.

Referring to FIG. 1, the computer system upon which the preferred embodiment of the present invention is implemented is shown as 100. 100 comprises a bus or other communication means 101 for communicating information, and a processing means 102 coupled with bus 101 for processing information. System 100 further comprises a random access memory (RAM) or other dynamic storage device 104 (referred to as main memory), coupled to bus 101 for storing information and instructions to be executed by processor 102. Main memory 104 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 102. Computer system 100 also comprises a read only memory (ROM) and/or other static storage device 106 coupled to bus 101 for storing static information and instructions for processor 102, and a mass storage device 107 such as a magnetic disk or optical disk and its corresponding disk drive. Mass storage device 107 is coupled to bus 101 for storing information and instructions. Computer system 100 may further be coupled to a display device 121, such as a cathode ray tube (CRT) coupled to bus 101 for displaying information to a computer user. An alphanumeric input device 122, including alphanumeric and other keys, may also be coupled to bus 101 for communicating information and command selections to processor 102. An additional user input device is cursor control 123, such as a mouse, a trackball, stylus, or cursor direction keys, coupled to bus 101 for communicating direction information and command selections to processor 102, and for controlling cursor movement on display 121. Another device which may be coupled to bus 101 is hard copy device 124 which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media. Lastly, computer system 100 may be coupled to a network connection module 125 for communication with other computers, network routers, or other peripheral devices such as shared printers, modems, etc.

In the preferred embodiment, computer system 100 is one of the Macintosh.RTM. family of personal computers, such as the Macintosh.RTM. Performa.TM. or Macintosh.RTM. Quadra.TM. manufactured by Apple.RTM. Computer, Inc. of Cupertino, Calif. (Apple, Macintosh, Performa, and Quadra are trademarks of Apple Computer, Inc.). Processor 102 is one of the 68000 family of microprocessors manufactured by Motorola, Inc., of Schaumburg, Ill., such as the 68030 or 68040 microprocessor.

In a preferred embodiment, network connection module 125 is used for coupling the computer system to other computer systems in a typical network environment. Network connection module may be any number of hardware devices commercially available, however, for the purposes of the remainder of this discussion, network connection module 125 is the standard built-in AppleTalk-brand connection module available from Apple Computer, Inc. of Cupertino, Calif. Note that, in other embodiments, the computer system may contain additional add-in cards or other built-in networking features which provide more high performance networking capabilities, such as Ethernet, Token Ring, TCP/IP, or other networking standards which are commercially available in the industry. For connecting to a Macintosh.RTM.-brand personal computer, many such networking peripheral integrated circuit cards are commercially available which may be inserted into an expansion slot in the computer system and may be used for communicating over a higher performance networking medium. It can be appreciated by one skilled in the art that any type of network peripheral adapter may be used as network connection module 125.

The underlying routines which provide the basis for the functioning of the preferred embodiment, and additional user expansion of these functions, is provided by routines written in the "C"-brand programming language and inline 68000 assembly language. Routines are compiled using the Think C brand compiler available from Symantec Corporation of Cupertino, Calif. which generates computer object code for Motorola 68000 family central processing units operating in the Macintosh.RTM. brand operating system. Examples of the data structures and messages used in the preferred embodiment are shown in the figures attached to this patent application. These will be discussed and explained in more detail below.

Before discussing the preferred embodiment in detail, a brief overview of the user interface used by the preferred embodiment. The preferred embodiment uses a "windowing" or graphical user interface (GUI) operating system wherein selections are performed using a cursor control device such as 123 shown in FIG. 1. Typically, an item is "selected" on a computer system display such as 121 using cursor control device 123 by depressing a selection button which is typically mounted on the cursor control device such as 123. Therefore, in order to run a given program, the user merely selects area on a computer display by "double clicking" the area on the screen. A "double click" is an operation comprising two rapid depressings of the mouse or other selection device indicating to the operating system that the program is desired to be run. Further, "pull-down" menus are used in the preferred embodiment. A pull-down menu is a selection which is accessible by depressing the selection button when the cursor is pointing at a menu bar (typically at the top of a computer screen), and "dragging" (moving cursor control device 123 while the selection button is depressed) until the selection the user wishes to access is reached on the pull-down menu. An item is indicated as being selected on a pull-down menu when the item is displayed in " reverse video" or white text on a black background. The selection is performed by the user releasing the selection button when the selection he wishes to make is displayed in this reverse video format. Other selections and options are available using standard GUI functions.

Note also that GUI's may incorporate other selection devices, such as a stylus or "pen" which may be interactive with a display. Thus, a user may "select" regions of the GUI on the display by touching the stylus against the display. In this instance, such displays may be touch or light-sensitive to detect where the selection occurs. Such devices may thus detect selection position and the selection as a single operation instead of the "point and click," as in a system incorporating a mouse or trackball. Such a system may also lack a keyboard such as 122 wherein all interface is provided via the stylus as a writing instrument (like a pen) and the written text is interpreted using optical character recognition (OCR) techniques. These types of systems may also benefit from the methods and apparatus described herein.

FIG. 2 shows a representation of the typical prior art ISO-OSI reference model (Internal Standards Organization which developed and published a standard networking framework known as the Open Systems Interconnection reference model) as applied to the Macintosh.RTM.-brand computer system. This model defines in explicit terms the concepts of a protocol and service interface. It defines a protocol architectural framework consisting of seven layers: Physical 201; Data Link 205; Network 210; Transport 211; Session 216; Presentation 221; and Application 224. Each layer may be thought of as a separate process or filter which either encapsulates protocol information onto existing data packets, strips information transmitted in the networking system or routes appropriate data packets through the system depending on the type of packet and the particular layer in which the packet resides. The various layers allow packets to be transmitted from one variety of hardware to another in one process (socket) to another. A detailed discussion of the various features performed by the layers of protocol stack 200 will not be submitted, however, a detailed description of the various functions of the protocol stack may be found in the publication G. Sidhu, R. F. Andrews, and A. B. Oppenheimer, Inside AppleTalk (Second Edition, 1990) ("Inside AppleTalk").

Note that the following discussion of the apparatus discussed herein will refer specifically to a series of routines which are compiled, linked, and then run in object code representation in computer system 100 of the preferred embodiment. However, it can be appreciated by one skilled in the art that the foregoing methods and apparatus may be implemented in a special purpose hardware device, such as discrete logic devices, large scale integrated circuits (LSI's), or other specialized hardware. It can be appreciated by one skilled in the art that the description herein has equal application to other apparatus having similar functions.

The preferred embodiment implements a process which operates in the background of a computer system during normal system run time. The modification process of the preferred embodiment is inserted as a run time process which operates in conjunction with the Link Access Protocol (LAP) software used in the Macintosh.RTM. brand computer systems. This process is known as the "LAP Manager" and is used for translating packets between Network Layer 210 and Data Link Layer 205, as shown in FIG. 2. Any one of the currently supported link access protocols, such as TokenTalk.TM. brand link access protocol (TLAP) 206, EtherTalk.TM. brand link access protocol (ELAP) 207, or LocalTalk.TM. brand link access protocol (LLAP) 208 may be utilized in this preferred embodiment (trademarks of Apple Computer). Of course, it can be appreciated by one skilled in the art that other link access protocols residing in data link layer 205 may be supported in future versions of the networking system. Each of the packets translated from Data Link Layer 205 is handled by the Datagram Delivery Protocol 209, as shown in FIG. 2. Thus, packets are modified from DDP layer 209 and transmitted to protocols layers 206, 207, or 208, as is shown in FIG. 2 in one embodiment. In another embodiment, packets received from the higher levels 206, 207, and 208 are modified and passed to Data Link layer 205. Thus, in either case, packets being received and/or those transmitted may be intercepted and/or modified.

The packet modification method of the preferred embodiment operates in conjunction with the AppleTalk-brand LAP (link access protocol) manager. The LAP manager is described in detail in the publication Macintosh.RTM. AppleTalk.RTM. Connections Programmer's Guide, Part No. M7056/A (1990) ("Connections Guide"), available from the Apple Programmer and Developer's Association (APDA) of Cupertino, Calif. This allows the network modification methods of the preferred embodiment to be used with any application program interfaces supported by the AppleTalk LAP manager. Any future network links which, then, may be used in conjunction with the packet modification described herein will be supported as long as they are complying with the Application Program's Interface (API) of the LAP Manager.

The packet modification method of the preferred embodiment utilizes the system calls LWrtGet, LWrtRemove, and LWrtInsert described in Connections Guide at pp. 29-48 to insert computer code that provides the interception and modification process of the preferred embodiment into the LAP manager's internally maintained table of pointers for connections which communicate with the hardware devices specified for a given port which resides at physical layer 201, as is shown in FIG. 2. This table of pointers, in the preferred embodiment, is accessed via the "LAPWrite hook." Thus, for a given port, LWrtGet is called in order to determine the location of the original code for controlling the port's hardware link. That address is then inserted into a routine of executable code of the preferred embodiment that has been created in memory for controlling that port by the packet interception and modification process of the preferred embodiment. LWrtRemove removes the reference to the original code which was used for controlling the hardware link. To replace that reference, the preferred embodiment uses LWrtInsert to insert a reference to the process module of the preferred embodiment into the table accessed by the LAPWrite hook of the LAP Manager. Then, whenever a packet is received, the packets are intercepted by the newly inserted packet interception and modification process, and when the process has completed processing the packet, a call is made to the original driver for the port residing at data link layer 205, and the packet is then processed in its normal manner.

FIGS. 3 and 4 graphically illustrate the insertion of the packet interception and modification procedure into the table of processes accessed via the LAPWrite hook. FIG. 3 shows table 310 which is associated with each of the processes for the link access protocols. FIG. 3 shows the table prior to the insertion of the packet interception and modification process. As is shown, for each of the ports 0-n, table 310 references each of the port processes 300-303 which handles the data link layer translation for each of the physical ports 0-n which are connected to the system. After insertion of the packet interception and modification process, table 310 references the packet interception/modification procedure using a different pointer for each of the processes 400-403. Thus, once a packet is transmitted to data link layer 205, they are passed to the interception/modification process, as exemplified by graphical images 400-403 representing processes to the interception/modification process. Then, the process references each of the original data link processes 300-303, as is shown in FIG. 4. Thus, in this manner, packets received are intercepted by the packet interception/modification process, modified, if necessary, and then passed to the data link layer routines for further processing and transmission to the hardware devices for the physical links at physical layer 201.

The preferred embodiment allows a user to view conditions upon which packet interception and modification will be performed and, further, view actions which occur upon detection of those conditions. The user enters the information using a variety of input methods discussed later. Moreover, feedback is provided which gives a status of the current packet interception/modification. This is provided in window 500. Window 500 has three distinct portions. 501 is used by the user for viewing those conditions to detect and actions which are to occur upon the meeting of the conditions. This is done in a "scripting" programming language wherein the user may either specify