libgaim/network.h

Tue, 29 Aug 2006 02:22:08 +0000

author
Hil <allhilbert@users.sourceforge.net>
date
Tue, 29 Aug 2006 02:22:08 +0000
changeset 14432
3710852cdab5
parent 14329
05c3cc0c1f79
child 14758
13b9adc9efd2
permissions
-rw-r--r--

[gaim-migrate @ 17076]
SF Patch #1547720 from Hilbert
Fixes SF Bug #1541097

If you search, leave the Find dialog open, switch tabs, and search again, the search happens in the original tab. This patch fixes that bug. Now when you search, it searches in the active conversation window.

committer: Richard Laager <rlaager@pidgin.im>

8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
1 /**
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
2 * @file network.h Network API
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
3 * @ingroup core
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
4 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
5 * gaim
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
6 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
9 * source distribution.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
10 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
14 * (at your option) any later version.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
15 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
20 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
24 */
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
25 #ifndef _GAIM_NETWORK_H_
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
26 #define _GAIM_NETWORK_H_
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
27
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
28 #ifdef __cplusplus
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
29 extern "C" {
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
30 #endif
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
31
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
32 /**************************************************************************/
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
33 /** @name Network API */
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
34 /**************************************************************************/
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
35 /*@{*/
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
36
14329
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
37 typedef struct _GaimNetworkListenData GaimNetworkListenData;
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
38
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
39 typedef void (*GaimNetworkListenCallback) (int listenfd, gpointer data);
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
40
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
41 /**
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
42 * Converts a dot-decimal IP address to an array of unsigned
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
43 * chars. For example, converts 192.168.0.1 to a 4 byte
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
44 * array containing 192, 168, 0 and 1.
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
45 *
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
46 * @param ip An IP address in dot-decimal notiation.
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
47 * @return An array of 4 bytes containing an IP addresses
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
48 * equivalent to the given parameter, or NULL if
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
49 * the given IP address is invalid. This value
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
50 * is statically allocated and should not be
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
51 * freed.
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
52 */
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
53 const unsigned char *gaim_network_ip_atoi(const char *ip);
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
54
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
55 /**
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
56 * Sets the IP address of the local system in preferences. This
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
57 * is the IP address that should be used for incoming connections
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
58 * (file transfer, direct IM, etc.) and should therefore be
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
59 * publicly accessible.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
60 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
61 * @param ip The local IP address.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
62 */
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
63 void gaim_network_set_public_ip(const char *ip);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
64
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
65 /**
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
66 * Returns the IP address of the local system set in preferences.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
67 *
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
68 * This returns the value set via gaim_network_set_public_ip().
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
69 * You probably want to use gaim_network_get_my_ip() instead.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
70 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
71 * @return The local IP address set in preferences.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
72 */
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
73 const char *gaim_network_get_public_ip(void);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
74
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
75 /**
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
76 * Returns the IP address of the local system.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
77 *
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
78 * You probably want to use gaim_network_get_my_ip() instead.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
79 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
80 * @note The returned string is a pointer to a static buffer. If this
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
81 * function is called twice, it may be important to make a copy
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
82 * of the returned string.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
83 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
84 * @param fd The fd to use to help figure out the IP, or else -1.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
85 * @return The local IP address.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
86 */
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
87 const char *gaim_network_get_local_system_ip(int fd);
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
88
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
89 /**
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
90 * Returns the IP address that should be used anywhere a
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
91 * public IP addresses is needed (listening for an incoming
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
92 * file transfer, etc).
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
93 *
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
94 * If the user has manually specified an IP address via
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
95 * preferences, then this IP is returned. Otherwise the
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
96 * IP address returned by gaim_network_get_local_system_ip()
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
97 * is returned.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
98 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
99 * @note The returned string is a pointer to a static buffer. If this
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
100 * function is called twice, it may be important to make a copy
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
101 * of the returned string.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
102 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
103 * @param fd The fd to use to help figure out the IP, or -1.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
104 * @return The local IP address to be used.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
105 */
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
106 const char *gaim_network_get_my_ip(int fd);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
107
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
108 /**
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
109 * Attempts to open a listening port ONLY on the specified port number.
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
110 * You probably want to use gaim_network_listen_range() instead of this.
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
111 * This function is useful, for example, if you wanted to write a telnet
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
112 * server as a Gaim plugin, and you HAD to listen on port 23. Why anyone
8248
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
113 * would want to do that is beyond me.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
114 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
115 * This opens a listening port. The caller will want to set up a watcher
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
116 * of type GAIM_INPUT_READ on the fd returned in cb. It will probably call
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
117 * accept in the watcher callback, and then possibly remove the watcher and close
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
118 * the listening socket, and add a new watcher on the new socket accept
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
119 * returned.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
120 *
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
121 * @param port The port number to bind to. Must be greater than 0.
12730
f64fdbc34677 [gaim-migrate @ 15074]
Daniel Atallah <datallah@pidgin.im>
parents: 8915
diff changeset
122 * @param socket_type The type of socket to open for listening.
f64fdbc34677 [gaim-migrate @ 15074]
Daniel Atallah <datallah@pidgin.im>
parents: 8915
diff changeset
123 * This will be either SOCK_STREAM for TCP or SOCK_DGRAM for UDP.
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
124 * @param cb The callback to be invoked when the port to listen on is available.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
125 * The file descriptor of the listening socket will be specified in
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
126 * this callback, or -1 if no socket could be established.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
127 * @param cb_data extra data to be returned when cb is called
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
128 *
14329
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
129 * @return A pointer to a data structure that can be used to cancel
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
130 * the pending listener, or NULL if unable to obtain a local
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
131 * socket to listen on.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
132 */
14329
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
133 GaimNetworkListenData *gaim_network_listen(unsigned short port,
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
134 int socket_type, GaimNetworkListenCallback cb, gpointer cb_data);
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
135
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
136 /**
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
137 * Opens a listening port selected from a range of ports. The range of
8248
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
138 * ports used is chosen in the following manner:
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
139 * If a range is specified in preferences, these values are used.
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
140 * If a non-0 values are passed to the function as parameters, these
8248
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
141 * values are used.
13328
65543dcbaa89 [gaim-migrate @ 15697]
Mark Doliner <markdoliner@pidgin.im>
parents: 12909
diff changeset
142 * Otherwise a port is chosen at random by the operating system.
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
143 *
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
144 * This opens a listening port. The caller will want to set up a watcher
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
145 * of type GAIM_INPUT_READ on the fd returned in cb. It will probably call
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
146 * accept in the watcher callback, and then possibly remove the watcher and close
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
147 * the listening socket, and add a new watcher on the new socket accept
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
148 * returned.
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
149 *
8248
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
150 * @param start The port number to bind to, or 0 to pick a random port.
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
151 * Users are allowed to override this arg in prefs.
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
152 * @param end The highest possible port in the range of ports to listen on,
8248
47da4fbe1a17 [gaim-migrate @ 8971]
Mark Doliner <markdoliner@pidgin.im>
parents: 8246
diff changeset
153 * or 0 to pick a random port. Users are allowed to override this
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
154 * arg in prefs.
12730
f64fdbc34677 [gaim-migrate @ 15074]
Daniel Atallah <datallah@pidgin.im>
parents: 8915
diff changeset
155 * @param socket_type The type of socket to open for listening.
f64fdbc34677 [gaim-migrate @ 15074]
Daniel Atallah <datallah@pidgin.im>
parents: 8915
diff changeset
156 * This will be either SOCK_STREAM for TCP or SOCK_DGRAM for UDP.
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
157 * @param cb The callback to be invoked when the port to listen on is available.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
158 * The file descriptor of the listening socket will be specified in
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
159 * this callback, or -1 if no socket could be established.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 12730
diff changeset
160 * @param cb_data extra data to be returned when cb is called
8250
e855dcce1fa0 [gaim-migrate @ 8973]
Mark Doliner <markdoliner@pidgin.im>
parents: 8248
diff changeset
161 *
14329
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
162 * @return A pointer to a data structure that can be used to cancel
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
163 * the pending listener, or NULL if unable to obtain a local
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
164 * socket to listen on.
8246
c83c0421149a [gaim-migrate @ 8969]
Mark Doliner <markdoliner@pidgin.im>
parents: 8240
diff changeset
165 */
14329
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
166 GaimNetworkListenData *gaim_network_listen_range(unsigned short start,
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
167 unsigned short end, int socket_type,
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
168 GaimNetworkListenCallback cb, gpointer cb_data);
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
169
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
170 /**
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
171 * This can be used to cancel any in-progress listener connection
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
172 * by passing in the return value from either gaim_network_listen()
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
173 * or gaim_network_listen_range().
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
174 *
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
175 * @param listen_data This listener attempt will be canceled and
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
176 * the struct will be freed.
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
177 */
05c3cc0c1f79 [gaim-migrate @ 16949]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
178 void gaim_network_listen_cancel(GaimNetworkListenData *listen_data);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
179
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
180 /**
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
181 * Gets a port number from a file descriptor.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
182 *
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
183 * @param fd The file descriptor. This should be a tcp socket. The current
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
184 * implementation probably dies on anything but IPv4. Perhaps this
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
185 * possible bug will inspire new and valuable contributors to Gaim.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
186 * @return The port number, in host byte order.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
187 */
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
188 unsigned short gaim_network_get_port_from_fd(int fd);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
189
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
190 /**
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
191 * Initializes the network subsystem.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
192 */
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
193 void gaim_network_init(void);
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
194
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
195 /*@}*/
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
196
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
197 #ifdef __cplusplus
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
198 }
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
199 #endif
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
200
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
201 #endif /* _GAIM_NETWORK_H_ */

mercurial