149268Sbostic /*- 2*63222Sbostic * Copyright (c) 1988, 1991, 1993 3*63222Sbostic * The Regents of the University of California. All rights reserved. 449268Sbostic * 549268Sbostic * %sccs.include.redist.c% 649268Sbostic * 7*63222Sbostic * @(#)iso_var.h 8.1 (Berkeley) 06/10/93 849268Sbostic */ 949268Sbostic 1036394Ssklower /*********************************************************** 1136394Ssklower Copyright IBM Corporation 1987 1236394Ssklower 1336394Ssklower All Rights Reserved 1436394Ssklower 1536394Ssklower Permission to use, copy, modify, and distribute this software and its 1636394Ssklower documentation for any purpose and without fee is hereby granted, 1736394Ssklower provided that the above copyright notice appear in all copies and that 1836394Ssklower both that copyright notice and this permission notice appear in 1936394Ssklower supporting documentation, and that the name of IBM not be 2036394Ssklower used in advertising or publicity pertaining to distribution of the 2136394Ssklower software without specific, written prior permission. 2236394Ssklower 2336394Ssklower IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 2436394Ssklower ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 2536394Ssklower IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 2636394Ssklower ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 2736394Ssklower WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 2836394Ssklower ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 2936394Ssklower SOFTWARE. 3036394Ssklower 3136394Ssklower ******************************************************************/ 3236394Ssklower 3336394Ssklower /* 3436394Ssklower * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison 3536394Ssklower */ 3637469Ssklower /* $Header: iso_var.h,v 4.2 88/06/29 15:00:08 hagens Exp $ 3737469Ssklower * $Source: /usr/argo/sys/netiso/RCS/iso_var.h,v $ 3837469Ssklower */ 3936394Ssklower 4036394Ssklower /* 4136394Ssklower * Interface address, iso version. One of these structures is 4236394Ssklower * allocated for each interface with an osi address. The ifaddr 4336394Ssklower * structure conatins the protocol-independent part 4436394Ssklower * of the structure, and is assumed to be first. 4536394Ssklower */ 4636394Ssklower struct iso_ifaddr { 4736394Ssklower struct ifaddr ia_ifa; /* protocol-independent info */ 4837469Ssklower #define ia_ifp ia_ifa.ifa_ifp 4940782Ssklower #define ia_flags ia_ifa.ifa_flags 5037469Ssklower int ia_snpaoffset; 5136394Ssklower struct iso_ifaddr *ia_next; /* next in list of iso addresses */ 5237469Ssklower struct sockaddr_iso ia_addr; /* reserve space for interface name */ 5337469Ssklower struct sockaddr_iso ia_dstaddr; /* reserve space for broadcast addr */ 5437469Ssklower #define ia_broadaddr ia_dstaddr 5537469Ssklower struct sockaddr_iso ia_sockmask; /* reserve space for general netmask */ 5636394Ssklower }; 5736394Ssklower 5837469Ssklower struct iso_aliasreq { 5937469Ssklower char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ 6037469Ssklower struct sockaddr_iso ifra_addr; 6137469Ssklower struct sockaddr_iso ifra_dstaddr; 6237469Ssklower struct sockaddr_iso ifra_mask; 6337469Ssklower int ifra_snpaoffset; 6437469Ssklower }; 6537469Ssklower 6637469Ssklower struct iso_ifreq { 6737469Ssklower char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ 6837469Ssklower struct sockaddr_iso ifr_Addr; 6937469Ssklower }; 7037469Ssklower 7136394Ssklower /* 7236394Ssklower * Given a pointer to an iso_ifaddr (ifaddr), 7336394Ssklower * return a pointer to the addr as a sockaddr_iso 7436394Ssklower */ 7537469Ssklower /* 7637469Ssklower #define IA_SIS(ia) ((struct sockaddr_iso *)(ia.ia_ifa->ifa_addr)) 7737469Ssklower * works if sockaddr_iso becomes variable sized. 7837469Ssklower */ 7937469Ssklower #define IA_SIS(ia) (&(((struct iso_ifaddr *)ia)->ia_addr)) 8036394Ssklower 8137469Ssklower #define SIOCDIFADDR_ISO _IOW('i',25, struct iso_ifreq) /* delete IF addr */ 8237469Ssklower #define SIOCAIFADDR_ISO _IOW('i',26, struct iso_aliasreq)/* add/chg IFalias */ 8337469Ssklower #define SIOCGIFADDR_ISO _IOWR('i',33, struct iso_ifreq) /* get ifnet address */ 8437469Ssklower #define SIOCGIFDSTADDR_ISO _IOWR('i',34, struct iso_ifreq) /* get dst address */ 8537469Ssklower #define SIOCGIFNETMASK_ISO _IOWR('i',37, struct iso_ifreq) /* get dst address */ 8636394Ssklower 8737469Ssklower /* 8837469Ssklower * This stuff should go in if.h or if_llc.h or someplace else, 8937469Ssklower * but for now . . . 9037469Ssklower */ 9137469Ssklower 9237469Ssklower struct llc_etherhdr { 9337469Ssklower char dst[6]; 9437469Ssklower char src[6]; 9537469Ssklower char len[2]; 9637469Ssklower char llc_dsap; 9737469Ssklower char llc_ssap; 9837469Ssklower char llc_ui_byte; 9937469Ssklower }; 10037469Ssklower 10137469Ssklower struct snpa_hdr { 10237469Ssklower struct ifnet *snh_ifp; 10337469Ssklower char snh_dhost[6]; 10437469Ssklower char snh_shost[6]; 10537469Ssklower short snh_flags; 10637469Ssklower }; 10736394Ssklower #ifdef KERNEL 10836394Ssklower struct iso_ifaddr *iso_ifaddr; /* linked list of iso address ifaces */ 10937469Ssklower struct iso_ifaddr *iso_localifa(); /* linked list of iso address ifaces */ 11036394Ssklower struct ifqueue clnlintrq; /* clnl packet input queue */ 11160359Sbostic #endif /* KERNEL */ 112