darwin-xnu/bsd/netat/ddp.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
   3 *
   4 * @APPLE_LICENSE_HEADER_START@
   5 * 
   6 * The contents of this file constitute Original Code as defined in and
   7 * are subject to the Apple Public Source License Version 1.1 (the
   8 * "License").  You may not use this file except in compliance with the
   9 * License.  Please obtain a copy of the License at
  10 * http://www.apple.com/publicsource and read it before using this file.
  11 * 
  12 * This Original Code and all software distributed under the License are
  13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17 * License for the specific language governing rights and limitations
  18 * under the License.
  19 * 
  20 * @APPLE_LICENSE_HEADER_END@
  21 */
  22/*
  23 *
  24 * ORIGINS: 82
  25 *
  26 * (C) COPYRIGHT Apple Computer, Inc. 1992-1996
  27 * All Rights Reserved
  28 *
  29 */                                                                   
  30
  31#ifndef _NETAT_DDP_H_
  32#define _NETAT_DDP_H_
  33#include <sys/appleapiopts.h>
  34
  35#ifdef __APPLE_API_OBSOLETE
  36
  37/* Header and data sizes */
  38
  39#define  DDP_HDR_SIZE                 5  /* DDP (short) header size */
  40#define  DDP_X_HDR_SIZE              13  /* DDP extended header size */
  41#define  DDP_DATA_SIZE              586  /* Maximum DataGram data size */
  42#define  DDP_DATAGRAM_SIZE          599  /* Maximum DataGram size */
  43
  44/* DDP socket definitions */
  45
  46#define  DDP_SOCKET_1st_RESERVED      1  /* First in reserved range */
  47#define  DDP_SOCKET_1st_EXPERIMENTAL 64  /* First in experimental range */
  48#define  DDP_SOCKET_1st_DYNAMIC     128  /* First in dynamic range */
  49#define  DDP_SOCKET_LAST            253  /* Last socket in any range */
  50
  51/* DDP type used to replace "0" on packets sent out, for compatibility
  52   with Open Transport */
  53#define DEFAULT_OT_DDPTYPE 11
  54
  55/* DDP well-known sockets */
  56
  57#define RTMP_SOCKET     1       /* RTMP socket number   */
  58#define NBP_SOCKET      2       /* NIS socket number */
  59#define EP_SOCKET       4       /* EP socket number */
  60#define ZIP_SOCKET      6       /* ZIP socket number */
  61
  62/* DDP extended header packet format */
  63
  64typedef struct {
  65        unsigned   unused:2,
  66                   hopcount:4,
  67                   length:10;           /* Datagram length */
  68        ua_short   checksum;            /* Checksum */
  69        at_net     dst_net;             /* Destination network number */
  70        at_net     src_net;             /* Source network number */
  71        at_node    dst_node;            /* Destination node ID */
  72        at_node    src_node;            /* Source node ID */
  73        at_socket  dst_socket;          /* Destination socket number */
  74        at_socket  src_socket;          /* Source socket number */
  75        u_char     type;                /* Protocol type */
  76        char       data[DDP_DATA_SIZE];
  77} at_ddp_t;
  78
  79#define DDPLEN_ASSIGN(ddp, len)         ddp->length = len
  80#define DDPLEN_VALUE(ddp)               ddp->length
  81
  82/* DDP module statistics and configuration */
  83
  84typedef struct at_ddp_stats {
  85        /* General */
  86
  87        /* Receive stats */
  88        u_int   rcv_bytes;
  89        u_int   rcv_packets;
  90        u_int   rcv_bad_length;
  91        u_int   rcv_unreg_socket;
  92        u_int   rcv_bad_socket;
  93        u_int   rcv_bad_checksum;
  94        u_int   rcv_dropped_nobuf;
  95
  96        /* Transmit stats */
  97        u_int   xmit_bytes;
  98        u_int   xmit_packets;
  99        u_int   xmit_BRT_used;
 100        u_int   xmit_bad_length;
 101        u_int   xmit_bad_addr;
 102        u_int   xmit_dropped_nobuf;
 103} at_ddp_stats_t;
 104
 105
 106/* DDP streams module ioctls */
 107
 108#define AT_MID_DDP      203
 109
 110#define DDP_IOC_MYIOCTL(i)      ((i>>8) == AT_MID_DDP)
 111#define DDP_IOC_GET_CFG         ((AT_MID_DDP<<8) | 1)
 112
 113#ifdef NOT_USED
 114#define DDP_IOC_BIND_SOCK       ((AT_MID_DDP<<8) | 2)
 115#define DDP_IOC_GET_STATS       ((AT_MID_DDP<<8) | 3)
 116#define DDP_IOC_LSTATUS_TABLE   ((AT_MID_DDP<<8) | 4)
 117#define DDP_IOC_ULSTATUS_TABLE  ((AT_MID_DDP<<8) | 5)
 118#define DDP_IOC_RSTATUS_TABLE   ((AT_MID_DDP<<8) | 6)
 119#define DDP_IOC_SET_WROFF       ((AT_MID_DDP<<8) | 7 )
 120#define DDP_IOC_SET_OPTS        ((AT_MID_DDP<<8) | 8 )
 121#define DDP_IOC_GET_OPTS        ((AT_MID_DDP<<8) | 9 )
 122#define DDP_IOC_GET_SOCK        ((AT_MID_DDP<<8) | 10)
 123#define DDP_IOC_GET_PEER        ((AT_MID_DDP<<8) | 11)
 124#define DDP_IOC_SET_PEER        ((AT_MID_DDP<<8) | 12)
 125#define DDP_IOC_SET_PROTO       ((AT_MID_DDP<<8) | 13)
 126#endif
 127
 128#ifdef KERNEL_PRIVATE
 129
 130#define DDP_MIN_NETWORK         0x0001
 131#define DDP_MAX_NETWORK         0xfffe
 132#define DDP_STARTUP_LOW         0xff00
 133#define DDP_STARTUP_HIGH        DDP_MAX_NETWORK
 134
 135typedef struct {
 136        void **inputQ;
 137        int  *pidM;
 138        char  **socketM;
 139        char  *dbgBits;
 140} proto_reg_t;
 141
 142/* *** note: this counts on the src address always being that of the
 143       home port 
 144   *** */
 145#define FROM_US(ddp)    ((NET_VALUE(ddp->src_net) ==\
 146        ifID_home->ifThisNode.s_net) && \
 147        ifID_home->ifThisNode.s_node == ddp->src_node)
 148
 149#define RT_LOOKUP_OKAY(ifID, ddp) \
 150     ((ROUTING_MODE && ifID->ifRoutingState==PORT_ONLINE) || \
 151      (MULTIHOME_MODE && FROM_US(ddp)))
 152
 153#ifdef NOT_YET
 154/* from sys_glue.c */
 155int ddp_adjmsg(gbuf_t *m, int len);
 156gbuf_t *ddp_growmsg(gbuf_t  *mp, int len);
 157             
 158/* from ddp.c */
 159int ddp_add_if(at_ifaddr_t *ifID);
 160int ddp_rem_if(at_ifaddr_t *ifID);
 161int ddp_bind_socket(ddp_socket_t *socketp);
 162int ddp_close_socket(ddp_socket_t *socketp);
 163int ddp_output(gbuf_t **mp, at_socket src_socket, int src_addr_included);
 164void ddp_input(gbuf_t   *mp, at_ifaddr_t *ifID);
 165int ddp_router_output(
 166     gbuf_t  *mp,
 167     at_ifaddr_t *ifID,
 168     int addr_type,
 169     at_net_al router_net,
 170     at_node router_node,
 171     etalk_addr_t *enet_addr);
 172
 173/* from ddp_proto.c */
 174int ddp_close(gref_t *gref);
 175void ddp_putmsg(gref_t *gref, gbuf_t *mp);
 176gbuf_t *ddp_compress_msg(gbuf_t *mp);
 177void ddp_stop(gbuf_t *mioc, gref_t *gref);
 178             
 179/* in ddp_lap.c */
 180void ddp_bit_reverse(unsigned char *);
 181
 182#endif /* NOT_YET */
 183
 184/* in ddp_lap.c */
 185int ddp_shutdown(int);
 186
 187#endif /* KERNEL_PRIVATE */
 188#endif /* __APPLE_API_OBSOLETE */
 189#endif /* _NETAT_DDP_H_ */
 190
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.