1/*
2 * Copyright (c) 1996, 1998-2005, 2007
3 *	Todd C. Miller <Todd.Miller@courtesan.com>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 *
17 * Sponsored in part by the Defense Advanced Research Projects
18 * Agency (DARPA) and Air Force Research Laboratory, Air Force
19 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
20 */
21
22#ifndef _SUDO_INTERFACES_H
23#define _SUDO_INTERFACES_H
24
25/*
26 * Union to hold either strucr in_addr or in6_add
27 */
28union sudo_in_addr_un {
29    struct in_addr ip4;
30#ifdef HAVE_STRUCT_IN6_ADDR
31    struct in6_addr ip6;
32#endif
33};
34
35/*
36 * IP address and netmask pairs for checking against local interfaces.
37 */
38struct interface {
39    int family;	/* AF_INET or AF_INET6 */
40    union sudo_in_addr_un addr;
41    union sudo_in_addr_un netmask;
42};
43
44/*
45 * Prototypes for external functions.
46 */
47void load_interfaces	__P((void));
48void dump_interfaces	__P((void));
49
50/*
51 * Definitions for external variables.
52 */
53#ifndef _SUDO_MAIN
54extern struct interface *interfaces;
55extern int num_interfaces;
56#endif
57
58#endif /* _SUDO_INTERFACES_H */
59