1 /*-
2  * Copyright (c) 1982, 1986, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  * Copyright (c) 1995 Matt Thomas (thomas@lkg.dec.com)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *	This product includes software developed by the University of
18  *	California, Berkeley and its contributors.
19  * 4. Neither the name of the University nor the names of its contributors
20  *    may be used to endorse or promote products derived from this software
21  *    without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGE.
34  *
35  *	@(#)if_fddi.h	8.1 (Berkeley) 6/10/93
36  * $FreeBSD: stable/10/sys/net/fddi.h 194581 2009-06-21 10:29:31Z rdivacky $
37  */
38 
39 #ifndef _NETINET_IF_FDDI_H_
40 #define _NETINET_IF_FDDI_H_
41 
42 #define	FDDIIPMTU		4352
43 #define	FDDIMTU			4470
44 #define	FDDIMIN			3
45 
46 #define	FDDIFC_C		0x80	/* 0b10000000 */
47 #define	FDDIFC_L		0x40	/* 0b01000000 */
48 #define	FDDIFC_F		0x30	/* 0b00110000 */
49 #define	FDDIFC_Z		0x0F	/* 0b00001111 */
50 #define	FDDIFC_CLFF		0xF0	/* Class/Length/Format bits */
51 #define	FDDIFC_ZZZZ		0x0F	/* Control bits */
52 
53 /*
54  * FDDI Frame Control values. (48-bit addressing only).
55  */
56 #define	FDDIFC_VOID		0x40	/* Void frame */
57 #define	FDDIFC_NRT		0x80	/* Nonrestricted token */
58 #define	FDDIFC_RT		0xc0	/* Restricted token */
59 #define	FDDIFC_MAC_BEACON	0xc2	/* MAC Beacon frame */
60 #define	FDDIFC_MAC_CLAIM	0xc3	/* MAC Claim frame */
61 #define	FDDIFC_LLC_ASYNC	0x50
62 #define	FDDIFC_LLC_PRIO0	0
63 #define	FDDIFC_LLC_PRIO1	1
64 #define	FDDIFC_LLC_PRIO2	2
65 #define	FDDIFC_LLC_PRIO3	3
66 #define	FDDIFC_LLC_PRIO4	4
67 #define	FDDIFC_LLC_PRIO5	5
68 #define	FDDIFC_LLC_PRIO6	6
69 #define	FDDIFC_LLC_PRIO7	7
70 #define	FDDIFC_LLC_SYNC		0xd0
71 #define	FDDIFC_IMP_ASYNC	0x60	/* Implementor Async. */
72 #define	FDDIFC_IMP_SYNC		0xe0	/* Implementor Synch. */
73 #define	FDDIFC_SMT		0x40
74 #define	FDDIFC_SMT_INFO		0x41	/* SMT Info */
75 #define	FDDIFC_SMT_NSA		0x4F	/* SMT Next station adrs */
76 #define	FDDIFC_MAC		0xc0	/* MAC frame */
77 
78 #define	FDDI_ADDR_LEN		6
79 #define	FDDI_HDR_LEN		(sizeof(struct fddi_header))
80 
81 /*
82  * Structure of an 100Mb/s FDDI header.
83  */
84 struct fddi_header {
85 	u_char  fddi_fc;
86 	u_char  fddi_dhost[FDDI_ADDR_LEN];
87 	u_char  fddi_shost[FDDI_ADDR_LEN];
88 };
89 
90 #if defined(_KERNEL)
91 #define	fddi_ipmulticast_min	ether_ipmulticast_min
92 #define	fddi_ipmulticast_max	ether_ipmulticast_max
93 #define	fddi_addmulti		ether_addmulti
94 #define	fddi_delmulti		ether_delmulti
95 #define	fddi_sprintf		ether_sprintf
96 
97 #define	FDDI_BPF_UNSUPPORTED	0
98 #define	FDDI_BPF_SUPPORTED	1
99 
100 void	fddi_ifattach(struct ifnet *, const u_int8_t *, int);
101 void	fddi_ifdetach(struct ifnet *, int);
102 int	fddi_ioctl(struct ifnet *, u_long, caddr_t);
103 
104 #endif	/* _KERNEL */
105 #endif	/* _NET_FDDI_H_ */
106