home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / internet / amitcp3.0b / src.lha / src / amitcp / net / if_sana.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-08  |  5.3 KB  |  178 lines

  1. /* $Id: if_sana.h,v 3.1 1994/02/03 03:50:38 ppessi Exp $
  2.  *
  3.  * Copyright (c) 1993 AmiTCP/IP Group, <amitcp-group@hut.fi>,
  4.  *                    Helsinki University of Technology, Finland.
  5.  *                    All rights reserved.
  6.  *
  7.  * if_sana.h --- Sana-II Interface 
  8.  *
  9.  * Created      : Thu Feb 11 15:57:16 1993 ppessi
  10.  * Last modified: Tue Feb  1 18:25:02 1994 ppessi
  11.  *
  12.  * HISTORY
  13.  * $Log: if_sana.h,v $
  14.  * Revision 3.1  1994/02/03  03:50:38  ppessi
  15.  * Initially tested version
  16.  *
  17.  * Revision 1.15  1993/12/21  22:11:33  jraja
  18.  * Added ss_cflags field to softsana struct.
  19.  * Defined configuration flags. (ppessi)
  20.  *
  21.  * Revision 1.14  1993/11/06  23:39:15  ppessi
  22.  * Added ss_eventsent to record sent event requests.
  23.  *
  24.  * Revision 1.13  1993/08/04  22:14:27  ppessi
  25.  * Restored sockaddr_sana2
  26.  *
  27.  * Revision 1.12  1993/08/01  19:31:48  ppessi
  28.  * Defined prefix "networks/" for SANA-II device names.
  29.  * Moved sockaddr_sana2 structure definition to public header net/if.h
  30.  *
  31.  * Revision 1.11  1993/06/04  11:16:15  jraja
  32.  * Fixes for first public release.
  33.  *
  34.  * Revision 1.10  1993/05/16  21:09:43  ppessi
  35.  * RCS version changed.
  36.  *
  37.  * Revision 1.9  1993/05/14  15:54:47  ppessi
  38.  * Minor prototype fixes.
  39.  *
  40.  * Revision 1.8  93/05/04  10:54:02  10:54:02  ppessi (Pekka Pessi)
  41.  * Sanitized soft_sanac structure
  42.  * 
  43.  * Revision 1.7  93/04/19  02:12:36  02:12:36  ppessi (Pekka Pessi)
  44.  * Minor fixes for ARP support.
  45.  * Now also supports sockaddr_sana2 interface (AF_UNSPEC).
  46.  * 
  47.  * Revision 1.6  93/04/11  22:15:54  22:15:54  jraja (Jarno Tapio Rajahalme)
  48.  * Changed first argument of the sana_output back to ifnet *.
  49.  * 
  50.  * Revision 1.5  93/03/10  21:15:10  21:15:10  ppessi (Pekka Pessi)
  51.  * Includes arp prototypes
  52.  * 
  53.  * Revision 1.4  93/03/05  03:12:25  03:12:25  ppessi (Pekka Pessi)
  54.  * Compiles with SASC. Initial test version
  55.  * 
  56.  * Revision 1.3  93/02/28  22:34:12  22:34:12  ppessi (Pekka Pessi)
  57.  * Revised with jraja. 
  58.  * 
  59.  */
  60.  
  61. #ifndef IF_SANA_H
  62. #define IF_SANA_H
  63.  
  64. #ifndef DEVICES_SANA_H
  65. #include <devices/sana2.h>
  66. #endif
  67.  
  68. #ifndef IF_ARP_H
  69. #include <net/if_arp.h>
  70. #endif
  71.  
  72. /* A prefix added to the SANA-II device name if needed */
  73. #define NAME_PREFIX "networks/"
  74.  
  75. /*
  76.  * Our Special SANA-II request
  77.  */
  78. struct IOIPReq {
  79.   struct IOSana2Req  ioip_s2;    
  80. #define ioip_ReplyPort  ioip_s2.ios2_Req.io_Message.mn_ReplyPort
  81. #define ioip_Command ioip_s2.ios2_Req.io_Command
  82. #define ioip_Error   ioip_s2.ios2_Req.io_Error
  83.   struct sana_softc *ioip_if;          /* pointer to network interface */
  84.                      /* request dispatch routine */
  85.   void             (*ioip_dispatch)(struct sana_softc *, struct IOIPReq *); 
  86.   struct mbuf       *ioip_reserved;   /* reserved for packet */
  87.   struct mbuf       *ioip_packet;     /* packet */
  88.   struct IOIPReq    *ioip_next;          /* allocation queue */
  89. };
  90.  
  91. /*
  92.  * A socket address for a generic SANA-II host
  93.  */
  94. #define MAXADDRSANA 16
  95.  
  96. struct sockaddr_sana2 {
  97.   u_char  ss2_len;
  98.   u_char  ss2_family;
  99.   u_long  ss2_type;
  100.   u_char  ss2_host[MAXADDRSANA];
  101. };
  102.  
  103. /*
  104.  * Interface descriptor
  105.  *    NOTE: most of the code outside will believe this to be simply
  106.  *    a "struct ifnet". The other information is, on the other hand,
  107.  *    our own business.
  108.  */
  109. struct sana_softc {
  110.   struct ifnet    ss_if;          /* network-visible interface */
  111.   struct in_addr  ss_ipaddr;          /* copy of ip address */
  112.   ULONG           ss_hwtype;          /* wiretype */
  113.   UBYTE           ss_hwaddr[MAXADDRSANA]; /* General hardware address */
  114.   struct Device  *ss_dev;          /* pointer to device */
  115.   struct Unit    *ss_unit;          /* pointer to unit */
  116.   VOID           *ss_bufmgnt;          /* magic cookie for buffer management */
  117.   UWORD          ss_reqno;          /* # of requests to allocate */
  118.   UWORD           ss_cflags;          /* configuration flags */
  119.   struct IOIPReq *ss_reqs;          /* allocated requests */
  120.   struct MinList  ss_freereq;          /* free requests */
  121. #if    INET
  122.   struct {
  123.     UWORD reqno;          /* for listening ip packets */
  124.     UWORD sent;
  125.     ULONG type;
  126.   } ss_ip;
  127.   struct {            /* for ARP */
  128.     UWORD reqno;          
  129.     UWORD sent;
  130.     ULONG type;            /* ARP packet type */
  131.     ULONG hrd;            /* ARP header type */
  132.     struct arptable *table;    /* ARP/IP table */
  133.   } ss_arp;
  134. #endif    /* INET */
  135. #if    ISO
  136.   UWORD           ss_isoreqno;          /* for iso */
  137.   UWORD           ss_isosent;
  138.   ULONG           ss_isotype;
  139. #endif    /* ISO */
  140. #if    CCITT
  141.   UWORD           ss_ccittreqno;      /* for ccitt */
  142.   UWORD           ss_ccittsent;
  143.   ULONG           ss_ccitttype;
  144. #endif    /* CCITT */
  145. #if    NS
  146.   UWORD           ss_nsreqno;          /* for ns */
  147.   UWORD           ss_nssent;    
  148.   ULONG           ss_nstype;
  149. #endif    /* NS */
  150.   UWORD           ss_rawreqno;          /* for raw packets */
  151.   UWORD           ss_rawsent;
  152.   UWORD           ss_eventsent;          /* sent event requests */
  153.   UWORD           ss_maxmtu;          /* limit given by device */
  154.   UBYTE          *ss_execname;
  155.   ULONG           ss_execunit;
  156.   UBYTE           ss_name[IFNAMSIZ];
  157.   struct sana_softc *ss_next;
  158. };
  159.  
  160. /*
  161.  * Configuration flags
  162.  */
  163. #define SSF_TRACK (1<<0)          /* Should we track packets? */
  164. #define SSB_TRACK 0
  165.  
  166. /* Default configuration flags */
  167. #define SS_CFLAGS (SSF_TRACK)
  168.  
  169. /*
  170.  * Global functions defined in if_sana.c
  171.  */
  172. int sana_output(struct ifnet *ifp, struct mbuf *m0,
  173.             struct sockaddr *dst, struct rtentry *rt);
  174. int sana_ioctl(register struct ifnet *ifp, int cmd, caddr_t data);
  175. /* queue for sana network interfaces */
  176. extern struct sana_softc *ssq;
  177. #endif /* of IF_SANA_H */
  178.