|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: *
27: * ORIGINS: 82
28: *
29: * APPLE CONFIDENTIAL
30: * (C) COPYRIGHT Apple Computer, Inc. 1992-1996
31: * All Rights Reserved
32: *
33: */
34:
35: #ifndef __DDP__
36: #define __DDP__
37:
38: /* Header and data sizes */
39:
40: #define DDP_HDR_SIZE 5 /* DDP (short) header size */
41: #define DDP_X_HDR_SIZE 13 /* DDP extended header size */
42: #define DDP_DATA_SIZE 586 /* Maximum DataGram data size */
43: #define DDP_DATAGRAM_SIZE 599 /* Maximum DataGram size */
44:
45:
46: /* DDP socket definitions */
47:
48: #define DDP_SOCKET_1st_RESERVED 1 /* First in reserved range */
49: #define DDP_SOCKET_1st_EXPERIMENTAL 64 /* First in experimental range */
50: #define DDP_SOCKET_1st_DYNAMIC 128 /* First in dynamic range */
51: #define DDP_SOCKET_LAST 253 /* Last socket in any range */
52:
53:
54: /* DDP extended header packet format */
55:
56: typedef struct {
57: unsigned unused:2,
58: hopcount:4,
59: length:10; /* Datagram length */
60: ua_short checksum; /* Checksum */
61: at_net dst_net; /* Destination network number */
62: at_net src_net; /* Source network number */
63: at_node dst_node; /* Destination node ID */
64: at_node src_node; /* Source node ID */
65: at_socket dst_socket; /* Destination socket number */
66: at_socket src_socket; /* Source socket number */
67: u_char type; /* Protocol type */
68: char data[DDP_DATA_SIZE];
69: } at_ddp_t;
70:
71:
72: #define DDPLEN_ASSIGN(ddp, len) ddp->length = len
73: #define DDPLEN_VALUE(ddp) ddp->length
74:
75:
76: /* DDP module statistics and configuration */
77:
78: typedef struct {
79: /* General */
80:
81: /* Receive stats */
82: u_int rcv_bytes;
83: u_int rcv_packets;
84: u_int rcv_bad_length;
85: u_int rcv_unreg_socket;
86: u_int rcv_bad_socket;
87: u_int rcv_bad_checksum;
88: u_int rcv_dropped_nobuf;
89:
90: /* Transmit stats */
91: u_int xmit_bytes;
92: u_int xmit_packets;
93: u_int xmit_BRT_used;
94: u_int xmit_bad_length;
95: u_int xmit_bad_addr;
96: u_int xmit_dropped_nobuf;
97: } at_ddp_stats_t;
98:
99: typedef struct {
100: u_short network_up;
101: u_short filler;
102: int flags; /* to indicate what type
103: * of network interface the
104: * default net is (ethertalk/
105: * localtalk?)
106: */
107: at_inet_t node_addr;
108: at_inet_t router_addr;
109: int netlo;
110: int nethi;
111: } at_ddp_cfg_t;
112:
113: union at_ddpopt {
114: struct {
115: unsigned char checksum; /* do checksum */
116: unsigned char type; /* ddp type */
117: } ct;
118: };
119:
120: union at_adspopt {
121: struct {
122: u_short sendBlocking; /* quantum for data packets */
123: u_char sendTimer; /* send timer in 10-tick intervals */
124: u_char rtmtTimer; /* retransmit timer in 10-tick intervals */
125: u_char badSeqMax; /* threshold for sending retransmit advice */
126: u_char useCheckSum; /* use ddp packet checksum */
127: u_short filler;
128: int newPID; /* ### Temp for backward compatibility 02/11/94 */
129: } c;
130: };
131:
132: #endif /* __DDP__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.