annotate network.h @ 5720:d833557e7287 libavformat

asfenc: write tags in proper UTF-16. Patch by Anton Khirnov wyskas gmail com
author benoit
date Thu, 25 Feb 2010 16:59:55 +0000
parents a3e321e7ca38
children a292ef47e2f9
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);
5638
a3e321e7ca38 Implement gai_strerror() for systems lacking such functionality. Patch
rbultje
parents: 5565
diff changeset
150 const char *ff_gai_strerror(int ecode);
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
151 #define getaddrinfo ff_getaddrinfo
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
152 #define freeaddrinfo ff_freeaddrinfo
5520
8797851aeedb Provide a fallback for getnameinfo() also. Patch by Martin Storsj
rbultje
parents: 5519
diff changeset
153 #define getnameinfo ff_getnameinfo
5638
a3e321e7ca38 Implement gai_strerror() for systems lacking such functionality. Patch
rbultje
parents: 5565
diff changeset
154 #define gai_strerror ff_gai_strerror
5516
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
155 #endif
afe4a96b6832 Provide fallback implementations of getaddrinfo() and freeaddrinfo().
rbultje
parents: 4284
diff changeset
156
3852
1b6245500d8c Globally rename the header inclusion guard names.
stefano
parents: 2620
diff changeset
157 #endif /* AVFORMAT_NETWORK_H */