annotate network.h @ 5565:befe2f0f9a00 libavformat

Use the configure check from r21351 and use it to properly define struct sockaddr (in case it's not missing) so it always works on the system that we are defining it for, in a RFC-2553/3493-compliant way (i.e. containing a ss_family field). which is used in udp.c. Patch by Martin Storsj <$firstname $firstname st>.
author rbultje
date Wed, 20 Jan 2010 17:26:14 +0000
parents 8797851aeedb
children a3e321e7ca38
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1754
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
1 /*
4251
77e0c7511d41 cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 4206
diff changeset
2 * Copyright (c) 2007 The FFmpeg Project
1754
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
3 *
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
4 * This file is part of FFmpeg.
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
5 *
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
10 *
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
14 * Lesser General Public License for more details.
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
15 *
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
19 */
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
20
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 2620
diff changeset
21 #ifndef AVFORMAT_NETWORK_H
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 2620
diff changeset
22 #define AVFORMAT_NETWORK_H
1754
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
23
4284
40c9bef5b4e2 Fix undefined preprocessor directives warnings during 'make checkheaders'.
diego
parents: 4251
diff changeset
24 #include "config.h"
40c9bef5b4e2 Fix undefined preprocessor directives warnings during 'make checkheaders'.
diego
parents: 4251
diff changeset
25
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3852
diff changeset
26 #if HAVE_WINSOCK2_H
2085
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
27 #include <winsock2.h>
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
28 #include <ws2tcpip.h>
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
29
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
30 #define ff_neterrno() WSAGetLastError()
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
31 #define FF_NETERROR(err) WSA##err
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
32 #define WSAEAGAIN WSAEWOULDBLOCK
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
33 #else
1754
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
34 #include <sys/types.h>
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
35 #include <sys/socket.h>
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
36 #include <netinet/in.h>
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
37 #include <netdb.h>
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
38
2056
eeea52739ff3 use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents: 1943
diff changeset
39 #define ff_neterrno() errno
eeea52739ff3 use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents: 1943
diff changeset
40 #define FF_NETERROR(err) err
2085
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
41 #endif
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
42
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3852
diff changeset
43 #if HAVE_ARPA_INET_H
2085
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
44 #include <arpa/inet.h>
8fc44b349f59 initial mingw networking support
alex
parents: 2057
diff changeset
45 #endif
2056
eeea52739ff3 use ff_neterrno() and FF_NETERROR() for networking error handling
alex
parents: 1943
diff changeset
46
2057
857fbfeb2fa0 implement ff_socket_nonblock and use it in networking code
alex
parents: 2056
diff changeset
47 int ff_socket_nonblock(int socket, int enable);
857fbfeb2fa0 implement ff_socket_nonblock and use it in networking code
alex
parents: 2056
diff changeset
48
2351
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
49 static inline int ff_network_init(void)
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
50 {
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3852
diff changeset
51 #if HAVE_WINSOCK2_H
2351
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
52 WSADATA wsaData;
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
53 if (WSAStartup(MAKEWORD(1,1), &wsaData))
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
54 return 0;
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
55 #endif
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
56 return 1;
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
57 }
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
58
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
59 static inline void ff_network_close(void)
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
60 {
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3852
diff changeset
61 #if HAVE_WINSOCK2_H
2351
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
62 WSACleanup();
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
63 #endif
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
64 }
b9a881c0967e Add initialization and cleanup functions for Winsock
ramiro
parents: 2322
diff changeset
65
4206
c3102b189cb6 Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 3852
diff changeset
66 #if !HAVE_INET_ATON
1943
c0c0f19f0db6 Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents: 1754
diff changeset
67 /* in os_support.c */
c0c0f19f0db6 Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents: 1754
diff changeset
68 int inet_aton (const char * str, struct in_addr * add);
1754
1f7a6dc01100 move networking #includes into separate file
mru
parents:
diff changeset
69 #endif
1943
c0c0f19f0db6 Some more BeOS cleanup: check for arpa/inet.h; declare the prototype for inet_aton if not found; remove barpainet.h as it's not longer needed.
mmu_man
parents: 1754
diff changeset
70
5519
9faa86343583 Implement a fallback for struct sockaddr_storage if not available.
rbultje
parents: 5516
diff changeset
71 #if !HAVE_STRUCT_SOCKADDR_STORAGE
9faa86343583 Implement a fallback for struct sockaddr_storage if not available.
rbultje
parents: 5516
diff changeset
72 struct sockaddr_storage {
5565
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
73 #if HAVE_STRUCT_SOCKADDR_SA_LEN
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
74 uint8_t ss_len;
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
75 uint8_t ss_family;
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
76 #else
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
77 uint16_t ss_family;
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
78 #endif
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
79 char ss_pad1[6];
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
80 int64_t ss_align;
befe2f0f9a00 Use the configure check from r21351 and use it to properly define struct
rbultje
parents: 5520
diff changeset
81 char ss_pad2[112];
5519
9faa86343583 Implement a fallback for struct sockaddr_storage if not available.
rbultje
parents: 5516
diff changeset
82 };
9faa86343583 Implement a fallback for struct sockaddr_storage if not available.
rbultje
parents: 5516
diff changeset
83 #endif
9faa86343583 Implement a fallback for struct sockaddr_storage if not available.
rbultje
parents: 5516
diff changeset
84
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
85 #if !HAVE_STRUCT_ADDRINFO
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
86 struct addrinfo {
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
87 int ai_flags;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
88 int ai_family;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
89 int ai_socktype;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
90 int ai_protocol;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
91 int ai_addrlen;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
92 struct sockaddr *ai_addr;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
93 char *ai_canonname;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
94 struct addrinfo *ai_next;
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
95 };
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
96 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
97
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
98 /* getaddrinfo constants */
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
99 #ifndef EAI_FAIL
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
100 #define EAI_FAIL 4
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
101 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
102
5520
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
103 #ifndef EAI_FAMILY
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
104 #define EAI_FAMILY 5
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
105 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
106
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
107 #ifndef EAI_NONAME
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
108 #define EAI_NONAME 8
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
109 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
110
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
111 #ifndef AI_PASSIVE
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
112 #define AI_PASSIVE 1
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
113 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
114
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
115 #ifndef AI_CANONNAME
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
116 #define AI_CANONNAME 2
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
117 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
118
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
119 #ifndef AI_NUMERICHOST
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
120 #define AI_NUMERICHOST 4
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
121 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
122
5520
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
123 #ifndef NI_NOFQDN
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
124 #define NI_NOFQDN 1
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
125 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
126
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
127 #ifndef NI_NUMERICHOST
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
128 #define NI_NUMERICHOST 2
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
129 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
130
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
131 #ifndef NI_NAMERQD
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
132 #define NI_NAMERQD 4
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
133 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
134
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
135 #ifndef NI_NUMERICSERV
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
136 #define NI_NUMERICSERV 8
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
137 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
138
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
139 #ifndef NI_DGRAM
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
140 #define NI_DGRAM 16
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
141 #endif
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
142
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
143 #if !HAVE_GETADDRINFO
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
144 int ff_getaddrinfo(const char *node, const char *service,
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
145 const struct addrinfo *hints, struct addrinfo **res);
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
146 void ff_freeaddrinfo(struct addrinfo *res);
5520
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
147 int ff_getnameinfo(const struct sockaddr *sa, int salen,
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
148 char *host, int hostlen,
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
149 char *serv, int servlen, int flags);
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
150 #define getaddrinfo ff_getaddrinfo
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
151 #define freeaddrinfo ff_freeaddrinfo
5520
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
152 #define getnameinfo ff_getnameinfo
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
153 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
154
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 2620
diff changeset
155 #endif /* AVFORMAT_NETWORK_H */