172445Sassar/*
2233294Sstas * Copyright (c) 2000 Kungliga Tekniska H��gskolan
372445Sassar * (Royal Institute of Technology, Stockholm, Sweden).
472445Sassar * All rights reserved.
572445Sassar * 
672445Sassar * Redistribution and use in source and binary forms, with or without
772445Sassar * modification, are permitted provided that the following conditions
872445Sassar * are met:
972445Sassar * 
1072445Sassar * 1. Redistributions of source code must retain the above copyright
1172445Sassar *    notice, this list of conditions and the following disclaimer.
1272445Sassar * 
1372445Sassar * 2. Redistributions in binary form must reproduce the above copyright
1472445Sassar *    notice, this list of conditions and the following disclaimer in the
1572445Sassar *    documentation and/or other materials provided with the distribution.
1672445Sassar * 
1772445Sassar * 3. Neither the name of the Institute nor the names of its contributors
1872445Sassar *    may be used to endorse or promote products derived from this software
1972445Sassar *    without specific prior written permission.
2072445Sassar * 
2172445Sassar * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
2272445Sassar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2372445Sassar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2472445Sassar * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
2572445Sassar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2672445Sassar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2772445Sassar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2872445Sassar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2972445Sassar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3072445Sassar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3172445Sassar * SUCH DAMAGE.
3272445Sassar */
3372445Sassar
34233294Sstas/* $Id$ */
3572445Sassar
3672445Sassar#ifndef __ifaddrs_h__
3772445Sassar#define __ifaddrs_h__
3872445Sassar
39178825Sdfr#ifndef ROKEN_LIB_FUNCTION
40178825Sdfr#ifdef _WIN32
41233294Sstas#define ROKEN_LIB_FUNCTION
42233294Sstas#define ROKEN_LIB_CALL _stdcall
43178825Sdfr#else
44178825Sdfr#define ROKEN_LIB_FUNCTION
45233294Sstas#define ROKEN_LIB_CALL
46178825Sdfr#endif
47178825Sdfr#endif
48178825Sdfr
4972445Sassar/*
5072445Sassar * the interface is defined in terms of the fields below, and this is
5172445Sassar * sometimes #define'd, so there seems to be no simple way of solving
5272445Sassar * this and this seemed the best. */
5372445Sassar
5472445Sassar#undef ifa_dstaddr
5572445Sassar
5672445Sassarstruct ifaddrs {
5772445Sassar    struct ifaddrs *ifa_next;
5872445Sassar    char *ifa_name;
5972445Sassar    unsigned int ifa_flags;
6072445Sassar    struct sockaddr *ifa_addr;
6172445Sassar    struct sockaddr *ifa_netmask;
6272445Sassar    struct sockaddr *ifa_dstaddr;
6372445Sassar    void *ifa_data;
6472445Sassar};
6572445Sassar
6672445Sassar#ifndef ifa_broadaddr
6772445Sassar#define ifa_broadaddr ifa_dstaddr
6872445Sassar#endif
6972445Sassar
70178825Sdfrint ROKEN_LIB_FUNCTION
71178825Sdfrrk_getifaddrs(struct ifaddrs**);
7272445Sassar
73178825Sdfrvoid ROKEN_LIB_FUNCTION
74178825Sdfrrk_freeifaddrs(struct ifaddrs*);
7572445Sassar
76178825Sdfr#define getifaddrs(a) rk_getifaddrs(a)
77178825Sdfr#define freeifaddrs(a) rk_freeifaddrs(a)
78178825Sdfr
7972445Sassar#endif /* __ifaddrs_h__ */
80