1 #ifndef _sw_interface_h
2 #define _sw_interface_h
3 
4 /*
5  * Copyright 2003, 2004 Porchdog Software. All rights reserved.
6  *
7  *	Redistribution and use in source and binary forms, with or without modification,
8  *	are permitted provided that the following conditions are met:
9  *
10  *		1. Redistributions of source code must retain the above copyright notice,
11  *		   this list of conditions and the following disclaimer.
12  *		2. Redistributions in binary form must reproduce the above copyright notice,
13  *		   this list of conditions and the following disclaimer in the documentation
14  *		   and/or other materials provided with the distribution.
15  *
16  *	THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY
17  *	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  *	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  *	IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20  *	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21  *	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  *	OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24  *	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25  *	OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  *	The views and conclusions contained in the software and documentation are those
28  *	of the authors and should not be interpreted as representing official policies,
29  *	either expressed or implied, of Porchdog Software.
30  */
31 
32 #include <salt/address.h>
33 
34 struct											_sw_network_interface;
35 typedef struct _sw_network_interface * sw_network_interface;
36 
37 
38 typedef enum _sw_network_interface_state
39 {
40 	SW_NETWORK_INTERFACE_RUNNING		= 0x1,
41 } sw_network_interface_state;
42 
43 
44 typedef struct _sw_mac_address
45 {
46 	sw_uint8	m_id[6];
47 } sw_mac_address;
48 
49 
50 sw_result HOWL_API
51 sw_network_interfaces(
52 				sw_uint32					*	count,
53 				sw_network_interface	**	netifs);
54 
55 
56 sw_result HOWL_API
57 sw_network_interfaces_fina(
58 				sw_uint32						count,
59 				sw_network_interface	*	netifs);
60 
61 
62 sw_result HOWL_API
63 sw_network_interface_fina(
64 				sw_network_interface		netif);
65 
66 
67 sw_result  HOWL_API
68 sw_network_interface_by_name(
69 				sw_string					name,
70 				sw_network_interface	*	netif);
71 
72 
73 sw_result HOWL_API
74 sw_network_interface_name(
75 				sw_network_interface		netif,
76 				sw_string					name,
77 				sw_uint32						len);
78 
79 
80 sw_result HOWL_API
81 sw_network_interface_mac_address(
82 				sw_network_interface		netif,
83 				sw_mac_address			*	addr);
84 
85 
86 sw_result HOWL_API
87 sw_network_interface_ipv4_address(
88 				sw_network_interface		netif,
89 				sw_ipv4_address		*	addr);
90 
91 
92 sw_result HOWL_API
93 sw_network_interface_set_ipv4_address(
94 				sw_network_interface		netif,
95 				sw_ipv4_address			addr);
96 
97 
98 sw_result HOWL_API
99 sw_network_interface_index(
100 				sw_network_interface		netif,
101 				sw_uint32					*	index);
102 
103 
104 sw_result HOWL_API
105 sw_network_interface_linked(
106 				sw_network_interface		netif,
107 				sw_bool					*	linked);
108 
109 
110 sw_result HOWL_API
111 sw_network_interface_up(
112 				sw_network_interface		netif);
113 
114 
115 #endif
116