RFC 1378

The PPP AppleTalk Control Protocol (ATCP)

๐Ÿ“… published November 1992, from ietf

RFC 1378: The PPP AppleTalk Control Protocol (ATCP) ๐ŸŽ€

Author: B. Parker, Cayman Systems ๐Ÿ’– Date: November 1992 ๐Ÿ“… Category: IAB standards track ๐Ÿ”ฅ Obsoletes / Updates: nothing listed in the title block ๐Ÿ™ˆ

Status of This Memo โœจ

This RFC specifies an IAB standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Check the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited ๐Ÿฆ‹

Abstract ๐ŸŒธ

Okay so the Point-to-Point Protocol (PPP) [1] is the standard way to wrap up Network Layer protocol info and send it over point-to-point links ๐Ÿ“ฆ. PPP also has an extensible Link Control Protocol, plus a whole family of Network Control Protocols (NCPs) that set up and configure different network-layer protocols ๐Ÿ’…

This document defines the NCP that sets up and configures the AppleTalk Protocol [3] over PPP ๐Ÿ“

This memo is a joint project between the AppleTalk-IP Working Group and the Point-to-Point Protocol Working Group of the Internet Engineering Task Force (IETF). Comments go to the ietf-ppp@ucdavis.edu mailing list ๐Ÿ’œ

Table of Contents ๐Ÿงš

1.     Introduction ..........................................    2
2.     A PPP Network Control Protocol (NCP) for AppleTalk ....    2
2.1    Sending AppleTalk Datagrams ...........................    3
2.2    Half-Routers ..........................................    4
3.     ATCP Configuration Options ............................    4
3.1    AppleTalk-Address .....................................    5
3.2    Routing-Protocol ......................................    7
3.3    Suppress-Broadcasts ...................................    8
3.4    AT-Compression-Protocol ...............................    9
3.5    Server-information ....................................   10
3.6    Zone-Information ......................................   12
3.7    Default-Router-Address ................................   13
APPENDICES ...................................................   14
A.     ATCP Recommended Options ..............................   14
REFERENCES ...................................................   15
ACKNOWLEDGEMENTS .............................................   15
SECURITY CONSIDERATIONS ......................................   16
CHAIR'S ADDRESS ..............................................   16
AUTHOR'S ADDRESS .............................................   16

1. Introduction ๐ŸŒˆ

Okay bestie, PPP has three main parts ๐Ÿ‘‘

  1. A way to wrap datagrams up for serial links ๐Ÿ“ฆ
  2. A Link Control Protocol (LCP) that sets up, configures, and tests the data-link connection ๐Ÿ”ง
  3. A family of Network Control Protocols (NCPs) that sets up and configures the different network-layer protocols โœจ

So to get talking over a point-to-point link, each end has to send LCP packets first to configure and test the data link ๐Ÿซถ Once the link is up and any optional facilities the LCP needs have been negotiated, PPP has to send NCP packets to pick and configure one or more network-layer protocols ๐Ÿ’– After each chosen protocol is configured, its datagrams can finally go over the link ๐Ÿฆ‹

The link stays configured until explicit LCP or NCP packets close it down, or until something external happens, like an inactivity timer running out or a network admin stepping in ๐Ÿ™ˆ

2. A PPP Network Control Protocol (NCP) for AppleTalk ๐Ÿ’…

The AppleTalk Control Protocol (ATCP) handles configuring, enabling, and disabling the AppleTalk protocol modules on both ends of the point-to-point link ๐ŸŽ€ It uses the same packet exchange machanism as the Link Control Protocol (LCP) ๐Ÿ“ ATCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. Any ATCP packets that show up before that phase is reached should be silently discarded ๐Ÿคซ

ATCP is exactly the same as the Link Control Protocol [1], with the following exceptions ๐Ÿ‘‘

Frame Modifications ๐ŸŒธ

The packet may utilize any modifications to the basic frame format which have been negotiated during the Link Establishment phase.

Data Link Layer Protocol Field ๐Ÿฆ‹

Exactly one ATCP packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 8029 (AppleTalk Control Protocol) ๐Ÿ’œ

Code field ๐Ÿ’€

Only Codes 1 through 7 are used: Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack and Code-Reject ๐Ÿ”ฅ Other Codes should be treated as unrecognized and should result in Code-Rejects ๐Ÿ™…โ€โ™€๏ธ

Timeouts โฐ

ATCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. An implementation should be ready to wait for Authentication and Link Quality Determination to finish before it times out waiting for a Configure-Ack or other response ๐Ÿซ  It is suggested that an implementation only give up after user intervention or a configurable amount of time โœจ

Configuration Option Types ๐Ÿ“

ATCP has its own distinct set of Configuration Options, which are defined below ๐ŸŽ€

2.1. Sending AppleTalk Datagrams ๐Ÿ“ฌ

Before any AppleTalk packets can be communicated, PPP must reach the Network-Layer Protocol phase, and the AppleTalk Control Protocol must reach the Opened state ๐Ÿš€

Unless otherwise negotiated (via option 4), exactly one AppleTalk packet is encapsulated in the Information field of a PPP Data Link Layer frame where the Protocol field indicates type hex 0029 (AppleTalk) ๐ŸŒท

Heads up: negotiating compression may imply a different encapsulation and therefore different protocol fields. Those different protocol fields imply packet types that are sub-protocols of the base AppleTalk NCP ๐Ÿงš

An encapsulated AppleTalk packet begins with an extended DDP (Datagram Delivery Protocol) header, also known as a Long DDP header ๐Ÿ’– The maximum length of a DDP datagram is 599 octets ๐Ÿ“

Since there is no standard method for fragmenting and reassembling AppleTalk datagrams, it is required that PPP links supporting AppleTalk allow at least 599 octets in the information field of a data link layer frame ๐Ÿซถ

2.2. Half-Routers ๐Ÿฆ‹

One model for routers in [3] is two remote AppleTalk routers linked as "half-routers", with no Node ID or Network number assigned to either side of the link ๐Ÿ“ When acting as half-routers, the only effect on transported packets is that the hop count gets incremented when it's received over the link ๐Ÿ’œ Routing updates received over a half-router link should also increment the hop count of routing table updates โœจ

Normally, AppleTalk sends RTMP Routing updates every 10 seconds โฐ

3. ATCP Configuration Options ๐ŸŽ€

ATCP Configuration Options let the two sides negotiate desirable AppleTalk parameters ๐Ÿ’… ATCP uses the same Configuration Option format defined for LCP [1], but with its own separate set of Options ๐ŸŒธ

The most up-to-date values of the ATCP Option Type field are in the most recent "Assigned Numbers" RFC [2]. The current values are assigned like this ๐Ÿ‘‘

1       AppleTalk-Address

2       Routing-Protocol

3       Suppress-Broadcasts

4       AT-Compression-Protocol

5       RESERVED

6       Server-information

7       Zone-information

8       Default-Router-Address

3.1. AppleTalk-Address ๐ŸŒˆ

Description ๐Ÿงš

This Configuration Option is how you negotiate the AppleTalk network and node number used on the local end of the link ๐Ÿฆ‹ It lets the sender of the Configure-Request say which AppleTalk-address it wants, or ask the peer to provide that info ๐Ÿ’– The peer can provide it by NAKing the option and returning a valid AppleTalk-address ๐Ÿซถ

If negotiation about the remote AppleTalk-address is required, and the peer did not include the option in its Configure-Request, the option SHOULD be appended to a Configure-Nak ๐Ÿ”ฅ The AppleTalk-address value given must be acceptable as the remote AppleTalk-address, or indicate a request that the peer provide the information ๐Ÿ’œ

By default, no AppleTalk address is assigned ๐Ÿ™ˆ A network or node number of zero in a Configure-Request shall be interpreted as asking the remote end to specify a value via a Configure-Nak ๐Ÿ“ A network or node number of zero in a Configure-Ack shall be interpreted as agreement that no value exists โœจ

An implementation that requires no AppleTalk addresses be assigned (like an intermediate system to intermediate system "half-routing" setup) MUST Configure-Reject all AppleTalk-Address Configuration Options ๐Ÿšซ

An implementation that requires AppleTalk addresses be assigned to it (like an end system) MUST fail configuration if the remote side Configure-Rejects all AppleTalk-Address requests, or fails to provide a valid value ๐Ÿ’€

If this option is negotiated, the two sides MUST negotiate a common AppleTalk network number and two unique AppleTalk node numbers ๐Ÿ‘‘ The network number MAY be zero, but the AppleTalk node numbers MUST be non-zero ๐ŸŒท Values chosen for network and node numbers must adhere to the ranges defined in [3] ๐Ÿ“

The AppleTalk protocol, phase 2, defines the concept of "extended" and "non-extended" networks ๐ŸŒธ Extended networks can support a large number (hundreds) of nodes, and they require multiple network numbers and multiple zone names to be managed effectively ๐Ÿฆ‹ Non-extended networks can only support a small number of devices, and they only require a single network number and zone name to be managed effectively ๐Ÿงš

If a PPP link transporting AppleTalk is assigned an AppleTalk address, it must have the "non-extended" characteristics defined in [3] ๐Ÿซถ

The format of the network and node data is defined to be the same as the "AppleTalk address" in [3], chapter 3, "AppleTalk AARP packet formats on Ethernet and token ring" ๐Ÿ’–

A summary of the AppleTalk-Address Configuration Option format is shown below. The fields are transmitted from left to right ๐Ÿ“ฌ

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |    Reserved   |     AT-Net    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     AT-Net    |    AT-Node    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type ๐ŸŽ€

1

Length ๐Ÿ“

6

Reserved ๐Ÿ™ˆ

This octet is reserved and MUST be set to zero on transmission and ignored on reception ๐Ÿ”’

AT-Net ๐ŸŒˆ

The two octet AT-Net is the desired local AppleTalk network number of the sender of the Configure-Request. This two octet quantity represents a 16 bit unsigned number sent "network byte order" (most significant octet first) ๐Ÿงฎ

AT-Node ๐Ÿ’œ

The one octet AT-Node is the desired local AppleTalk node ID of the sender of the Configure-Request ๐Ÿซถ

3.2. Routing-Protocol ๐Ÿฆ‹

Description

okay so this option lets you negotiate which routing protocol you're gonna use ๐Ÿ—บ๏ธ "half-routers" especially love this one, because they can swap routing info using something tuned for the PPP connection. ngl it's giving efficiency. By default, AppleTalk RTMP (Routing Table Maintenance Protocol) routing information is sent over the PPP connection.

By default, AppleTalk RTMP routing information is sent over the PPP connection. (yes, it's said twice, the spec really wanted you to remember it ๐Ÿ’…)

A summary of the Routing-Protocol Configuration Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |       Routing-Protocol        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Data ...
+-+-+-+-+

Type

2 โœจ

Length

= 4 ๐Ÿ’–

Routing-Protocol

The Routing-Protocol field is two octets and tells everyone which type of routing protocol you want ๐ŸŽ€ It's a 16 bit number sent in "network byte order" (most significant octet first), so the big end goes first, periodt.

Negotiating some routing protocols means you're also gonna receive packet types that carry them. Like, if you negotiate AppleTalk AURP to swap routing info, both sides have to accept EDDP type packets, because that's the transport type AURP uses. it's literally a package deal ๐Ÿงš

Initial values are assigned as follows:

Value       Protocol

  0         No routing information exchange
  1         AppleTalk RTMP is used to exchange routing information
  2         AppleTalk AURP is used to exchange routing information
  3         AppleTalk ABGP is used to exchange routing information

Data

The Data field is zero or more octets and holds extra data, decided by whichever routing protocol is named in the Routing-Protocol field. ๐ŸŒธ

None of the Routing-Protocol options defined here need any additional data. zero extra fuss, bestie ๐Ÿ™ˆ


3.3. Suppress-Broadcasts ๐Ÿ”‡

Description

This Configuration Option lets you negotiate turning off AppleTalk broadcast datagrams that would otherwise chew through your limitted PPP bandwidth ๐Ÿ˜ญ It tells the remote end that no AppleTalk broadcast datagrams of a given DDP type should be sent.

This option is useful when only one end system negotiates it. The local end system can ask that broadcast packets generated on the remote network don't get pushed across the PPP link. If you're a single end system hooked up to a big network, this can shut down the regular NBP lookups that other end systems over there keep generating. The tradeoff is that protocols like NBP can no longer find network entities on the local system. But because the option is asymmetric, it doesn't stop your local system from finding stuff on the remote network. so it's a fair trade, lowkey iconic โœจ

By default, no AppleTalk broadcast datagrams are suppressed. Also, this option might clash with other options (like Routing Protocol). If that happens, the Suppress-Broadcasts option wins ๐Ÿ‘‘

A summary of the Suppress-Broadcasts Configuration Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |  DDP-Type  1  |  DDP-Type  2  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| etc...
+-+-+-+-+

Type

3 ๐Ÿ“

Length

= 2 ๐Ÿซถ

DDP-Types

This is a vector of one or more single octet DDP type values. Each one of them is to be suppressed if it's sent to the broadcast address.

If there's no data (the length = 2), then all broadcast packets are to be suppressed, no matter the DDP type. full mute mode, iykyk ๐Ÿคซ


3.4. AT-Compression-Protocol ๐Ÿ—œ๏ธ

Description

This Configuration Option lets you negotiate using a specific compression protocol. By default, compression is not enabled, so you gotta ask for it ๐Ÿ’œ

A summary of the AT-Compression-Protocol Configuration Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |   AT-Compression-Protocol     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Data ...
+-+-+-+-+

Type

4 โœจ

Length

= 4 ๐ŸŽ€

AT-Compression-Protocol

The AT-Compression-Protocol field is two octets and says which compression protocol you want. The values are always the same as the PPP Data Link Layer Protocol field values for that same compression protocol, which is honestly so neat ๐Ÿงš

The most up-to-date values of the AT-Compression-Protocol field are in the most recent "Assigned Numbers" RFC [2]. Current values are assigned as follows:

   Value (in hex)          Protocol

                           none defined

Data

The Data field is zero or more octets and holds extra data, decided by the particular compression protocol. ๐ŸŒˆ


3.5. Server-information ๐Ÿ–ฅ๏ธ

Description

This Configuration Option gives you info about the communications server on the remote side of the PPP connection. ๐Ÿ‘€

This option is advisory only. it's just there to help an end system build a simple user interface, nothing more ๐Ÿ’…

A summary of the Server-Information Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |          Server-class         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Server-implementation-id                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Server-name ...
+-+-+-+-+-+-+-+-+-+-+-+-+

Type

6 ๐ŸŒธ

Length

= 8 ๐Ÿ’–

Server-class

The Server-class field is two octets and tells you what kind of communication server is on the remote end of the PPP connection.

Initial values are assigned as follows:

Value        Class

  1          AppleTalk PPP Dial-in server.

             The server-implementation-id is a four byte version
             id, with the first byte defined as the major
             version number (1-255) and the second byte defined
             as the minor version number (1-255).

             The third and fourth bytes are undefined and should
             be zero.

  2          Generic AppleTalk PPP implementation.

             The server-implementation-id is undefined and
             vendor specific.

  3          Both dial-in server and router

Server-implementation-id

The Server-implementation-id field is four octets and says which version of the communication server is on the remote end of the PPP connection. version check, bestie โœจ

Server-name

This optional field holds the "AppleTalk ASCII" name of the server. The character codes for "AppleTalk ASCII" are defined in [3], appendix D, "Character codes". The length of the name is bounded by the option length. ๐ŸŽ€


3.6. Zone-Information ๐Ÿ—บ๏ธ

Description

This Configuration Option gives you info about the AppleTalk zone used for the PPP connection. ๐Ÿฆ‹

Again, this option is advisory only. It's there to make the end system's simple user interface better, that's the whole job ๐Ÿ’…

A summary of the Zone-Information Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |           Zone-name...        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type

7 โœจ

Length

= 3 ๐Ÿซถ

Zone-name

This field holds the "AppleTalk ASCII" zone name where the server lives. The character codes for "AppleTalk ASCII" are defined in [3], appendix D, "Character codes". The length of the name is bounded by the option length. ๐ŸŒท


3.7. Default-Router-Address ๐Ÿงญ

Description

This Configuration Option gives you info about a "default" AppleTalk router, which you can use to get network info like zone names. It's there so you can find a router's address when both sides of the link are end systems, which is a whole vibe ๐ŸŒˆ

Any AppleTalk RTMP packets received should supersede information negotiated in this option. RTMP packets always win the drama, lowkey ๐Ÿ‘‘

By default, no default router is present. ๐Ÿ™ˆ

A summary of the Default-Router-Address Option format is shown below. The fields are transmitted from left to right.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |    Reserved   |     AT-Net    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     AT-Net    |    AT-Node    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type

8 ๐Ÿ’œ

Length

6 ๐Ÿ“

Reserved

This octet is reserved and MUST be set to zero on transmission and ignored on reception. no exceptions, babe ๐Ÿ’€

AT-Net

The two octet AT-Net is the AppleTalk network number of the default router. This two octet quantity is a 16 bit unsigned number sent in "network byte order" (most significant octet first). ๐Ÿงš

AT-Node

The one octet AT-Node is the AppleTalk node ID of the default router. โœจ


The ATCP is built to support three different modes of operation. Each mode puts constraints on which configuration options get used and what values get negotiated. ๐ŸŽ€

The options for server information, zone information and default router address are "informational" options. One end of the connection provides them and they are not meant to be negotiated. They're there to give dial-in end systems a higher level of service. ๐Ÿซถ

The options that SHOULD be negotiated in each case are outlined below. Any option not listed may be rejected. ๐Ÿ‘‘

End System to Intermediate System - "dial-in" ๐Ÿ“ž

This mode is meant to support end system dial-in. ๐ŸŒธ

      1       AppleTalk-Address (required)
      2       Routing-Protocol (required, no routing protocol)
      3       Suppress-Broadcasts (optional)
      4       AT-Compression-Protocol (optional)
      6       Server-information (optional, request from end system)

Intermediate system to Intermediate system - with network number โœจ

okay so this mode is for WAN-to-WAN links, aka router to router ๐Ÿฆ‹, and the link is configured with a network number. here's the lineup:

1      AppleTalk-Address (required, nets must be zero or equal)
2      Routing-Protocol (optional)
3      Suppress-Broadcasts (optional)

Intermediate system to Intermediate system - without network number ๐Ÿ’…

same router-to-router energy, but this time the link is not configured with a network number ๐Ÿ™ˆ routers in this mode get called "half-routers" in [3], which is such a iconic name ngl ๐ŸŒธ. here's the lineup:

1      AppleTalk-Address (optional, nets & nodes MUST be zero)
2      Routing-Protocol (optional)
3      Suppress-Broadcasts (optional, suppress all broadcasts)

References ๐Ÿ“š

[1] Simpson, W., "The Point-to-Point Protocol (PPP)", RFC 1331, Daydreamer, May 1992.

[2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340, USC/Information Sciences Institute, July 1992.

[3] Sidhu G., Andrews, R., and A. Oppenheimer, "Inside AppleTalk, Second Edition", Addison-Wesley Publishing Company, Inc., May 1990.

Acknowledgments ๐Ÿซถ

Some of the text in this document is taken from previous documents produced by the Point-to-Point Protocol Working Group of the Internet Engineering Task Force (IETF).

This document is derivative of drafts written by the following people. Many thanks for their work, and for taking an initial stab at the protocol:

Steve Senum (sjs@network.com), Network Systems Corporation
Jim Muchow (muchow@anubis.network.com), Network Systems Corporation
Frank Slaughter (fgs@Shiva.COM), Shiva Corporation

Security Considerations ๐Ÿ’€

Security issues are not discussed in this memo. ๐Ÿ™ˆ bestie, this is the part where the whole doc just shrugs at security, so keep that in mind as you build with it ๐Ÿ˜ญ

Chair's Address ๐ŸŽ€

The working groups can be contacted via the current chairs:

Brian Lloyd
Lloyd & Associates
3420 Sudbury Road
Cameron Park, California 95682

Phone: (916) 676-1147
EMail: brian@lloyd.com


John Veizades
Apple Computer, Inc.
20525 Mariani Avenue
Cupertino, CA 95014

Phone: (408) 996-1010
EMail: veizades@apple.com

Author's Address ๐Ÿงš

Questions about this memo can also be directed to:

Brad Parker
Cayman Systems, Inc.
26 Landsdowne Street
Cambridge, Ma 02139

EMail: brad@cayman.com
๐Ÿ“ฆ where this page comes from