RCS_ID_C="$Id: sana2tags.c,v 1.13 1993/07/19 14:04:42 jraja Exp $";
/*
 * Copyright (c) 1993 AmiTCP/IP Group, <amitcp-group@hut.fi>
 *                    Helsinki University of Technology, Finland.
 *                    All rights reserved.
 *
 * sana2tags.c - Parameters for sana_softc 
 *
 * Created      : Sat Feb 13 06:43:18 1993 ppessi
 * Last modified: Mon Jul 19 17:04:01 1993 jraja
 *
 * HISTORY
 * $Log: sana2tags.c,v $
 * Revision 1.13  1993/07/19  14:04:42  jraja
 * Added tags for the Arcnet.
 *
 * Revision 1.12  1993/06/04  11:16:15  jraja
 * Fixes for first public release.
 *
 * Revision 1.11  1993/05/16  21:09:43  ppessi
 * RCS version changed.
 *
 * Revision 1.10  1993/05/05  16:10:42  puhuri
 * Fixes for final demo.
 *
 * Revision 1.9  93/04/19  03:09:01  03:09:01  ppessi (Pekka Pessi)
 * Changed sana_params.? to sana2tags.?
 * 
 * Revision 1.8  93/04/19  02:20:46  02:20:46  ppessi (Pekka Pessi)
 * Added IFS2_ARPHRD and IFS2_RESET tags.
 * 
 * Revision 1.7  93/04/05  17:46:32  17:46:32  jraja (Jarno Tapio Rajahalme)
 * Changed spl storage variables to spl_t.
 * Changed every .c file to use conf.h.
 * 
 * Revision 1.6  93/03/19  14:30:54  14:30:54  too (Tomi Ollila)
 * Code changes at night 17-18 March 1993
 * 
 * Revision 1.5  93/03/05  19:51:23  19:51:23  jraja (Jarno Tapio Rajahalme)
 * Fixed includes (again).
 * 
 * Revision 1.4  93/03/05  03:13:05  03:13:05  ppessi (Pekka Pessi)
 * Compiles with SASC. Initial test version
 * 
 * Revision 1.3  93/02/28  22:54:24  22:54:24  ppessi (Pekka Pessi)
 * Gagged GCC warnings..
 * 
 * Revision 1.2  93/02/28  21:47:12  21:47:12  ppessi (Pekka Pessi)
 * Revised version; added CSLIP and PPP.
 */

#include <conf.h>

#include <sys/param.h>
#include <sys/socket.h>
#include <sys/socketvar.h>

#include <net/if.h>

#if NS
#include <netns/ns.h>
#include <netns/ns_if.h>
#endif

#include <devices/sana2.h>
#include <utility/tagitem.h>
#include <net/sana2tags.h>
#include <net/if_arp.h>

struct TagItem ethertags[] =
{
  IFS2_TOTAL, 20,
  IFS2_RAWNO, 4,		/* for raw packets */
#if	INET			
  IFS2_TOTAL, 20,
  IFS2_IPNO, 16,		/* minimum # of pending reads for IP */
  IFS2_IPTYPE, ETHERTYPE_IP,
  IFS2_ARPNO, 4,		/* for ARP */
  IFS2_ARPTYPE, ETHERTYPE_ARP,
  IFS2_ARPHRD, htons(ARPHRD_ETHER),
#endif /* INET */
#if	ISO
  IFS2_TOTAL, 12,
  IFS2_ISONO, 12,		/* for ISO */
  IFS2_ISOTYPE, 0,		/* ISO protocols use IEEE802 */
#endif /* ISO */
#if	NS
  IFS2_TOTAL, 12,
  IFS2_NSNO, 12,		/* for NS */
  IFS2_NSTYPE, ETHERTYPE_NS, 
#endif /* NS */
  TAG_END,
};

struct TagItem arcnettags[] =
{
  IFS2_TOTAL, 20,
  IFS2_RAWNO, 4,		/* for raw packets */
#if	INET			
  IFS2_TOTAL, 20,
  IFS2_IPNO, 16,		/* minimum # of pending reads for IP */
  IFS2_IPTYPE, ARCOTYPE_IP,
  IFS2_ARPNO, 4,		/* for ARP */
  IFS2_ARPTYPE, ARCOTYPE_ARP,
  IFS2_ARPHRD, htons(ARPHRD_ARCNET),
#endif /* INET */
#if	ISO
  IFS2_TOTAL, 12,
  IFS2_ISONO, 12,		/* for ISO */
  IFS2_ISOTYPE, 0,		/* ISO protocols use IEEE802 */
#endif /* ISO */
#if	NS
  IFS2_TOTAL, 12,
  IFS2_NSNO, 12,		/* for NS */
  IFS2_NSTYPE, ARCOTYPE_NS, 
#endif /* NS */
  TAG_END,
};

struct TagItem sliptags[]=
{
  IFS2_TOTAL,   8,
#if	INET			
  IFS2_IPNO,    4,		/* minimum # of pending reads for IP */
  IFS2_IPTYPE,  SLIPTYPE_IP,
  IFS2_TOTAL,   4,
#endif /* INET */
#if	ISO
#endif /* ISO */
#if	CCITT
#endif /* CCITT */
#if	NS
#endif /* NS */
  TAG_END,
};

struct TagItem defaulttags[]=
{
  IFS2_TOTAL,    4,
#if	INET			
  IFS2_IPNO,     4,		/* minimum # of pending reads for IP */
  IFS2_IPTYPE,   ETHERTYPE_IP,
  IFS2_ARPNO,    0,		/* for ARP */
  IFS2_ARPTYPE,  ETHERTYPE_ARP,
  IFS2_TOTAL,    4,
#endif /* INET */
#if	ISO
  IFS2_TOTAL,    4,
  IFS2_ISONO,    4,		/* for ISO */
  IFS2_ISOTYPE,  0,
#endif /* ISO */
#if	CCITT
  IFS2_TOTAL,     4,
  IFS2_CCITTNO,   4,		/* for CCITT */
  IFS2_CCITTTYPE, 0,
#endif /* CCITT */
#if	NS
  IFS2_TOTAL,   4,
  IFS2_NSNO,    4,		/* for NS */
  IFS2_NSTYPE,  ETHERTYPE_NS,			
#endif /* NS */
  IFS2_RAWNO,   0,		/* for raw packets */
  TAG_END,
};

struct wiretype_parameters wiretype_table[] = 
{
  { S2WireType_Ethernet, IFF_NOTRAILERS|IFF_BROADCAST|IFF_SIMPLEX, ethertags },
  { S2WireType_Arcnet, IFF_NOTRAILERS|IFF_BROADCAST|IFF_SIMPLEX, arcnettags },
  { S2WireType_SLIP, IFF_NOTRAILERS|IFF_POINTOPOINT|IFF_NOARP, sliptags }, 
  { S2WireType_CSLIP, IFF_NOTRAILERS|IFF_POINTOPOINT|IFF_NOARP, sliptags }, 
  { S2WireType_PPP, IFF_NOTRAILERS|IFF_POINTOPOINT|IFF_NOARP, sliptags }, 
  /* These are defaults */
  { 0, IFF_NOTRAILERS|IFF_POINTOPOINT|IFF_NOARP, defaulttags }
};

