]> git.ipfire.org Git - thirdparty/cups.git/blame - cups/getifaddrs-internal.h
Update usage info.
[thirdparty/cups.git] / cups / getifaddrs-internal.h
CommitLineData
9dd1bc98
MS
1/*
2 * getifaddrs definitions for CUPS.
3 *
4 * Copyright 2007-2018 by Apple Inc.
5 * Copyright 1997-2007 by Easy Software Products, all rights reserved.
6 *
7 * Licensed under Apache License v2.0. See the file "LICENSE" for more
8 * information.
9 */
10
11#ifndef _CUPS_GETIFADDRS_INTERNAL_H_
12# define _CUPS_GETIFADDRS_INTERNAL_H_
13
14/*
15 * Include necessary headers...
16 */
17
18# include "config.h"
19# ifdef _WIN32
20# define _WINSOCK_DEPRECATED_NO_WARNINGS 1
21# include <io.h>
22# include <winsock2.h>
23# define CUPS_SOCAST (const char *)
24# else
25# include <unistd.h>
26# include <fcntl.h>
27# include <sys/socket.h>
28# define CUPS_SOCAST
29# endif /* _WIN32 */
30
31# if defined(__APPLE__) && !defined(_SOCKLEN_T)
32/*
33 * macOS 10.2.x does not define socklen_t, and in fact uses an int instead of
34 * unsigned type for length values...
35 */
36
37typedef int socklen_t;
38# endif /* __APPLE__ && !_SOCKLEN_T */
39
40# ifndef _WIN32
41# include <net/if.h>
42# include <resolv.h>
43# ifdef HAVE_GETIFADDRS
44# include <ifaddrs.h>
45# else
46# include <sys/ioctl.h>
47# ifdef HAVE_SYS_SOCKIO_H
48# include <sys/sockio.h>
49# endif /* HAVE_SYS_SOCKIO_H */
50# endif /* HAVE_GETIFADDRS */
51# endif /* !_WIN32 */
52
53
54/*
55 * C++ magic...
56 */
57
58# ifdef __cplusplus
59extern "C" {
60# endif /* __cplusplus */
61
62
63/*
64 * Some OS's don't have getifaddrs() and freeifaddrs()...
65 */
66
67# if !defined(_WIN32) && !defined(HAVE_GETIFADDRS)
68# ifdef ifa_dstaddr
69# undef ifa_dstaddr
70# endif /* ifa_dstaddr */
71# ifndef ifr_netmask
72# define ifr_netmask ifr_addr
73# endif /* !ifr_netmask */
74
75struct ifaddrs /**** Interface Structure ****/
76{
77 struct ifaddrs *ifa_next; /* Next interface in list */
78 char *ifa_name; /* Name of interface */
79 unsigned int ifa_flags; /* Flags (up, point-to-point, etc.) */
80 struct sockaddr *ifa_addr, /* Network address */
81 *ifa_netmask; /* Address mask */
82 union
83 {
84 struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */
85 struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */
86 } ifa_ifu;
87
88 void *ifa_data; /* Interface statistics */
89};
90
91# ifndef ifa_broadaddr
92# define ifa_broadaddr ifa_ifu.ifu_broadaddr
93# endif /* !ifa_broadaddr */
94# ifndef ifa_dstaddr
95# define ifa_dstaddr ifa_ifu.ifu_dstaddr
96# endif /* !ifa_dstaddr */
97
98extern int _cups_getifaddrs(struct ifaddrs **addrs) _CUPS_PRIVATE;
99# define getifaddrs _cups_getifaddrs
100extern void _cups_freeifaddrs(struct ifaddrs *addrs) _CUPS_PRIVATE;
101# define freeifaddrs _cups_freeifaddrs
102# endif /* !_WIN32 && !HAVE_GETIFADDRS */
103
104
105/*
106 * C++ magic...
107 */
108
109# ifdef __cplusplus
110}
111# endif /* __cplusplus */
112
113#endif /* !_CUPS_GETIFADDRS_INTERNAL_H_ */