address.h   address.h 
skipping to change at line 68 skipping to change at line 68
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#endif #endif
G_BEGIN_DECLS G_BEGIN_DECLS
/** /**
* NiceAddress: * NiceAddress:
* @addr: Generic sockaddr address
* @ip4: IPv4 sockaddr address
* @ip6: IPv6 sockaddr address
* *
* The #NiceAddress structure that represents an IPv4 or IPv6 address. * The #NiceAddress structure that represents an IPv4 or IPv6 address.
*/ */
struct _NiceAddress struct _NiceAddress
{ {
union union
{ {
struct sockaddr addr; struct sockaddr addr;
struct sockaddr_in ip4; struct sockaddr_in ip4;
struct sockaddr_in6 ip6; struct sockaddr_in6 ip6;
 End of changes. 1 change blocks. 
3 lines changed or deleted 0 lines changed or added


 agent.h   agent.h 
skipping to change at line 55 skipping to change at line 55
* @short_description: ICE agent API implementation * @short_description: ICE agent API implementation
* @see_also: #NiceCandidate, #NiceAddress * @see_also: #NiceCandidate, #NiceAddress
* @include: agent.h * @include: agent.h
* @stability: Stable * @stability: Stable
* *
* The #NiceAgent is your main object when using libnice. * The #NiceAgent is your main object when using libnice.
* It is the agent that will take care of everything relating to ICE. * It is the agent that will take care of everything relating to ICE.
* It will take care of discovering your local candidates and do * It will take care of discovering your local candidates and do
* connectivity checks to create a stream of data between you and your pee r. * connectivity checks to create a stream of data between you and your pee r.
* *
* A #NiceAgent must always be used with a #GMainLoop running the #GMainCon
text
* passed into nice_agent_new() (or nice_agent_new_reliable()). Without the
* #GMainContext being iterated, the agent’s timers will not fire and, if
* nice_agent_attach_recv() is used, packets will not be received.
*
* Streams and their components are referenced by integer IDs (with respect to a * Streams and their components are referenced by integer IDs (with respect to a
* given #NiceAgent). These IDs are guaranteed to be positive (i.e. non-zer o) * given #NiceAgent). These IDs are guaranteed to be positive (i.e. non-zer o)
* for valid streams/components. * for valid streams/components.
* *
* Each stream can receive data in one of two ways: using * Each stream can receive data in one of two ways: using
* nice_agent_attach_recv() or nice_agent_recv_messages() (and the derived * nice_agent_attach_recv() or nice_agent_recv_messages() (and the derived
* #NiceInputStream and #NiceIOStream classes accessible using * #NiceInputStream and #NiceIOStream classes accessible using
* nice_agent_get_io_stream()). nice_agent_attach_recv() is non-blocking: i t * nice_agent_get_io_stream()). nice_agent_attach_recv() is non-blocking: i t
* takes a user-provided callback function and attaches the stream’s sock et to * takes a user-provided callback function and attaches the stream’s sock et to
* the provided #GMainContext, invoking the callback in that context for ev ery * the provided #GMainContext, invoking the callback in that context for ev ery
skipping to change at line 76 skipping to change at line 81
* packet, and writes it directly into a user-provided buffer. This reduces the * packet, and writes it directly into a user-provided buffer. This reduces the
* number of callback invokations and (potentially) buffer copies required to * number of callback invokations and (potentially) buffer copies required to
* receive packets. nice_agent_recv_messages() (or #NiceInputStream) is des igned * receive packets. nice_agent_recv_messages() (or #NiceInputStream) is des igned
* to be used in a blocking loop in a separate thread. * to be used in a blocking loop in a separate thread.
* *
* <example> * <example>
* <title>Simple example on how to use libnice</title> * <title>Simple example on how to use libnice</title>
* <programlisting> * <programlisting>
* guint stream_id; * guint stream_id;
* gchar buffer[] = "hello world!"; * gchar buffer[] = "hello world!";
* gchar *ufrag = NULL, *pwd = NULL;
* gchar *remote_ufrag, *remote_pwd;
* GSList *lcands = NULL; * GSList *lcands = NULL;
* *
* // Create a nice agent * // Create a nice agent, passing in the global default GMainContext.
* NiceAgent *agent = nice_agent_new (NULL, NICE_COMPATIBILITY_RFC5245); * NiceAgent *agent = nice_agent_new (NULL, NICE_COMPATIBILITY_RFC5245);
* spawn_thread_to_run_main_loop (g_main_loop_new (NULL, FALSE));
* *
* // Connect the signals * // Connect the signals
* g_signal_connect (G_OBJECT (agent), "candidate-gathering-done", * g_signal_connect (G_OBJECT (agent), "candidate-gathering-done",
* G_CALLBACK (cb_candidate_gathering_done), NULL); * G_CALLBACK (cb_candidate_gathering_done), NULL);
* g_signal_connect (G_OBJECT (agent), "component-state-changed", * g_signal_connect (G_OBJECT (agent), "component-state-changed",
* G_CALLBACK (cb_component_state_changed), NULL); * G_CALLBACK (cb_component_state_changed), NULL);
* g_signal_connect (G_OBJECT (agent), "new-selected-pair", * g_signal_connect (G_OBJECT (agent), "new-selected-pair",
* G_CALLBACK (cb_new_selected_pair), NULL); * G_CALLBACK (cb_new_selected_pair), NULL);
* *
* // Create a new stream with one component and start gathering candidat es * // Create a new stream with one component and start gathering candidat es
* stream_id = nice_agent_add_stream (agent, 1); * stream_id = nice_agent_add_stream (agent, 1);
* nice_agent_gather_candidates (agent, stream_id); * nice_agent_gather_candidates (agent, stream_id);
* *
* // Attach to the component to receive the data * // Attach to the component to receive the data
* nice_agent_attach_recv (agent, stream_id, 1, NULL, * nice_agent_attach_recv (agent, stream_id, 1, NULL,
* cb_nice_recv, NULL); * cb_nice_recv, NULL);
* *
* // ... Wait until the signal candidate-gathering-done is fired ... * // ... Wait until the signal candidate-gathering-done is fired ...
* lcands = nice_agent_get_local_candidates(agent, stream_id, 1); * lcands = nice_agent_get_local_candidates(agent, stream_id, 1);
* nice_agent_get_local_credentials(agent, stream_id, &ufrag, &pwd);
*
* // ... Send local candidates and credentials to the peer
* *
* // ... Send local candidates to the peer and set the peer's remote can * // Set the peer's remote credentials and remote candidates
didates * nice_agent_set_remote_credentials (agent, stream_id, remote_ufrag, rem
ote_pwd);
* nice_agent_set_remote_candidates (agent, stream_id, 1, rcands); * nice_agent_set_remote_candidates (agent, stream_id, 1, rcands);
* *
* // ... Wait until the signal new-selected-pair is fired ... * // ... Wait until the signal new-selected-pair is fired ...
* // Send our message! * // Send our message!
* nice_agent_send (agent, stream_id, 1, sizeof(buffer), buffer); * nice_agent_send (agent, stream_id, 1, sizeof(buffer), buffer);
* *
* // Anything received will be received through the cb_nice_recv callbac * // Anything received will be received through the cb_nice_recv callbac
k k.
* // You must be running a GMainLoop on the global default GMainContext
in
* // another thread for this to work.
* *
* // Destroy the object * // Destroy the object
* g_object_unref(agent); * g_object_unref(agent);
* *
* </programlisting> * </programlisting>
* </example> * </example>
* *
* Refer to the examples in the examples/ subdirectory of the libnice sourc e for * Refer to the examples in the examples/ subdirectory of the libnice sourc e for
* more complete examples. * more complete examples.
* *
skipping to change at line 550 skipping to change at line 565
* (length must be between 22 and 256 chars) * (length must be between 22 and 256 chars)
* @pwd: NULL-terminated string containing an ICE password * @pwd: NULL-terminated string containing an ICE password
* (length must be between 4 and 256 chars) * (length must be between 4 and 256 chars)
* *
* Sets the remote credentials for stream @stream_id. * Sets the remote credentials for stream @stream_id.
* *
<note> <note>
<para> <para>
Stream credentials do not override per-candidate credentials if set Stream credentials do not override per-candidate credentials if set
</para> </para>
<para>
Due to the native of peer-reflexive candidates, any agent using a per-
stream
credentials (RFC5245, WLM2009, OC2007R2 and DRAFT19) instead of
per-candidate credentials (GOOGLE, MSN, OC2007), must
use the nice_agent_set_remote_credentials() API instead of setting the
username and password on the candidates.
</para>
</note> </note>
* *
* Returns: %TRUE on success, %FALSE on error. * Returns: %TRUE on success, %FALSE on error.
*/ */
gboolean gboolean
nice_agent_set_remote_credentials ( nice_agent_set_remote_credentials (
NiceAgent *agent, NiceAgent *agent,
guint stream_id, guint stream_id,
const gchar *ufrag, const gchar *pwd); const gchar *ufrag, const gchar *pwd);
 End of changes. 8 change blocks. 
5 lines changed or deleted 30 lines changed or added


 constants.h   constants.h 
skipping to change at line 40 skipping to change at line 40
* LGPL and not to allow others to use your version of this file under the * LGPL and not to allow others to use your version of this file under the
* MPL, indicate your decision by deleting the provisions above and replace * MPL, indicate your decision by deleting the provisions above and replace
* them with the notice and other provisions required by the LGPL. If you d o * them with the notice and other provisions required by the LGPL. If you d o
* not delete the provisions above, a recipient may use your version of thi s * not delete the provisions above, a recipient may use your version of thi s
* file under either the MPL or the LGPL. * file under either the MPL or the LGPL.
*/ */
#ifndef _STUN_CONSTANTS_H #ifndef _STUN_CONSTANTS_H
#define _STUN_CONSTANTS_H #define _STUN_CONSTANTS_H
/**
* SECTION:stunconstants
* @short_description: STUN constants
* @include: stun/constants.h
* @stability: Stable
*
* Various constants defining parts of the STUN and TURN protocols and
* on-the-wire packet formats.
*/
/**
* STUN_ATTRIBUTE_LENGTH_LEN:
*
* Length of the length field of a STUN attribute (in bytes).
*/
/**
* STUN_ATTRIBUTE_LENGTH_POS:
*
* Offset of the length field of a STUN attribute (in bytes).
*/
/**
* STUN_ATTRIBUTE_TYPE_LEN:
*
* Length of the type field of a STUN attribute (in bytes).
*/
/**
* STUN_ATTRIBUTE_TYPE_POS:
*
* Offset of the type field of a STUN attribute (in bytes).
*/
/**
* STUN_ATTRIBUTE_VALUE_POS:
*
* Offset of the value field of a STUN attribute (in bytes).
*/
/**
* STUN_ID_LEN:
*
* Length of the ID field of a STUN message (in bytes).
*/
/**
* STUN_MAGIC_COOKIE:
*
* Magic cookie value used to identify STUN messages.
*/
/**
* TURN_MAGIC_COOKIE:
*
* Magic cookie value used to identify TURN messages.
*/
/**
* STUN_MAX_MESSAGE_SIZE_IPV4:
*
* Maximum size of a STUN message sent over IPv4 (in bytes).
*/
/**
* STUN_MAX_MESSAGE_SIZE_IPV6:
*
* Maximum size of a STUN message sent over IPv6 (in bytes).
*/
/**
* STUN_MESSAGE_ATTRIBUTES_POS:
*
* Offset of the attributes of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_HEADER_LENGTH:
*
* Total length of a STUN message header (in bytes).
*/
/**
* STUN_MESSAGE_LENGTH_LEN:
*
* Length of the length field of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_LENGTH_POS:
*
* Offset of the length field of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_TRANS_ID_LEN:
*
* Length of the transaction ID field of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_TRANS_ID_POS:
*
* Offset of the transaction ID field of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_TYPE_LEN:
*
* Length of the type field of a STUN message (in bytes).
*/
/**
* STUN_MESSAGE_TYPE_POS:
*
* Offset of the type field of a STUN message (in bytes).
*/
#define STUN_MESSAGE_TYPE_POS 0 #define STUN_MESSAGE_TYPE_POS 0
#define STUN_MESSAGE_TYPE_LEN 2 #define STUN_MESSAGE_TYPE_LEN 2
#define STUN_MESSAGE_LENGTH_POS \ #define STUN_MESSAGE_LENGTH_POS \
(STUN_MESSAGE_TYPE_POS + STUN_MESSAGE_TYPE_LEN) (STUN_MESSAGE_TYPE_POS + STUN_MESSAGE_TYPE_LEN)
#define STUN_MESSAGE_LENGTH_LEN 2 #define STUN_MESSAGE_LENGTH_LEN 2
#define STUN_MESSAGE_TRANS_ID_POS \ #define STUN_MESSAGE_TRANS_ID_POS \
(STUN_MESSAGE_LENGTH_POS + STUN_MESSAGE_LENGTH_LEN) (STUN_MESSAGE_LENGTH_POS + STUN_MESSAGE_LENGTH_LEN)
#define STUN_MESSAGE_TRANS_ID_LEN 16 #define STUN_MESSAGE_TRANS_ID_LEN 16
#define STUN_MESSAGE_ATTRIBUTES_POS \ #define STUN_MESSAGE_ATTRIBUTES_POS \
(STUN_MESSAGE_TRANS_ID_POS + STUN_MESSAGE_TRANS_ID_LEN) (STUN_MESSAGE_TRANS_ID_POS + STUN_MESSAGE_TRANS_ID_LEN)
skipping to change at line 61 skipping to change at line 162
#define STUN_MESSAGE_HEADER_LENGTH STUN_MESSAGE_ATTRIBUTES_POS #define STUN_MESSAGE_HEADER_LENGTH STUN_MESSAGE_ATTRIBUTES_POS
#define STUN_ATTRIBUTE_TYPE_POS 0 #define STUN_ATTRIBUTE_TYPE_POS 0
#define STUN_ATTRIBUTE_TYPE_LEN 2 #define STUN_ATTRIBUTE_TYPE_LEN 2
#define STUN_ATTRIBUTE_LENGTH_POS \ #define STUN_ATTRIBUTE_LENGTH_POS \
(STUN_ATTRIBUTE_TYPE_POS + STUN_ATTRIBUTE_TYPE_LEN) (STUN_ATTRIBUTE_TYPE_POS + STUN_ATTRIBUTE_TYPE_LEN)
#define STUN_ATTRIBUTE_LENGTH_LEN 2 #define STUN_ATTRIBUTE_LENGTH_LEN 2
#define STUN_ATTRIBUTE_VALUE_POS \ #define STUN_ATTRIBUTE_VALUE_POS \
(STUN_ATTRIBUTE_LENGTH_POS + STUN_ATTRIBUTE_LENGTH_LEN) (STUN_ATTRIBUTE_LENGTH_POS + STUN_ATTRIBUTE_LENGTH_LEN)
/**
* STUN_ATTRIBUTE_HEADER_LENGTH:
*
* Length of a single STUN attribute header (in bytes).
*/
#define STUN_ATTRIBUTE_HEADER_LENGTH STUN_ATTRIBUTE_VALUE_POS #define STUN_ATTRIBUTE_HEADER_LENGTH STUN_ATTRIBUTE_VALUE_POS
#define STUN_MAX_MESSAGE_SIZE_IPV4 576 #define STUN_MAX_MESSAGE_SIZE_IPV4 576
#define STUN_MAX_MESSAGE_SIZE_IPV6 1280 #define STUN_MAX_MESSAGE_SIZE_IPV6 1280
/* #define STUN_MAX_MESSAGE_SIZE STUN_MAX_MESSAGE_SIZE_IPV4 */ /* #define STUN_MAX_MESSAGE_SIZE STUN_MAX_MESSAGE_SIZE_IPV4 */
#define STUN_ID_LEN 16 #define STUN_ID_LEN 16
/**
* STUN_AGENT_MAX_SAVED_IDS:
*
* Maximum number of simultaneously ongoing STUN transactions.
*/
#define STUN_AGENT_MAX_SAVED_IDS 200 #define STUN_AGENT_MAX_SAVED_IDS 200
/**
* STUN_AGENT_MAX_UNKNOWN_ATTRIBUTES:
*
* Maximum number of unknown attribute which can be handled in a single STU
N
* message.
*/
#define STUN_AGENT_MAX_UNKNOWN_ATTRIBUTES 256 #define STUN_AGENT_MAX_UNKNOWN_ATTRIBUTES 256
#define STUN_MAGIC_COOKIE 0x2112A442 #define STUN_MAGIC_COOKIE 0x2112A442
#define TURN_MAGIC_COOKIE 0x72c64bc6 #define TURN_MAGIC_COOKIE 0x72c64bc6
#ifndef TRUE #ifndef TRUE
#define TRUE (1 == 1) #define TRUE (1 == 1)
#endif #endif
#ifndef FALSE #ifndef FALSE
 End of changes. 4 change blocks. 
0 lines changed or deleted 119 lines changed or added


 debug.h   debug.h 
skipping to change at line 76 skipping to change at line 76
* More flags are to come and a better API to enable/disable each flag * More flags are to come and a better API to enable/disable each flag
* should be added.</para> * should be added.</para>
*/ */
#include <glib.h> #include <glib.h>
G_BEGIN_DECLS G_BEGIN_DECLS
/** /**
* nice_debug_enable: * nice_debug_enable:
* @with_stun: Also enable stun debugging messages * @with_stun: Also enable STUN debugging messages
* *
* Enables libnice debug output to the terminal * Enables libnice debug output to the terminal. Note that the
* `G_MESSAGES_DEBUG` and `NICE_DEBUG` environment variables must be set to
the
* set of logging domains to print, in order for any output to be printed.
Set
* them to `all` to print all debugging messages, or any of the following
* domains:
* - `libnice-stun`
* - `libnice-tests`
* - `libnice-socket`
* - `libnice`
* - `libnice-pseudotcp`
* - `libnice-pseudotcp-verbose`
*/ */
void nice_debug_enable (gboolean with_stun); void nice_debug_enable (gboolean with_stun);
/** /**
* nice_debug_disable: * nice_debug_disable:
* @with_stun: Also disable stun debugging messages * @with_stun: Also disable stun debugging messages
* *
* Disables libnice debug output to the terminal * Disables libnice debug output to the terminal
*/ */
void nice_debug_disable (gboolean with_stun); void nice_debug_disable (gboolean with_stun);
 End of changes. 2 change blocks. 
2 lines changed or deleted 14 lines changed or added


 stunmessage.h   stunmessage.h 
skipping to change at line 163 skipping to change at line 163
* by RFC5389 * by RFC5389
* @STUN_ATTRIBUTE_ERROR_CODE: The ERROR-CODE attribute as defined by RFC53 89 * @STUN_ATTRIBUTE_ERROR_CODE: The ERROR-CODE attribute as defined by RFC53 89
* @STUN_ATTRIBUTE_UNKNOWN_ATTRIBUTES: The UNKNOWN-ATTRIBUTES attribute as * @STUN_ATTRIBUTE_UNKNOWN_ATTRIBUTES: The UNKNOWN-ATTRIBUTES attribute as
* defined by RFC5389 * defined by RFC5389
* @STUN_ATTRIBUTE_REFLECTED_FROM: The REFLECTED-FROM attribute as defined * @STUN_ATTRIBUTE_REFLECTED_FROM: The REFLECTED-FROM attribute as defined
* by RFC3489 * by RFC3489
* @STUN_ATTRIBUTE_CHANNEL_NUMBER: The CHANNEL-NUMBER attribute as defined by * @STUN_ATTRIBUTE_CHANNEL_NUMBER: The CHANNEL-NUMBER attribute as defined by
* TURN draft 09 and 12 * TURN draft 09 and 12
* @STUN_ATTRIBUTE_LIFETIME: The LIFETIME attribute as defined by TURN * @STUN_ATTRIBUTE_LIFETIME: The LIFETIME attribute as defined by TURN
* draft 04, 09 and 12 * draft 04, 09 and 12
* @STUN_ATTRIBUTE_MS_ALTERNATE_SERVER: The ALTERNATE-SERVER attribute as
* defined by [MS-TURN]
* @STUN_ATTRIBUTE_MAGIC_COOKIE: The MAGIC-COOKIE attribute as defined by * @STUN_ATTRIBUTE_MAGIC_COOKIE: The MAGIC-COOKIE attribute as defined by
* the rosenberg-midcom TURN draft 08 * the rosenberg-midcom TURN draft 08
* @STUN_ATTRIBUTE_BANDWIDTH: The BANDWIDTH attribute as defined by TURN dr aft 04 * @STUN_ATTRIBUTE_BANDWIDTH: The BANDWIDTH attribute as defined by TURN dr aft 04
* @STUN_ATTRIBUTE_DESTINATION_ADDRESS: The DESTINATION-ADDRESS attribute a s * @STUN_ATTRIBUTE_DESTINATION_ADDRESS: The DESTINATION-ADDRESS attribute a s
* defined by the rosenberg-midcom TURN draft 08 * defined by the rosenberg-midcom TURN draft 08
* @STUN_ATTRIBUTE_REMOTE_ADDRESS: The REMOTE-ADDRESS attribute as defined by * @STUN_ATTRIBUTE_REMOTE_ADDRESS: The REMOTE-ADDRESS attribute as defined by
* TURN draft 04 * TURN draft 04
* @STUN_ATTRIBUTE_PEER_ADDRESS: The PEER-ADDRESS attribute as defined by * @STUN_ATTRIBUTE_PEER_ADDRESS: The PEER-ADDRESS attribute as defined by
* TURN draft 09 * TURN draft 09
* @STUN_ATTRIBUTE_XOR_PEER_ADDRESS: The XOR-PEER-ADDRESS attribute as defi ned * @STUN_ATTRIBUTE_XOR_PEER_ADDRESS: The XOR-PEER-ADDRESS attribute as defi ned
 End of changes. 1 change blocks. 
0 lines changed or deleted 2 lines changed or added


 timer.h   timer.h 
skipping to change at line 200 skipping to change at line 200
* See also: #STUN_TIMER_DEFAULT_TIMEOUT * See also: #STUN_TIMER_DEFAULT_TIMEOUT
* *
* See also: #STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS * See also: #STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS
*/ */
void stun_timer_start (StunTimer *timer, unsigned int initial_timeout, void stun_timer_start (StunTimer *timer, unsigned int initial_timeout,
unsigned int max_retransmissions); unsigned int max_retransmissions);
/** /**
* stun_timer_start_reliable: * stun_timer_start_reliable:
* @timer: The #StunTimer to start * @timer: The #StunTimer to start
* @initial_timeout: The initial timeout to use before the first retransmis sion
* *
* Starts a STUN transaction retransmission timer for a reliable transport. * Starts a STUN transaction retransmission timer for a reliable transport.
* This should be called as soon as you send the message for the first time on * This should be called as soon as you send the message for the first time on
* a TCP socket * a TCP socket
*/ */
void stun_timer_start_reliable (StunTimer *timer, unsigned int initial_time out); void stun_timer_start_reliable (StunTimer *timer, unsigned int initial_time out);
/** /**
* stun_timer_refresh: * stun_timer_refresh:
* @timer: The #StunTimer to refresh * @timer: The #StunTimer to refresh
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 turn.h   turn.h 
skipping to change at line 98 skipping to change at line 98
} StunUsageTurnRequestPorts; } StunUsageTurnRequestPorts;
/** /**
* StunUsageTurnCompatibility: * StunUsageTurnCompatibility:
* @STUN_USAGE_TURN_COMPATIBILITY_DRAFT9: Use the specification compatible with * @STUN_USAGE_TURN_COMPATIBILITY_DRAFT9: Use the specification compatible with
* TURN Draft 09 * TURN Draft 09
* @STUN_USAGE_TURN_COMPATIBILITY_GOOGLE: Use the specification compatible with * @STUN_USAGE_TURN_COMPATIBILITY_GOOGLE: Use the specification compatible with
* Google Talk's relay server * Google Talk's relay server
* @STUN_USAGE_TURN_COMPATIBILITY_MSN: Use the specification compatible wit h * @STUN_USAGE_TURN_COMPATIBILITY_MSN: Use the specification compatible wit h
* MSN TURN servers * MSN TURN servers
* @STUN_USAGE_TURN_COMPATIBILITY_OC2007: Use the specification compatible
with
* Microsoft Office Communicator 2007
* @STUN_USAGE_TURN_COMPATIBILITY_RFC5766: Use the specification compatible
with
* RFC 5766 (the final, canonical TURN standard)
* *
* Specifies which TURN specification compatibility to use * Specifies which TURN specification compatibility to use
*/ */
typedef enum { typedef enum {
STUN_USAGE_TURN_COMPATIBILITY_DRAFT9, STUN_USAGE_TURN_COMPATIBILITY_DRAFT9,
STUN_USAGE_TURN_COMPATIBILITY_GOOGLE, STUN_USAGE_TURN_COMPATIBILITY_GOOGLE,
STUN_USAGE_TURN_COMPATIBILITY_MSN, STUN_USAGE_TURN_COMPATIBILITY_MSN,
STUN_USAGE_TURN_COMPATIBILITY_OC2007, STUN_USAGE_TURN_COMPATIBILITY_OC2007,
STUN_USAGE_TURN_COMPATIBILITY_RFC5766, STUN_USAGE_TURN_COMPATIBILITY_RFC5766,
} StunUsageTurnCompatibility; } StunUsageTurnCompatibility;
skipping to change at line 206 skipping to change at line 210
* Create a new TURN Refresh request * Create a new TURN Refresh request
* Returns: The length of the message to send * Returns: The length of the message to send
*/ */
size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg, size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg,
uint8_t *buffer, size_t buffer_len, uint8_t *buffer, size_t buffer_len,
StunMessage *previous_response, int32_t lifetime, StunMessage *previous_response, int32_t lifetime,
uint8_t *username, size_t username_len, uint8_t *username, size_t username_len,
uint8_t *password, size_t password_len, uint8_t *password, size_t password_len,
StunUsageTurnCompatibility compatibility); StunUsageTurnCompatibility compatibility);
/**
* stun_usage_turn_create_permission:
* @agent: The #StunAgent to use to build the request
* @msg: The #StunMessage to build
* @buffer: The buffer to use for creating the #StunMessage
* @buffer_len: The size of the @buffer
* @username: The username to use in the request
* @username_len: The length of @username
* @password: The key to use for building the MESSAGE-INTEGRITY
* @password_len: The length of @password
* @realm: The realm identifier to use in the request
* @realm_len: The length of @realm
* @nonce: Unique and securely random nonce to use in the request
* @nonce_len: The length of @nonce
* @peer: Server-reflexive host address to request permission for
* @compatibility: The compatibility mode to use for building the
* CreatePermission request
*
* Create a new TURN CreatePermission request
*
* Returns: The length of the message to send
*/
size_t stun_usage_turn_create_permission (StunAgent *agent, StunMessage *ms g, size_t stun_usage_turn_create_permission (StunAgent *agent, StunMessage *ms g,
uint8_t *buffer, size_t buffer_len, uint8_t *buffer, size_t buffer_len,
uint8_t *username, size_t username_len, uint8_t *username, size_t username_len,
uint8_t *password, size_t password_len, uint8_t *password, size_t password_len,
uint8_t *realm, size_t realm_len, uint8_t *realm, size_t realm_len,
uint8_t *nonce, size_t nonce_len, uint8_t *nonce, size_t nonce_len,
struct sockaddr_storage *peer, struct sockaddr_storage *peer,
StunUsageTurnCompatibility compatibility); StunUsageTurnCompatibility compatibility);
/** /**
 End of changes. 2 change blocks. 
0 lines changed or deleted 28 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/