xref: /titanic_44/usr/src/lib/libdlpi/common/libdlpi.h (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate #ifndef _LIBDLPI_H
28*7c478bd9Sstevel@tonic-gate #define	_LIBDLPI_H
29*7c478bd9Sstevel@tonic-gate 
30*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate #include <sys/types.h>
33*7c478bd9Sstevel@tonic-gate #include <sys/dlpi.h>
34*7c478bd9Sstevel@tonic-gate #include <net/if.h>
35*7c478bd9Sstevel@tonic-gate 
36*7c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
37*7c478bd9Sstevel@tonic-gate extern "C" {
38*7c478bd9Sstevel@tonic-gate #endif
39*7c478bd9Sstevel@tonic-gate 
40*7c478bd9Sstevel@tonic-gate #define	MAXADDRLEN	64
41*7c478bd9Sstevel@tonic-gate #define	MAXSAPLEN	64
42*7c478bd9Sstevel@tonic-gate #define	MAX_MODS	9
43*7c478bd9Sstevel@tonic-gate 
44*7c478bd9Sstevel@tonic-gate typedef struct dlpi_if_attr {
45*7c478bd9Sstevel@tonic-gate 	char	ifname[LIFNAMSIZ];
46*7c478bd9Sstevel@tonic-gate 	int	style;
47*7c478bd9Sstevel@tonic-gate 	int	ppa;
48*7c478bd9Sstevel@tonic-gate 	int	mod_cnt;
49*7c478bd9Sstevel@tonic-gate 	int	mod_pushed;
50*7c478bd9Sstevel@tonic-gate 	boolean_t	style1_failed;
51*7c478bd9Sstevel@tonic-gate 	int	style1_fd;
52*7c478bd9Sstevel@tonic-gate 	char	devname[LIFNAMSIZ + 32]; /* added space for /dev path */
53*7c478bd9Sstevel@tonic-gate 	char	modlist[MAX_MODS][LIFNAMSIZ];
54*7c478bd9Sstevel@tonic-gate 	char	provider[LIFNAMSIZ];
55*7c478bd9Sstevel@tonic-gate } dlpi_if_attr_t;
56*7c478bd9Sstevel@tonic-gate 
57*7c478bd9Sstevel@tonic-gate extern const char	*dlpi_mac_type(uint_t);
58*7c478bd9Sstevel@tonic-gate 
59*7c478bd9Sstevel@tonic-gate extern int	dlpi_open(const char *);
60*7c478bd9Sstevel@tonic-gate extern int	dlpi_close(int);
61*7c478bd9Sstevel@tonic-gate extern int	dlpi_info(int, int, dl_info_ack_t *, union DL_qos_types *,
62*7c478bd9Sstevel@tonic-gate     union DL_qos_types *, uint8_t *, size_t *, uint8_t *, size_t *);
63*7c478bd9Sstevel@tonic-gate extern int	dlpi_attach(int, int, uint_t);
64*7c478bd9Sstevel@tonic-gate extern int	dlpi_detach(int, int);
65*7c478bd9Sstevel@tonic-gate extern int	dlpi_bind(int, int, uint_t, uint16_t, boolean_t, uint32_t *,
66*7c478bd9Sstevel@tonic-gate     uint32_t *, uint8_t *, size_t *);
67*7c478bd9Sstevel@tonic-gate extern int	dlpi_unbind(int, int);
68*7c478bd9Sstevel@tonic-gate extern int	dlpi_enabmulti(int, int, uint8_t *, size_t);
69*7c478bd9Sstevel@tonic-gate extern int	dlpi_disabmulti(int, int, uint8_t *, size_t);
70*7c478bd9Sstevel@tonic-gate extern int	dlpi_promiscon(int, int, uint_t);
71*7c478bd9Sstevel@tonic-gate extern int	dlpi_promiscoff(int, int, uint_t);
72*7c478bd9Sstevel@tonic-gate extern int	dlpi_phys_addr(int, int, uint_t, uint8_t *, size_t *);
73*7c478bd9Sstevel@tonic-gate extern int	dlpi_set_phys_addr(int, int, uint8_t *, size_t);
74*7c478bd9Sstevel@tonic-gate extern void	dlpi_passive(int, int);
75*7c478bd9Sstevel@tonic-gate 
76*7c478bd9Sstevel@tonic-gate /*
77*7c478bd9Sstevel@tonic-gate  * dlpi_if_open()
78*7c478bd9Sstevel@tonic-gate  *   Takes interface name in the following formats
79*7c478bd9Sstevel@tonic-gate  *   o Specific physical unit (ex. "bge0" or "ce0")
80*7c478bd9Sstevel@tonic-gate  *   o Tunnels (ex. "ip.tun0" or "ip6.tun0")
81*7c478bd9Sstevel@tonic-gate  */
82*7c478bd9Sstevel@tonic-gate extern int	dlpi_if_open(const char *, dlpi_if_attr_t *, boolean_t);
83*7c478bd9Sstevel@tonic-gate extern int	dlpi_if_parse(const char *, char *, int *);
84*7c478bd9Sstevel@tonic-gate 
85*7c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
86*7c478bd9Sstevel@tonic-gate }
87*7c478bd9Sstevel@tonic-gate #endif
88*7c478bd9Sstevel@tonic-gate 
89*7c478bd9Sstevel@tonic-gate #endif /* _LIBDLPI_H */
90