]> git.ipfire.org Git - thirdparty/cups.git/blame - cups/getifaddrs-internal.h
Update ipp documentation to reflect the behavior of configuring WiFi on IPP USB printers.
[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>
064e50fb 28# include <netinet/in.h>
9dd1bc98
MS
29# define CUPS_SOCAST
30# endif /* _WIN32 */
31
32# if defined(__APPLE__) && !defined(_SOCKLEN_T)
33/*
34 * macOS 10.2.x does not define socklen_t, and in fact uses an int instead of
35 * unsigned type for length values...
36 */
37
38typedef int socklen_t;
39# endif /* __APPLE__ && !_SOCKLEN_T */
40
41# ifndef _WIN32
42# include <net/if.h>
43# include <resolv.h>
44# ifdef HAVE_GETIFADDRS
45# include <ifaddrs.h>
46# else
47# include <sys/ioctl.h>
48# ifdef HAVE_SYS_SOCKIO_H
49# include <sys/sockio.h>
50# endif /* HAVE_SYS_SOCKIO_H */
51# endif /* HAVE_GETIFADDRS */
52# endif /* !_WIN32 */
53
54
55/*
56 * C++ magic...
57 */
58
59# ifdef __cplusplus
60extern "C" {
61# endif /* __cplusplus */
62
63
64/*
65 * Some OS's don't have getifaddrs() and freeifaddrs()...
66 */
67
68# if !defined(_WIN32) && !defined(HAVE_GETIFADDRS)
69# ifdef ifa_dstaddr
70# undef ifa_dstaddr
71# endif /* ifa_dstaddr */
72# ifndef ifr_netmask
73# define ifr_netmask ifr_addr
74# endif /* !ifr_netmask */
75
76struct ifaddrs /**** Interface Structure ****/
77{
78 struct ifaddrs *ifa_next; /* Next interface in list */
79 char *ifa_name; /* Name of interface */
80 unsigned int ifa_flags; /* Flags (up, point-to-point, etc.) */
81 struct sockaddr *ifa_addr, /* Network address */
82 *ifa_netmask; /* Address mask */
83 union
84 {
85 struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */
86 struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */
87 } ifa_ifu;
88
89 void *ifa_data; /* Interface statistics */
90};
91
92# ifndef ifa_broadaddr
93# define ifa_broadaddr ifa_ifu.ifu_broadaddr
94# endif /* !ifa_broadaddr */
95# ifndef ifa_dstaddr
96# define ifa_dstaddr ifa_ifu.ifu_dstaddr
97# endif /* !ifa_dstaddr */
98
99extern int _cups_getifaddrs(struct ifaddrs **addrs) _CUPS_PRIVATE;
100# define getifaddrs _cups_getifaddrs
101extern void _cups_freeifaddrs(struct ifaddrs *addrs) _CUPS_PRIVATE;
102# define freeifaddrs _cups_freeifaddrs
103# endif /* !_WIN32 && !HAVE_GETIFADDRS */
104
105
106/*
107 * C++ magic...
108 */
109
110# ifdef __cplusplus
111}
112# endif /* __cplusplus */
113
114#endif /* !_CUPS_GETIFADDRS_INTERNAL_H_ */