mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 06:48:25 +00:00
Merge in the RTP engine API.
This API provides a generic way for multiple RTP stacks to be integrated into Asterisk. Right now there is only one present, res_rtp_asterisk, which is the existing Asterisk RTP stack. Functionality wise this commit performs the same as previously. API documentation can be viewed in the rtp_engine.h header file. Review: http://reviewboard.digium.com/r/209/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@186078 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
71
include/asterisk/stun.h
Normal file
71
include/asterisk/stun.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Asterisk -- An open source telephony toolkit.
|
||||
*
|
||||
* Copyright (C) 1999 - 2008, Digium, Inc.
|
||||
*
|
||||
* Mark Spencer <markster@digium.com>
|
||||
*
|
||||
* See http://www.asterisk.org for more information about
|
||||
* the Asterisk project. Please do not directly contact
|
||||
* any of the maintainers of this project for assistance;
|
||||
* the project provides a web site, mailing lists and IRC
|
||||
* channels for your use.
|
||||
*
|
||||
* This program is free software, distributed under the terms of
|
||||
* the GNU General Public License Version 2. See the LICENSE file
|
||||
* at the top of the source tree.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* \file stun.h
|
||||
* \brief STUN support.
|
||||
*
|
||||
* STUN is defined in RFC 3489.
|
||||
*/
|
||||
|
||||
#ifndef _ASTERISK_STUN_H
|
||||
#define _ASTERISK_STUN_H
|
||||
|
||||
#include "asterisk/network.h"
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum ast_stun_result {
|
||||
AST_STUN_IGNORE = 0,
|
||||
AST_STUN_ACCEPT,
|
||||
};
|
||||
|
||||
struct stun_attr;
|
||||
|
||||
/*! \brief Generic STUN request
|
||||
* send a generic stun request to the server specified.
|
||||
* \param s the socket used to send the request
|
||||
* \param dst the address of the STUN server
|
||||
* \param username if non null, add the username in the request
|
||||
* \param answer if non null, the function waits for a response and
|
||||
* puts here the externally visible address.
|
||||
* \return 0 on success, other values on error.
|
||||
* The interface it may change in the future.
|
||||
*/
|
||||
int ast_stun_request(int s, struct sockaddr_in *dst, const char *username, struct sockaddr_in *answer);
|
||||
|
||||
/*! \brief callback type to be invoked on stun responses. */
|
||||
typedef int (stun_cb_f)(struct stun_attr *attr, void *arg);
|
||||
|
||||
/*! \brief handle an incoming STUN message.
|
||||
*
|
||||
* Do some basic sanity checks on packet size and content,
|
||||
* try to extract a bit of information, and possibly reply.
|
||||
* At the moment this only processes BIND requests, and returns
|
||||
* the externally visible address of the request.
|
||||
* If a callback is specified, invoke it with the attribute.
|
||||
*/
|
||||
int ast_stun_handle_packet(int s, struct sockaddr_in *src, unsigned char *data, size_t len, stun_cb_f *stun_cb, void *arg);
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ASTERISK_STUN_H */
|
||||
Reference in New Issue
Block a user